blob: d57adf23647201008f21d8c8baa9800426b3864b [file] [log] [blame]
Daniel Veillardeb7189f2003-02-27 20:11:13 +00001<?xml version="1.0"?>
2<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
3
4<xsl:strip-space elements="xsdtest datatype equiv class"/>
5
6<xsl:output indent="yes" encoding="utf-8"/>
7
8<xsl:template match="xsdtest">
9 <testSuite>
10 <xsl:apply-templates/>
11 </testSuite>
12</xsl:template>
13
14<xsl:template match="datatype">
Daniel Veillard7b72ee52003-02-27 23:24:53 +000015<testSuite>
16<documentation>Datatype <xsl:value-of select="@name"/></documentation>
Daniel Veillardeb7189f2003-02-27 20:11:13 +000017<testCase>
18<requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
19<correct>
20<element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
21 datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
22 <data type="{@name}">
23 <xsl:for-each select="param">
24 <param name="{@name}"><xsl:value-of select="."/></param>
25 </xsl:for-each>
26 </data>
27</element>
28</correct>
29<xsl:apply-templates select="valid|invalid"/>
30</testCase>
31<xsl:apply-templates select="equiv/class|length|lessThan|incomparable"/>
Daniel Veillard7b72ee52003-02-27 23:24:53 +000032</testSuite>
Daniel Veillardeb7189f2003-02-27 20:11:13 +000033</xsl:template>
34
35<xsl:template match="valid">
36 <xsl:call-template name="valid"/>
37</xsl:template>
38
39<xsl:template match="invalid">
40 <xsl:call-template name="invalid"/>
41</xsl:template>
42
43<xsl:template name="valid">
44 <valid>
45 <xsl:apply-templates select="@internalSubset"/>
46 <doc>
47 <xsl:copy-of select="namespace::*"/>
48 <xsl:value-of select="."/>
49 </doc>
50 </valid>
51</xsl:template>
52
53<xsl:template name="invalid">
54 <invalid>
55 <xsl:apply-templates select="@internalSubset"/>
56 <doc>
57 <xsl:copy-of select="namespace::*"/>
58 <xsl:value-of select="."/>
59 </doc>
60 </invalid>
61</xsl:template>
62
63<xsl:template match="@internalSubset">
64 <xsl:param name="doc" select="'doc'"/>
65 <xsl:attribute name="dtd">
66 <xsl:text>
67&lt;!DOCTYPE </xsl:text>
68 <xsl:value-of select="$doc"/>
69 <xsl:text> [
70</xsl:text>
71 <xsl:value-of select="."/>
72 <xsl:text>
73]></xsl:text>
74 </xsl:attribute>
75</xsl:template>
76
77<xsl:template match="class">
78<testCase>
79<correct>
80 <xsl:for-each select="value[1]">
81 <xsl:apply-templates select="@internalSubset">
82 <xsl:with-param name="doc">element</xsl:with-param>
83 </xsl:apply-templates>
84 <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
85 datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
86 <value>
87 <xsl:copy-of select="namespace::*"/>
88 <xsl:attribute name="type"><xsl:value-of select="../../../@name"/></xsl:attribute>
89 <xsl:value-of select="."/>
90 </value>
91 </element>
92 </xsl:for-each>
93</correct>
94<xsl:for-each select="value[position() != 1]">
95 <xsl:call-template name="valid"/>
96</xsl:for-each>
97<xsl:for-each select="preceding-sibling::class/value|following-sibling::class/value">
98 <xsl:call-template name="invalid"/>
99</xsl:for-each>
100</testCase>
101</xsl:template>
102
103<xsl:template match="length">
104<testCase>
105<correct>
106<element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
107 datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
108 <data type="{../@name}">
109 <param name="length"><xsl:value-of select="@value"/></param>
110 </data>
111</element>
112</correct>
113<xsl:call-template name="valid"/>
114</testCase>
115
116<testCase>
117<correct>
118<element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
119 datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
120 <data type="{../@name}">
121 <param name="length"><xsl:value-of select="@value + 1"/></param>
122 </data>
123</element>
124</correct>
125<xsl:call-template name="invalid"/>
126</testCase>
127
128<xsl:if test="@value != 0">
129 <testCase>
130 <correct>
131 <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
132 datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
133 <data type="{../@name}">
134 <param name="length"><xsl:value-of select="@value - 1"/></param>
135 </data>
136 </element>
137 </correct>
138 <xsl:call-template name="invalid"/>
139 </testCase>
140</xsl:if>
141
142</xsl:template>
143
144<xsl:template match="lessThan">
145<testCase>
146<correct>
147 <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
148 datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
149 <data type="{../@name}">
150 <param name="minExclusive">
151 <xsl:value-of select="value[1]"/>
152 </param>
153 </data>
154 </element>
155</correct>
156<valid>
157<doc>
158<xsl:value-of select="value[2]"/>
159</doc>
160</valid>
161<invalid>
162<doc>
163<xsl:value-of select="value[1]"/>
164</doc>
165</invalid>
166</testCase>
167<testCase>
168<correct>
169 <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
170 datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
171 <data type="{../@name}">
172 <param name="minExclusive">
173 <xsl:value-of select="value[2]"/>
174 </param>
175 </data>
176 </element>
177</correct>
178<invalid>
179<doc>
180<xsl:value-of select="value[1]"/>
181</doc>
182</invalid>
183<invalid>
184<doc>
185<xsl:value-of select="value[2]"/>
186</doc>
187</invalid>
188</testCase>
189</xsl:template>
190
191<xsl:template match="incomparable">
192<testCase>
193<correct>
194 <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
195 datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
196 <data type="{../@name}">
197 <param name="minExclusive">
198 <xsl:value-of select="value[1]"/>
199 </param>
200 </data>
201 </element>
202</correct>
203<invalid>
204<doc>
205<xsl:value-of select="value[2]"/>
206</doc>
207</invalid>
208<invalid>
209<doc>
210<xsl:value-of select="value[1]"/>
211</doc>
212</invalid>
213</testCase>
214<testCase>
215<correct>
216 <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
217 datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
218 <data type="{../@name}">
219 <param name="minExclusive">
220 <xsl:value-of select="value[2]"/>
221 </param>
222 </data>
223 </element>
224</correct>
225<invalid>
226<doc>
227<xsl:value-of select="value[1]"/>
228</doc>
229</invalid>
230<invalid>
231<doc>
232<xsl:value-of select="value[2]"/>
233</doc>
234</invalid>
235</testCase>
236</xsl:template>
237
238</xsl:stylesheet>