Subversion Repositories svnkaklik

Rev

Details | Last modification | View Log

Rev Author Line No. Line
36 kaklik 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>