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.1</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:variable name="table_name" select="@name"/>
24
 
25
		<xsl:element name="table">
26
			<xsl:attribute name="name"><xsl:value-of select="$table_name"/></xsl:attribute>
27
 
28
			<xsl:if test="string-length(@platform) > 0">
29
				<xsl:attribute name="platform"><xsl:value-of select="@platform"/></xsl:attribute>
30
			</xsl:if>
31
 
32
			<xsl:if test="string-length(@version) > 0">
33
				<xsl:attribute name="version"><xsl:value-of select="@version"/></xsl:attribute>
34
			</xsl:if>
35
 
36
			<xsl:apply-templates select="descr[1]"/>
37
 
38
			<xsl:choose>
39
				<xsl:when test="count(DROP) > 0">
40
					<xsl:element name="DROP"/>
41
				</xsl:when>
42
				<xsl:otherwise>
43
					<xsl:apply-templates select="field"/>
44
				</xsl:otherwise>
45
			</xsl:choose>
46
 
47
			<xsl:apply-templates select="constraint"/>
48
 
49
		</xsl:element>
50
 
51
		<xsl:apply-templates select="index"/>
52
	</xsl:template>
53
 
54
	<!-- Field -->
55
	<xsl:template match="field">
56
		<xsl:element name="field">
57
			<xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
58
			<xsl:attribute name="type"><xsl:value-of select="@type"/></xsl:attribute>
59
 
60
			<xsl:if test="string-length(@size) > 0">
61
				<xsl:attribute name="size"><xsl:value-of select="@size"/></xsl:attribute>
62
			</xsl:if>
63
 
64
			<xsl:choose>
65
				<xsl:when test="count(PRIMARY) > 0">
66
					<xsl:element name="PRIMARY"/>
67
				</xsl:when>
68
				<xsl:when test="count(KEY) > 0">
69
					<xsl:element name="KEY"/>
70
				</xsl:when>
71
				<xsl:when test="count(NOTNULL) > 0">
72
					<xsl:element name="NOTNULL"/>
73
				</xsl:when>
74
			</xsl:choose>
75
 
76
			<xsl:choose>
77
				<xsl:when test="count(AUTO) > 0">
78
					<xsl:element name="AUTO"/>
79
				</xsl:when>
80
				<xsl:when test="count(AUTOINCREMENT) > 0">
81
					<xsl:element name="AUTOINCREMENT"/>
82
				</xsl:when>
83
			</xsl:choose>
84
 
85
			<xsl:choose>
86
				<xsl:when test="count(DEFAULT) > 0">
87
					<xsl:element name="DEFAULT">
88
						<xsl:attribute name="value">
89
							<xsl:value-of select="DEFAULT[1]/@value"/>
90
						</xsl:attribute>
91
					</xsl:element>
92
				</xsl:when>
93
				<xsl:when test="count(DEFDATE) > 0">
94
					<xsl:element name="DEFDATE">
95
						<xsl:attribute name="value">
96
							<xsl:value-of select="DEFDATE[1]/@value"/>
97
						</xsl:attribute>
98
					</xsl:element>
99
				</xsl:when>
100
				<xsl:when test="count(DEFTIMESTAMP) > 0">
101
					<xsl:element name="DEFDTIMESTAMP">
102
						<xsl:attribute name="value">
103
							<xsl:value-of select="DEFTIMESTAMP[1]/@value"/>
104
						</xsl:attribute>
105
					</xsl:element>
106
				</xsl:when>
107
			</xsl:choose>
108
 
109
			<xsl:if test="count(NOQUOTE) > 0">
110
				<xsl:element name="NOQUOTE"/>
111
			</xsl:if>
112
 
113
			<xsl:apply-templates select="constraint"/>
114
		</xsl:element>
115
	</xsl:template>
116
 
117
	<!-- Constraint -->
118
	<xsl:template match="constraint">
119
		<xsl:element name="constraint">
120
			<xsl:value-of select="normalize-space(text())"/>
121
		</xsl:element>
122
	</xsl:template>
123
 
124
	<!-- Index -->
125
	<xsl:template match="index">
126
		<xsl:element name="index">
127
			<xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
128
			<xsl:attribute name="table"><xsl:value-of select="../@name"/></xsl:attribute>
129
 
130
			<xsl:apply-templates select="descr[1]"/>
131
 
132
			<xsl:if test="count(CLUSTERED) > 0">
133
				<xsl:element name="CLUSTERED"/>
134
			</xsl:if>
135
 
136
			<xsl:if test="count(BITMAP) > 0">
137
				<xsl:element name="BITMAP"/>
138
			</xsl:if>
139
 
140
			<xsl:if test="count(UNIQUE) > 0">
141
				<xsl:element name="UNIQUE"/>
142
			</xsl:if>
143
 
144
			<xsl:if test="count(FULLTEXT) > 0">
145
				<xsl:element name="FULLTEXT"/>
146
			</xsl:if>
147
 
148
			<xsl:if test="count(HASH) > 0">
149
				<xsl:element name="HASH"/>
150
			</xsl:if>
151
 
152
			<xsl:choose>
153
				<xsl:when test="count(DROP) > 0">
154
					<xsl:element name="DROP"/>
155
				</xsl:when>
156
				<xsl:otherwise>
157
					<xsl:apply-templates select="col"/>
158
				</xsl:otherwise>
159
			</xsl:choose>
160
		</xsl:element>
161
	</xsl:template>
162
 
163
	<!-- Index Column -->
164
	<xsl:template match="col">
165
		<xsl:element name="col">
166
			<xsl:value-of select="normalize-space(text())"/>
167
		</xsl:element>
168
	</xsl:template>
169
 
170
	<!-- SQL QuerySet -->
171
	<xsl:template match="sql">
172
		<xsl:element name="sql">
173
			<xsl:if test="string-length(@platform) > 0">
174
				<xsl:attribute name="platform"><xsl:value-of select="@platform"/></xsl:attribute>
175
			</xsl:if>
176
 
177
			<xsl:if test="string-length(@key) > 0">
178
				<xsl:attribute name="key"><xsl:value-of select="@key"/></xsl:attribute>
179
			</xsl:if>
180
 
181
			<xsl:if test="string-length(@prefixmethod) > 0">
182
				<xsl:attribute name="prefixmethod"><xsl:value-of select="@prefixmethod"/></xsl:attribute>
183
			</xsl:if>
184
 
185
			<xsl:apply-templates select="descr[1]"/>
186
			<xsl:apply-templates select="query"/>
187
		</xsl:element>
188
	</xsl:template>
189
 
190
	<!-- Query -->
191
	<xsl:template match="query">
192
		<xsl:element name="query">
193
			<xsl:if test="string-length(@platform) > 0">
194
				<xsl:attribute name="platform"><xsl:value-of select="@platform"/></xsl:attribute>
195
			</xsl:if>
196
 
197
			<xsl:value-of select="normalize-space(text())"/>
198
		</xsl:element>
199
	</xsl:template>
200
 
201
	<!-- Description -->
202
	<xsl:template match="descr">
203
		<xsl:element name="descr">
204
			<xsl:value-of select="normalize-space(text())"/>
205
		</xsl:element>
206
	</xsl:template>
207
</xsl:stylesheet>