]> CyberLeo.Net >> Repos - SourceForge/phpwiki.git/blob - lib/WikiDB/adodb/xsl/convert-0.2-0.3.xsl
Upgrade adodb
[SourceForge/phpwiki.git] / lib / WikiDB / adodb / xsl / convert-0.2-0.3.xsl
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xsl:stylesheet version="1.0"
3         xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4 >
5         <xsl:output method="xml" indent="yes" omit-xml-declaration="no" encoding="UTF-8"/>
6         
7         <!-- Schema -->
8         <xsl:template match="/">
9                 <xsl:comment>
10 ADODB XMLSchema
11 http://adodb-xmlschema.sourceforge.net
12 </xsl:comment>
13                 
14                 <xsl:element name="schema">
15                         <xsl:attribute name="version">0.3</xsl:attribute>
16                         
17                         <xsl:apply-templates select="schema/table|schema/sql"/>
18                 </xsl:element>
19         </xsl:template>
20         
21         <!-- Table -->
22         <xsl:template match="table">
23                 <xsl:element name="table">
24                         <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
25                         
26                         <xsl:if test="string-length(@platform) > 0">
27                                 <xsl:attribute name="platform"><xsl:value-of select="@platform"/></xsl:attribute>
28                         </xsl:if>
29                         
30                         <xsl:if test="string-length(@version) > 0">
31                                 <xsl:attribute name="version"><xsl:value-of select="@version"/></xsl:attribute>
32                         </xsl:if>
33                         
34                         <xsl:apply-templates select="descr[1]"/>
35                         
36                         <xsl:choose>
37                                 <xsl:when test="count(DROP) > 0">
38                                         <xsl:element name="DROP"/>
39                                 </xsl:when>
40                                 <xsl:otherwise>
41                                         <xsl:apply-templates select="field"/>
42                                 </xsl:otherwise>
43                         </xsl:choose>
44                         
45                         <xsl:apply-templates select="constraint"/>
46                         
47                         <xsl:apply-templates select="opt"/>
48                         
49                         <xsl:apply-templates select="index"/>
50                         
51                         <xsl:apply-templates select="data"/>
52                 </xsl:element>
53         </xsl:template>
54         
55         <!-- Field -->
56         <xsl:template match="field">
57                 <xsl:element name="field">
58                         <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
59                         <xsl:attribute name="type"><xsl:value-of select="@type"/></xsl:attribute>
60                         
61                         <xsl:if test="string-length(@size) > 0">
62                                 <xsl:attribute name="size"><xsl:value-of select="@size"/></xsl:attribute>
63                         </xsl:if>
64                         
65                         <xsl:choose>
66                                 <xsl:when test="string-length(@opts) = 0">
67                                         <xsl:if test="count(UNSIGNED) > 0">
68                                                 <xsl:element name="UNSIGNED"/>
69                                         </xsl:if>
70                                 </xsl:when>
71                                 <xsl:when test="@opts = 'UNSIGNED'">
72                                         <xsl:element name="UNSIGNED"/>
73                                 </xsl:when>
74                                 <xsl:when test="contains(@opts,'UNSIGNED')">
75                                         <xsl:attribute name="opts">
76                                                 <xsl:value-of select="concat(substring-before(@opts,'UNSIGNED'),substring-after(@opts,'UNSIGNED'))"/>
77                                         </xsl:attribute>
78                                         <xsl:element name="UNSIGNED"/>
79                                 </xsl:when>
80                                 <xsl:otherwise>
81                                         <xsl:attribute name="opts"><xsl:value-of select="@opts"/></xsl:attribute>
82                                         <xsl:if test="count(UNSIGNED) > 0">
83                                                 <xsl:element name="UNSIGNED"/>
84                                         </xsl:if>
85                                 </xsl:otherwise>
86                         </xsl:choose>
87                         
88                         <xsl:apply-templates select="descr[1]"/>
89                         
90                         <xsl:choose>
91                                 <xsl:when test="count(PRIMARY) > 0">
92                                         <xsl:element name="PRIMARY"/>
93                                 </xsl:when>
94                                 <xsl:when test="count(KEY) > 0">
95                                         <xsl:element name="KEY"/>
96                                 </xsl:when>
97                                 <xsl:when test="count(NOTNULL) > 0">
98                                         <xsl:element name="NOTNULL"/>
99                                 </xsl:when>
100                         </xsl:choose>
101                         
102                         <xsl:choose>
103                                 <xsl:when test="count(AUTO) > 0">
104                                         <xsl:element name="AUTO"/>
105                                 </xsl:when>
106                                 <xsl:when test="count(AUTOINCREMENT) > 0">
107                                         <xsl:element name="AUTOINCREMENT"/>
108                                 </xsl:when>
109                         </xsl:choose>
110                         
111                         <xsl:choose>
112                                 <xsl:when test="count(DEFAULT) > 0">
113                                         <xsl:element name="DEFAULT">
114                                                 <xsl:attribute name="value">
115                                                         <xsl:value-of select="DEFAULT[1]/@value"/>
116                                                 </xsl:attribute>
117                                         </xsl:element>
118                                 </xsl:when>
119                                 <xsl:when test="count(DEFDATE) > 0">
120                                         <xsl:element name="DEFDATE">
121                                                 <xsl:attribute name="value">
122                                                         <xsl:value-of select="DEFDATE[1]/@value"/>
123                                                 </xsl:attribute>
124                                         </xsl:element>
125                                 </xsl:when>
126                                 <xsl:when test="count(DEFTIMESTAMP) > 0">
127                                         <xsl:element name="DEFTIMESTAMP">
128                                                 <xsl:attribute name="value">
129                                                         <xsl:value-of select="DEFTIMESTAMP[1]/@value"/>
130                                                 </xsl:attribute>
131                                         </xsl:element>
132                                 </xsl:when>
133                         </xsl:choose>
134                         
135                         <xsl:if test="count(NOQUOTE) > 0">
136                                 <xsl:element name="NOQUOTE"/>
137                         </xsl:if>
138                         
139                         <xsl:apply-templates select="constraint"/>
140                         
141                         <xsl:apply-templates select="opt"/>
142                 </xsl:element>
143         </xsl:template>
144         
145         <!-- Constraint -->
146         <xsl:template match="constraint">
147                 <xsl:element name="constraint">
148                         <xsl:if test="string-length(@platform) > 0">
149                                 <xsl:attribute name="platform"><xsl:value-of select="@platform"/></xsl:attribute>
150                         </xsl:if>
151                         
152                         <xsl:value-of select="normalize-space(text())"/>
153                 </xsl:element>
154         </xsl:template>
155         
156         <!-- Opt -->
157         <xsl:template match="opt">
158                 <xsl:element name="opt">
159                         <xsl:if test="string-length(@platform) > 0">
160                                 <xsl:attribute name="platform"><xsl:value-of select="@platform"/></xsl:attribute>
161                         </xsl:if>
162                         
163                         <xsl:value-of select="normalize-space(text())"/>
164                 </xsl:element>
165         </xsl:template>
166         
167         <!-- Index -->
168         <xsl:template match="index">
169                 <xsl:element name="index">
170                         <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
171                         
172                         <xsl:apply-templates select="descr[1]"/>
173                         
174                         <xsl:if test="count(CLUSTERED) > 0">
175                                 <xsl:element name="CLUSTERED"/>
176                         </xsl:if>
177                         
178                         <xsl:if test="count(BITMAP) > 0">
179                                 <xsl:element name="BITMAP"/>
180                         </xsl:if>
181                         
182                         <xsl:if test="count(UNIQUE) > 0">
183                                 <xsl:element name="UNIQUE"/>
184                         </xsl:if>
185                         
186                         <xsl:if test="count(FULLTEXT) > 0">
187                                 <xsl:element name="FULLTEXT"/>
188                         </xsl:if>
189                         
190                         <xsl:if test="count(HASH) > 0">
191                                 <xsl:element name="HASH"/>
192                         </xsl:if>
193                         
194                         <xsl:choose>
195                                 <xsl:when test="count(DROP) > 0">
196                                         <xsl:element name="DROP"/>
197                                 </xsl:when>
198                                 <xsl:otherwise>
199                                         <xsl:apply-templates select="col"/>
200                                 </xsl:otherwise>
201                         </xsl:choose>
202                 </xsl:element>
203         </xsl:template>
204         
205         <!-- Index Column -->
206         <xsl:template match="col">
207                 <xsl:element name="col">
208                         <xsl:value-of select="normalize-space(text())"/>
209                 </xsl:element>
210         </xsl:template>
211         
212         <!-- SQL QuerySet -->
213         <xsl:template match="sql">
214                 <xsl:element name="sql">
215                         <xsl:if test="string-length(@platform) > 0">
216                                 <xsl:attribute name="platform"><xsl:value-of select="@platform"/></xsl:attribute>
217                         </xsl:if>
218                         
219                         <xsl:if test="string-length(@key) > 0">
220                                 <xsl:attribute name="key"><xsl:value-of select="@key"/></xsl:attribute>
221                         </xsl:if>
222                         
223                         <xsl:if test="string-length(@prefixmethod) > 0">
224                                 <xsl:attribute name="prefixmethod"><xsl:value-of select="@prefixmethod"/></xsl:attribute>
225                         </xsl:if>
226                         
227                         <xsl:apply-templates select="descr[1]"/>
228                         
229                         <xsl:apply-templates select="query"/>
230                 </xsl:element>
231         </xsl:template>
232         
233         <!-- Query -->
234         <xsl:template match="query">
235                 <xsl:element name="query">
236                         <xsl:if test="string-length(@platform) > 0">
237                                 <xsl:attribute name="platform"><xsl:value-of select="@platform"/></xsl:attribute>
238                         </xsl:if>
239                         
240                         <xsl:value-of select="normalize-space(text())"/>
241                 </xsl:element>
242         </xsl:template>
243         
244         <!-- Description -->
245         <xsl:template match="descr">
246                 <xsl:element name="descr">
247                         <xsl:value-of select="normalize-space(text())"/>
248                 </xsl:element>
249         </xsl:template>
250         
251         <!-- Data -->
252         <xsl:template match="data">
253                 <xsl:element name="data">
254                         <xsl:if test="string-length(@platform) > 0">
255                                 <xsl:attribute name="platform"><xsl:value-of select="@platform"/></xsl:attribute>
256                         </xsl:if>
257                         
258                         <xsl:apply-templates select="descr[1]"/>
259                         
260                         <xsl:apply-templates select="row"/>
261                 </xsl:element>
262         </xsl:template>
263         
264         <!-- Data Row -->
265         <xsl:template match="row">
266                 <xsl:element name="row">
267                         <xsl:apply-templates select="f"/>
268                 </xsl:element>
269         </xsl:template>
270         
271         <!-- Data Field -->
272         <xsl:template match="f">
273                 <xsl:element name="f">
274                         <xsl:if test="string-length(@name) > 0">
275                                 <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
276                         </xsl:if>
277                         
278                         <xsl:value-of select="normalize-space(text())"/>
279                 </xsl:element>
280         </xsl:template>
281 </xsl:stylesheet>