MDL-11082 Improved groups upgrade performance 1.8x -> 1.9; thanks Eloy for telling...
[moodle-pu.git] / lib / adodb / xsl / convert-0.2-0.3.xsl
blob26bd9e9aa8b954d1e3ab5595f602b763ee1be846
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xsl:stylesheet version="1.0"
3 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
5 <xsl:output method="xml" indent="yes" omit-xml-declaration="no" encoding="UTF-8"/>
7 <!-- Schema -->
8 <xsl:template match="/">
9 <xsl:comment>
10 ADODB XMLSchema
11 http://adodb-xmlschema.sourceforge.net
12 </xsl:comment>
14 <xsl:element name="schema">
15 <xsl:attribute name="version">0.3</xsl:attribute>
17 <xsl:apply-templates select="schema/table|schema/sql"/>
18 </xsl:element>
19 </xsl:template>
21 <!-- Table -->
22 <xsl:template match="table">
23 <xsl:element name="table">
24 <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
26 <xsl:if test="string-length(@platform) > 0">
27 <xsl:attribute name="platform"><xsl:value-of select="@platform"/></xsl:attribute>
28 </xsl:if>
30 <xsl:if test="string-length(@version) > 0">
31 <xsl:attribute name="version"><xsl:value-of select="@version"/></xsl:attribute>
32 </xsl:if>
34 <xsl:apply-templates select="descr[1]"/>
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>
45 <xsl:apply-templates select="constraint"/>
47 <xsl:apply-templates select="opt"/>
49 <xsl:apply-templates select="index"/>
51 <xsl:apply-templates select="data"/>
52 </xsl:element>
53 </xsl:template>
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>
61 <xsl:if test="string-length(@size) > 0">
62 <xsl:attribute name="size"><xsl:value-of select="@size"/></xsl:attribute>
63 </xsl:if>
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>
88 <xsl:apply-templates select="descr[1]"/>
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>
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>
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>
135 <xsl:if test="count(NOQUOTE) > 0">
136 <xsl:element name="NOQUOTE"/>
137 </xsl:if>
139 <xsl:apply-templates select="constraint"/>
141 <xsl:apply-templates select="opt"/>
142 </xsl:element>
143 </xsl:template>
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>
152 <xsl:value-of select="normalize-space(text())"/>
153 </xsl:element>
154 </xsl:template>
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>
163 <xsl:value-of select="normalize-space(text())"/>
164 </xsl:element>
165 </xsl:template>
167 <!-- Index -->
168 <xsl:template match="index">
169 <xsl:element name="index">
170 <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
172 <xsl:apply-templates select="descr[1]"/>
174 <xsl:if test="count(CLUSTERED) > 0">
175 <xsl:element name="CLUSTERED"/>
176 </xsl:if>
178 <xsl:if test="count(BITMAP) > 0">
179 <xsl:element name="BITMAP"/>
180 </xsl:if>
182 <xsl:if test="count(UNIQUE) > 0">
183 <xsl:element name="UNIQUE"/>
184 </xsl:if>
186 <xsl:if test="count(FULLTEXT) > 0">
187 <xsl:element name="FULLTEXT"/>
188 </xsl:if>
190 <xsl:if test="count(HASH) > 0">
191 <xsl:element name="HASH"/>
192 </xsl:if>
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>
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>
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>
219 <xsl:if test="string-length(@key) > 0">
220 <xsl:attribute name="key"><xsl:value-of select="@key"/></xsl:attribute>
221 </xsl:if>
223 <xsl:if test="string-length(@prefixmethod) > 0">
224 <xsl:attribute name="prefixmethod"><xsl:value-of select="@prefixmethod"/></xsl:attribute>
225 </xsl:if>
227 <xsl:apply-templates select="descr[1]"/>
229 <xsl:apply-templates select="query"/>
230 </xsl:element>
231 </xsl:template>
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>
240 <xsl:value-of select="normalize-space(text())"/>
241 </xsl:element>
242 </xsl:template>
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>
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>
258 <xsl:apply-templates select="descr[1]"/>
260 <xsl:apply-templates select="row"/>
261 </xsl:element>
262 </xsl:template>
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>
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>
278 <xsl:value-of select="normalize-space(text())"/>
279 </xsl:element>
280 </xsl:template>
281 </xsl:stylesheet>