1<xsdtest>
2<datatype name="dateTime">
3<valid>2001-12-01T19:45:00</valid>
4<valid>2001-12-01T19:45:00Z</valid>
5<valid>2001-12-01T19:45:00-11:59</valid>
6<valid>0001-01-12T00:00:00+12:00</valid>
7<invalid>2001-12-1T19:45:00+24:00</invalid>
8<invalid>2001-12-1T19:45:00</invalid>
9<equiv>
10<class>
11  <value>2001-12-01T19:45:00</value>
12  <value>2001-12-01T19:45:00.00</value>
13</class>
14<class>
15  <value>2001-12-01T19:45:00Z</value>
16  <value>2001-12-01T19:45:00.00Z</value>
17  <value>2001-12-01T20:45:00+01:00</value>
18</class>
19</equiv>
20</datatype>
21<datatype name="anyURI">
22<valid>foobar</valid>
23<valid>http://www.example.com</valid>
24<valid>http://ji%6d@www.example.com</valid>
25<valid>http://www.example.co%6d</valid>
26<valid>nosuchscheme:stuff</valid>
27<invalid>foo$bar:stuff</invalid>
28<invalid>f%oobar</invalid>
29</datatype>
30<datatype name="integer">
31<valid>10</valid>
32<valid>01</valid>
33<valid>0123456789</valid>
34<valid>+10</valid>
35<valid>-10</valid>
36<invalid>1.0</invalid>
37<invalid>.1</invalid>
38<valid>9999999999999999999999999999999</valid>
39<invalid>1.</invalid>
40<invalid>0.</invalid>
41<equiv>
42<class>
43  <value>0</value>
44  <value>+0</value>
45  <value>-0</value>
46  <value>00</value>
47</class>
48<class>
49  <value>10</value>
50  <value>+10</value>
51  <value>+0010</value>
52  <value>010</value>
53</class>
54<class>
55  <value>-10</value>
56  <value>-0010</value>
57  <value>-010</value>
58</class>
59</equiv>
60</datatype>
61<datatype name="duration">
62<valid>P1Y</valid>
63<valid>P1Y0M2DT17H5M12S</valid>
64<valid>-P1Y</valid>
65<valid>P60D</valid>
66<valid>PT24H</valid>
67<valid>PT1.2S</valid>
68<invalid>P24h</invalid>
69<invalid>P24H</invalid>
70<invalid>P1YT</invalid>
71<invalid>P</invalid>
72<invalid>-P</invalid>
73<equiv>
74  <class>
75    <value>-P6M</value>
76  </class>
77  <class>
78    <value>P0Y</value>
79    <value>-P0Y</value>
80  </class>
81  <class>
82    <value>P1Y</value>
83    <value>P001Y</value>
84    <value>P001Y0M</value>
85    <value>P1Y0M0DT0H0M0.0S</value>
86  </class>
87  <class>
88    <value>P6M</value>
89  </class>
90  <class>
91    <value>PT6M</value>
92  </class>
93  <class>
94    <value>PT1S</value>
95    <value>PT1.0S</value>
96  </class>
97</equiv>
98<lessThan>
99  <value>PT1M</value>
100  <value>PT61S</value>
101</lessThan>
102<lessThan>
103  <value>PT59S</value>
104  <value>PT1M</value>
105</lessThan>
106<incomparable>
107  <value>PT60S</value>
108  <value>PT1M</value>
109</incomparable>
110<lessThan>
111  <value>PT1H</value>
112  <value>PT61M</value>
113</lessThan>
114<lessThan>
115  <value>PT59M</value>
116  <value>PT1H</value>
117</lessThan>
118<incomparable>
119  <value>PT60M</value>
120  <value>PT1H</value>
121</incomparable>
122<lessThan>
123  <value>P1D</value>
124  <value>PT25H</value>
125</lessThan>
126<lessThan>
127  <value>PT23H</value>
128  <value>P1D</value>
129</lessThan>
130<incomparable>
131  <value>P1D</value>
132  <value>PT24H</value>
133</incomparable>
134<lessThan>
135  <value>P1Y</value>
136  <value>P13M</value>
137</lessThan>
138<lessThan>
139  <value>P11M</value>
140  <value>P1Y</value>
141</lessThan>
142<incomparable>
143  <value>P12M</value>
144  <value>P1Y</value>
145</incomparable>
146<lessThan>
147  <value>P364D</value>
148  <value>P1Y</value>
149</lessThan>
150<incomparable>
151  <value>P1Y</value>
152  <value>P365D</value>
153</incomparable>
154<incomparable>
155  <value>P1Y</value>
156  <value>P366D</value>
157</incomparable>
158<lessThan>
159  <value>P1Y</value>
160  <value>P367D</value>
161</lessThan>
162<lessThan>
163  <value>P149D</value>
164  <value>P5M</value>
165</lessThan>
166<incomparable>
167  <value>P150D</value>
168  <value>P5M</value>
169</incomparable>
170<incomparable>
171  <value>P151D</value>
172  <value>P5M</value>
173</incomparable>
174<incomparable>
175  <value>P152D</value>
176  <value>P5M</value>
177</incomparable>
178<incomparable>
179  <value>P153D</value>
180  <value>P5M</value>
181</incomparable>
182<lessThan>
183  <value>P5M</value>
184  <value>P154D</value>
185</lessThan>
186<lessThan>
187  <value>P27D</value>
188  <value>P1M</value>
189</lessThan>
190<incomparable>
191  <value>P28D</value>
192  <value>P1M</value>
193</incomparable>
194<incomparable>
195  <value>P29D</value>
196  <value>P1M</value>
197</incomparable>
198<incomparable>
199  <value>P30D</value>
200  <value>P1M</value>
201</incomparable>
202<incomparable>
203  <value>P31D</value>
204  <value>P1M</value>
205</incomparable>
206<lessThan>
207  <value>P1M</value>
208  <value>P32D</value>
209</lessThan>
210</datatype>
211<datatype name="time">
212<valid>12:45:00</valid>
213<valid>12:45:00Z</valid>
214</datatype>
215<datatype name="date">
216<valid>1886-12-01</valid>
217<valid>1886-12-01Z</valid>
218<lessThan>
219  <value>1066-12-31</value>
220  <value>1900-01-01</value>
221</lessThan>
222<lessThan>
223  <value>1900-01-01</value>
224  <value>1900-01-02</value>
225</lessThan>
226</datatype>
227<datatype name="gYearMonth">
228<valid>1996-12</valid>
229<valid>1996-01</valid>
230<valid>1996-01Z</valid>
231<invalid>1996-00</invalid>
232<equiv>
233<class><value>1996-01</value></class>
234<class>
235  <value>1996-01Z</value>
236  <value>1996-01+00:00</value>
237  <value>1996-01-00:00</value>
238</class>
239<class><value>1996-01+01:00</value></class>
240<class><value>1996-01-01:00</value></class>
241</equiv>
242</datatype>
243<datatype name="gYear">
244<valid>2001</valid>
245<valid>2001Z</valid>
246<lessThan>
247  <value>1999</value>
248  <value>2000</value>
249</lessThan>
250<lessThan>
251  <value>1999+07:00</value>
252  <value>2000+07:00</value>
253</lessThan>
254</datatype>
255<datatype name="gMonthDay">
256<valid>--12-01</valid>
257<valid>--12-01Z</valid>
258<lessThan>
259  <value>--12-01</value>
260  <value>--12-04</value>
261</lessThan>
262<lessThan>
263  <value>--11-17</value>
264  <value>--12-04</value>
265</lessThan>
266</datatype>
267<datatype name="gDay">
268<valid>---20</valid>
269<valid>---20Z</valid>
270<lessThan>
271  <value>---01</value>
272  <value>---31</value>
273</lessThan>
274</datatype>
275<datatype name="gMonth">
276<valid>--12</valid>
277<valid>--01</valid>
278<valid>--01Z</valid>
279<valid> --12 </valid>
280<invalid>---01</invalid>
281<invalid>--00</invalid>
282<invalid>--13</invalid>
283<invalid>- -13</invalid>
284<lessThan>
285  <value>--01</value>
286  <value>--12</value>
287</lessThan>
288<lessThan>
289  <value>--01</value>
290  <value>--02</value>
291</lessThan>
292</datatype>
293<datatype name="boolean">
294<valid>true</valid>
295<valid>false</valid>
296<valid>0</valid>
297<valid>1</valid>
298<invalid>00</invalid>
299<invalid>00</invalid>
300<invalid>01</invalid>
301<equiv>
302<class><value>true</value><value>1</value></class>
303<class><value>false</value><value>0</value></class>
304</equiv>
305</datatype>
306<datatype name="base64Binary">
307<valid>AAAA</valid>
308<valid>abcd efgh ijkl mnop qrst uvwx yzAB CDEF GHIJ KLMN OPQR
309STUV WXYZ 0123 4567 89+/</valid>
310<valid>BA==</valid>
311<valid></valid>
312<valid>BA==</valid>
313<valid>BQ==</valid>
314<valid>Bg==</valid>
315<valid>Bw==</valid>
316<valid>BBA=</valid>
317<valid>BBA=</valid>
318<valid>BBE=</valid>
319<valid>BBI=</valid>
320<valid>BBM=</valid>
321<valid>BBQ=</valid>
322<valid>BBU=</valid>
323<valid>BBY=</valid>
324<valid>BBc=</valid>
325<valid>BBg=</valid>
326<valid>BBk=</valid>
327<valid>BBo=</valid>
328<valid>BBs=</valid>
329<valid>BBw=</valid>
330<valid>BB0=</valid>
331<valid>BB4=</valid>
332<valid>BB8=</valid>
333<invalid>====</invalid>
334<invalid>BB==</invalid>
335<invalid>BBB=</invalid>
336<invalid>B===</invalid>
337<invalid>B</invalid>
338<equiv>
339<class>
340<value>deadbeef</value>
341<value>d&#xA;&#xD;&#x9;e a d
342b eef </value>
343</class>
344<class>
345<value>DEADBEEF</value>
346<value>D&#xA;&#xD;&#x9;E A D
347B EEF </value>
348</class>
349</equiv>
350<length value="0"></length>
351<length value="6">deadbeef</length>
352<length value="1">BA==</length>
353<length value="2">BBA=</length>
354<length value="3">dead</length>
355<length value="4">deadBA==</length>
356</datatype>
357<datatype name="hexBinary">
358<valid>deadbeef</valid>
359<valid></valid>
360<valid>0123456789ABCDEFabcdef</valid>
361<invalid>00 00</invalid>
362<invalid>00.00</invalid>
363<invalid>0G</invalid>
364<equiv>
365 <class>
366   <value>00</value>
367   <value>
368	00
369   </value>
370 </class>
371 <class>
372   <value>01</value>
373 </class>
374 <class>
375   <value>10</value>
376 </class>
377 <class>
378   <value>0a</value>
379   <value>0A</value>
380 </class>
381</equiv>
382<length value="0"></length>
383<length value="1">00</length>
384<length value="2">0000</length>
385<length value="2"> 0000 </length>
386<length value="2">AAAA</length>
387</datatype>
388<datatype name="float">
389<valid>1.0</valid>
390<valid>1.</valid>
391<valid>.1</valid>
392<invalid>- 1</invalid>
393<invalid>1 .0</invalid>
394<invalid>+INF</invalid>
395<invalid>+NaN</invalid>
396<invalid>-NaN</invalid>
397<equiv>
398<class>
399  <value>0</value>
400  <value>-0</value>
401  <value>+0</value>
402  <value> 0 </value>
403  <value> 0. </value>
404  <value> .0 </value>
405  <value> 0.0 </value>
406  <value> 0e0 </value>
407  <value> 0E0 </value>
408  <value> 0E+0 </value>
409  <value> 0E-0 </value>
410</class>
411<class>
412  <value>1E0</value>
413  <value>0.1E1</value>
414  <value>10E-1</value>
415  <value>+1</value>
416</class>
417<class>
418  <value>-1</value>
419</class>
420<class>
421  <value>INF</value>
422  <value>INF </value>
423</class>
424<class>
425  <value>-INF</value>
426  <value>-INF </value>
427</class>
428<class>
429  <value>NaN</value>
430  <value> NaN </value>
431</class>
432</equiv>
433<lessThan>
434  <value>-INF</value>
435  <value>-1000</value>
436</lessThan>
437<lessThan>
438  <value>1000</value>
439  <value>INF</value>
440</lessThan>
441<lessThan>
442  <value>-1</value>
443  <value>1</value>
444</lessThan>
445<lessThan>
446  <value>0</value>
447  <value>1</value>
448</lessThan>
449<lessThan>
450  <value>-1</value>
451  <value>0</value>
452</lessThan>
453</datatype>
454<datatype name="double">
455<valid>1.0</valid>
456<valid>1.</valid>
457<valid>.1</valid>
458<invalid>- 1</invalid>
459<invalid>1 .0</invalid>
460<invalid>+INF</invalid>
461<invalid>+NaN</invalid>
462<invalid>-NaN</invalid>
463<equiv>
464<class>
465  <value>0</value>
466  <value>-0</value>
467  <value>+0</value>
468  <value> 0 </value>
469  <value> 0. </value>
470  <value> .0 </value>
471  <value> 0.0 </value>
472  <value> 0e0 </value>
473  <value> 0E0 </value>
474  <value> 0E+0 </value>
475  <value> 0E-0 </value>
476</class>
477<class>
478  <value>1E0</value>
479  <value>0.1E1</value>
480  <value>10E-1</value>
481  <value>+1</value>
482</class>
483<class>
484  <value>-1</value>
485</class>
486<class>
487  <value>INF</value>
488  <value>INF </value>
489</class>
490<class>
491  <value>-INF</value>
492  <value>-INF </value>
493</class>
494<class>
495  <value>NaN</value>
496  <value> NaN </value>
497</class>
498</equiv>
499<lessThan>
500  <value>-INF</value>
501  <value>-1000</value>
502</lessThan>
503<lessThan>
504  <value>1000</value>
505  <value>INF</value>
506</lessThan>
507<lessThan>
508  <value>-1</value>
509  <value>1</value>
510</lessThan>
511<lessThan>
512  <value>0</value>
513  <value>1</value>
514</lessThan>
515<lessThan>
516  <value>-1</value>
517  <value>0</value>
518</lessThan>
519</datatype>
520<datatype name="QName">
521<valid>foo</valid>
522<valid xmlns:x="http://www.example.com">x:foo</valid>
523<invalid>y:foo</invalid>
524<equiv xmlns:x="http://www.example.com"
525       xmlns:y="http://www.example.com/"
526       xmlns:z="http://www.example.com">
527<class>
528  <value>foo</value>
529  <value> foo</value>
530</class>
531<class>
532  <value>x:foo</value>
533  <value> x:foo </value>
534  <value>z:foo</value>
535</class>
536<class>
537  <value>x:bar</value>
538  <value>z:bar</value>
539</class>
540<class>
541  <value>y:foo</value>
542</class>
543<class>
544  <value>y:bar</value>
545</class>
546</equiv>
547</datatype>
548<datatype name="NOTATION">
549<valid>foo</valid>
550<valid xmlns:x="http://www.example.com">x:foo</valid>
551<invalid>y:foo</invalid>
552</datatype>
553<datatype name="decimal">
554<valid>1.0</valid>
555<valid>1.</valid>
556<valid>.1</valid>
557<valid>+1.0</valid>
558<valid>-1.0</valid>
559<valid> 1 </valid>
560<valid>99999999999999999999999999999999999999999999999999999999999999999</valid>
561<valid>-99999999999999999999999999999999999999999999999999999999999999999</valid>
562<invalid>junk</invalid>
563<invalid>--1</invalid>
564<invalid>++1</invalid>
565<invalid>+-1</invalid>
566<invalid>1.2.</invalid>
567<invalid>..1</invalid>
568<invalid>1..</invalid>
569<invalid>1 .2</invalid>
570<invalid>1+</invalid>
571<invalid>+ 1</invalid>
572<lessThan>
573  <value>0</value>
574  <value>1</value>
575</lessThan>
576</datatype>
577<datatype name="nonPositiveInteger">
578<valid>-1</valid>
579<valid>0</valid>
580<valid>-0</valid>
581<invalid>1</invalid>
582</datatype>
583<datatype name="nonNegativeInteger">
584<valid>1</valid>
585<valid>0</valid>
586<valid>+1</valid>
587<valid>+0</valid>
588<invalid>-1</invalid>
589</datatype>
590<datatype name="positiveInteger">
591<valid>+1</valid>
592<valid>1</valid>
593<invalid>0</invalid>
594<invalid>-1</invalid>
595</datatype>
596<datatype name="negativeInteger">
597<valid>-1</valid>
598<invalid>+1</invalid>
599<invalid>0</invalid>
600</datatype>
601<datatype name="long">
602<valid>1</valid>
603<valid>+1</valid>
604<valid>0</valid>
605<valid> 0 </valid>
606<invalid>1 2</invalid>
607<invalid>9999999999999999999999999999999999999999999999999999999999999999999999999</invalid>
608<valid>9223372036854775807</valid>
609<valid>-9223372036854775808</valid>
610<invalid>9223372036854775808</invalid>
611<invalid>-9223372036854775809</invalid>
612<invalid/>
613</datatype>
614<datatype name="int">
615<valid>1</valid>
616<valid>01</valid>
617<valid> 1 </valid>
618<valid>2147483647</valid>
619<valid>-2147483648</valid>
620<invalid>2147483648</invalid>
621<invalid>-2147483649</invalid>
622<invalid>9999999999999999999999999999999999999999999999999999999999999999999999999</invalid>
623<equiv>
624<class>
625 <value>1</value>
626 <value>+1</value>
627 <value> 1 </value>
628 <value>001</value>
629</class>
630<class>
631 <value>-1</value>
632 <value> -1 </value>
633 <value>-001</value>
634</class>
635</equiv>
636</datatype>
637<datatype name="short">
638<valid>1</valid>
639<valid>32767</valid>
640<valid>-32768</valid>
641<invalid>32768</invalid>
642<invalid>-32769</invalid>
643<invalid>9999999999999999999999999999999999999999999999999999999999999999999999999</invalid>
644<equiv>
645<class>
646 <value>1</value>
647 <value>+1</value>
648 <value> 1 </value>
649 <value>001</value>
650</class>
651<class>
652 <value>-1</value>
653 <value> -1 </value>
654 <value>-001</value>
655</class>
656</equiv>
657</datatype>
658<datatype name="byte">
659<valid>1</valid>
660<valid>127</valid>
661<valid>-128</valid>
662<invalid>128</invalid>
663<invalid>-129</invalid>
664</datatype>
665<datatype name="unsignedLong">
666<valid>1</valid>
667<valid>+1</valid>
668<invalid>-1</invalid>
669<valid>0</valid>
670<valid>18446744073709551615</valid>
671<invalid>18446744073709551616</invalid>
672<invalid>-1</invalid>
673</datatype>
674<datatype name="unsignedInt">
675<valid>1</valid>
676<valid>+1</valid>
677<valid>0</valid>
678<valid>4294967295</valid>
679<invalid>4294967296</invalid>
680<invalid>-1</invalid>
681</datatype>
682<datatype name="unsignedShort">
683<valid>1</valid>
684<valid>+1</valid>
685<valid>0</valid>
686<valid>65535</valid>
687<invalid>65536</invalid>
688<invalid>-1</invalid>
689</datatype>
690<datatype name="unsignedByte">
691<valid>1</valid>
692<valid>+1</valid>
693<valid>0</valid>
694<valid>255</valid>
695<invalid>256</invalid>
696<invalid>-1</invalid>
697</datatype>
698<datatype name="string">
699<valid>any thing at all!</valid>
700</datatype>
701<datatype name="normalizedString">
702<valid>any thing at all!</valid>
703</datatype>
704<datatype name="token">
705<valid>any thing at all!</valid>
706<equiv>
707<class>
708  <value/>
709  <value> </value>
710  <value>&#x9;&#xA;&#xD;&#x20;</value>
711</class>
712<class>
713  <value>x&#x20;</value>
714  <value>x&#xA;</value>
715  <value>x&#xD;</value>
716  <value>x&#x9;</value>
717  <value>&#x20;x</value>
718  <value>&#xA;x</value>
719  <value>&#xD;x</value>
720  <value>&#x9;x</value>
721  <value>&#x9;&#xA;&#xD;&#x20;x&#x9;&#xA;&#xD;&#x20;</value>
722</class>
723<class>
724  <value>x y&#x20;</value>
725  <value>x y&#xA;</value>
726  <value>x y&#xD;</value>
727  <value>x y&#x9;</value>
728  <value>x&#x20;y</value>
729  <value>x&#xA;y</value>
730  <value>x&#xD;y</value>
731  <value>x&#x9;y</value>
732  <value>&#x20;x y</value>
733  <value>&#xA;x y</value>
734  <value>&#xD;x y</value>
735  <value>&#x9;x y</value>
736  <value>&#x9;&#xA;&#xD;&#x20;x&#x9;&#xA;&#xD;&#x20;y&#x9;&#xA;&#xD;&#x20;</value>
737</class>
738</equiv>
739<length value="0"></length>
740<length value="1">x</length>
741<length value="1"> x </length>
742<length value="1">&#x10800;</length>
743</datatype>
744<datatype name="language">
745<valid>en</valid>
746<valid>en-UK</valid>
747<valid>i-cherokee</valid>
748<valid>x-klingon</valid>
749<valid>en-uk-scotland</valid>
750<invalid>en.UK</invalid>
751</datatype>
752<datatype name="Name">
753<valid>foo</valid>
754<valid>_0123456789</valid>
755<invalid>.</invalid>
756<valid>:</valid>
757<invalid>-</invalid>
758<invalid>1234</invalid>
759<valid> foo </valid>
760</datatype>
761<datatype name="NCName">
762<valid>foo</valid>
763<invalid>foo:bar</invalid>
764<invalid>0foo</invalid>
765<equiv>
766<class><value>foo</value><value> foo </value></class>
767<class><value>FOO</value><value> FOO </value></class>
768</equiv>
769</datatype>
770<datatype name="NMTOKEN">
771<valid>foo</valid>
772<valid>_</valid>
773<valid>.</valid>
774<valid>:</valid>
775<valid>-</valid>
776<valid>1234</valid>
777<valid> foo </valid>
778<length value="3"> foo </length>
779<length value="2">fo</length>
780<length value="1">f</length>
781</datatype>
782<datatype name="NMTOKENS">
783<valid>foo bar</valid>
784<invalid/>
785<valid>1 2 3 4</valid>
786</datatype>
787<datatype name="ID">
788<valid>foobar</valid>
789<invalid>foo:bar</invalid>
790<invalid>foo bar</invalid>
791</datatype>
792<datatype name="ENTITY">
793<invalid/>
794<invalid>foo</invalid>
795<valid internalSubset="&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg>"
796>foo</valid>
797</datatype>
798<datatype name="ENTITIES">
799<invalid></invalid>
800<invalid>foo</invalid>
801<valid internalSubset="&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg>
802&#xA;&lt;!ENTITY bar SYSTEM 'whatever' NDATA jpeg>
803"
804> foo bar </valid>
805</datatype>
806</xsdtest>
807