| <xsdtest> |
| <datatype name="dateTime"> |
| <valid>2001-12-01T19:45:00</valid> |
| <valid>2001-12-01T19:45:00Z</valid> |
| <valid>2001-12-01T19:45:00-11:59</valid> |
| <valid>0001-01-12T00:00:00+12:00</valid> |
| <invalid>2001-12-1T19:45:00+24:00</invalid> |
| <invalid>2001-12-1T19:45:00</invalid> |
| <equiv> |
| <class> |
| <value>2001-12-01T19:45:00</value> |
| <value>2001-12-01T19:45:00.00</value> |
| </class> |
| <class> |
| <value>2001-12-01T19:45:00Z</value> |
| <value>2001-12-01T19:45:00.00Z</value> |
| <value>2001-12-01T20:45:00+01:00</value> |
| </class> |
| </equiv> |
| </datatype> |
| <datatype name="anyURI"> |
| <valid>foobar</valid> |
| <valid>http://www.example.com</valid> |
| <valid>http://www.example.co%6d</valid> |
| <valid>nosuchscheme:stuff</valid> |
| <invalid>foo$bar:stuff</invalid> |
| <invalid>f%oobar</invalid> |
| </datatype> |
| <datatype name="integer"> |
| <valid>10</valid> |
| <valid>01</valid> |
| <valid>0123456789</valid> |
| <valid>+10</valid> |
| <valid>-10</valid> |
| <invalid>1.0</invalid> |
| <invalid>.1</invalid> |
| <valid>9999999999999999999999999999999</valid> |
| <invalid>1.</invalid> |
| <invalid>0.</invalid> |
| <equiv> |
| <class> |
| <value>0</value> |
| <value>+0</value> |
| <value>-0</value> |
| <value>00</value> |
| </class> |
| <class> |
| <value>10</value> |
| <value>+10</value> |
| <value>+0010</value> |
| <value>010</value> |
| </class> |
| <class> |
| <value>-10</value> |
| <value>-0010</value> |
| <value>-010</value> |
| </class> |
| </equiv> |
| </datatype> |
| <datatype name="duration"> |
| <valid>P1Y</valid> |
| <valid>P1Y0M2DT17H5M12S</valid> |
| <valid>-P1Y</valid> |
| <valid>P60D</valid> |
| <valid>PT24H</valid> |
| <valid>PT1.2S</valid> |
| <invalid>P24h</invalid> |
| <invalid>P24H</invalid> |
| <invalid>P1YT</invalid> |
| <invalid>P</invalid> |
| <invalid>-P</invalid> |
| <equiv> |
| <class> |
| <value>-P6M</value> |
| </class> |
| <class> |
| <value>P0Y</value> |
| <value>-P0Y</value> |
| </class> |
| <class> |
| <value>P1Y</value> |
| <value>P001Y</value> |
| <value>P001Y0M</value> |
| <value>P1Y0M0DT0H0M0.0S</value> |
| </class> |
| <class> |
| <value>P6M</value> |
| </class> |
| <class> |
| <value>PT6M</value> |
| </class> |
| <class> |
| <value>PT1S</value> |
| <value>PT1.0S</value> |
| </class> |
| </equiv> |
| <lessThan> |
| <value>PT1M</value> |
| <value>PT61S</value> |
| </lessThan> |
| <lessThan> |
| <value>PT59S</value> |
| <value>PT1M</value> |
| </lessThan> |
| <incomparable> |
| <value>PT60S</value> |
| <value>PT1M</value> |
| </incomparable> |
| <lessThan> |
| <value>PT1H</value> |
| <value>PT61M</value> |
| </lessThan> |
| <lessThan> |
| <value>PT59M</value> |
| <value>PT1H</value> |
| </lessThan> |
| <incomparable> |
| <value>PT60M</value> |
| <value>PT1H</value> |
| </incomparable> |
| <lessThan> |
| <value>P1D</value> |
| <value>PT25H</value> |
| </lessThan> |
| <lessThan> |
| <value>PT23H</value> |
| <value>P1D</value> |
| </lessThan> |
| <incomparable> |
| <value>P1D</value> |
| <value>PT24H</value> |
| </incomparable> |
| <lessThan> |
| <value>P1Y</value> |
| <value>P13M</value> |
| </lessThan> |
| <lessThan> |
| <value>P11M</value> |
| <value>P1Y</value> |
| </lessThan> |
| <incomparable> |
| <value>P12M</value> |
| <value>P1Y</value> |
| </incomparable> |
| <lessThan> |
| <value>P364D</value> |
| <value>P1Y</value> |
| </lessThan> |
| <incomparable> |
| <value>P1Y</value> |
| <value>P365D</value> |
| </incomparable> |
| <incomparable> |
| <value>P1Y</value> |
| <value>P366D</value> |
| </incomparable> |
| <lessThan> |
| <value>P1Y</value> |
| <value>P367D</value> |
| </lessThan> |
| <lessThan> |
| <value>P149D</value> |
| <value>P5M</value> |
| </lessThan> |
| <incomparable> |
| <value>P150D</value> |
| <value>P5M</value> |
| </incomparable> |
| <incomparable> |
| <value>P151D</value> |
| <value>P5M</value> |
| </incomparable> |
| <incomparable> |
| <value>P152D</value> |
| <value>P5M</value> |
| </incomparable> |
| <incomparable> |
| <value>P153D</value> |
| <value>P5M</value> |
| </incomparable> |
| <lessThan> |
| <value>P5M</value> |
| <value>P154D</value> |
| </lessThan> |
| <lessThan> |
| <value>P27D</value> |
| <value>P1M</value> |
| </lessThan> |
| <incomparable> |
| <value>P28D</value> |
| <value>P1M</value> |
| </incomparable> |
| <incomparable> |
| <value>P29D</value> |
| <value>P1M</value> |
| </incomparable> |
| <incomparable> |
| <value>P30D</value> |
| <value>P1M</value> |
| </incomparable> |
| <incomparable> |
| <value>P31D</value> |
| <value>P1M</value> |
| </incomparable> |
| <lessThan> |
| <value>P1M</value> |
| <value>P32D</value> |
| </lessThan> |
| </datatype> |
| <datatype name="time"> |
| <valid>12:45:00</valid> |
| <valid>12:45:00Z</valid> |
| </datatype> |
| <datatype name="date"> |
| <valid>1886-12-01</valid> |
| <valid>1886-12-01Z</valid> |
| <lessThan> |
| <value>1066-12-31</value> |
| <value>1900-01-01</value> |
| </lessThan> |
| <lessThan> |
| <value>1900-01-01</value> |
| <value>1900-01-02</value> |
| </lessThan> |
| </datatype> |
| <datatype name="gYearMonth"> |
| <valid>1996-12</valid> |
| <valid>1996-01</valid> |
| <valid>1996-01Z</valid> |
| <invalid>1996-00</invalid> |
| <equiv> |
| <class><value>1996-01</value></class> |
| <class> |
| <value>1996-01Z</value> |
| <value>1996-01+00:00</value> |
| <value>1996-01-00:00</value> |
| </class> |
| <class><value>1996-01+01:00</value></class> |
| <class><value>1996-01-01:00</value></class> |
| </equiv> |
| </datatype> |
| <datatype name="gYear"> |
| <valid>2001</valid> |
| <valid>2001Z</valid> |
| <lessThan> |
| <value>1999</value> |
| <value>2000</value> |
| </lessThan> |
| <lessThan> |
| <value>1999+07:00</value> |
| <value>2000+07:00</value> |
| </lessThan> |
| </datatype> |
| <datatype name="gMonthDay"> |
| <valid>--12-01</valid> |
| <valid>--12-01Z</valid> |
| <lessThan> |
| <value>--12-01</value> |
| <value>--12-04</value> |
| </lessThan> |
| <lessThan> |
| <value>--11-17</value> |
| <value>--12-04</value> |
| </lessThan> |
| </datatype> |
| <datatype name="gDay"> |
| <valid>---20</valid> |
| <valid>---20Z</valid> |
| <lessThan> |
| <value>---01</value> |
| <value>---31</value> |
| </lessThan> |
| </datatype> |
| <datatype name="gMonth"> |
| <valid>--12</valid> |
| <valid>--01</valid> |
| <valid>--01Z</valid> |
| <valid> --12 </valid> |
| <invalid>---01</invalid> |
| <invalid>--00</invalid> |
| <invalid>--13</invalid> |
| <invalid>- -13</invalid> |
| <lessThan> |
| <value>--01</value> |
| <value>--12</value> |
| </lessThan> |
| <lessThan> |
| <value>--01</value> |
| <value>--02</value> |
| </lessThan> |
| </datatype> |
| <datatype name="boolean"> |
| <valid>true</valid> |
| <valid>false</valid> |
| <valid>0</valid> |
| <valid>1</valid> |
| <invalid>00</invalid> |
| <invalid>00</invalid> |
| <invalid>01</invalid> |
| <equiv> |
| <class><value>true</value><value>1</value></class> |
| <class><value>false</value><value>0</value></class> |
| </equiv> |
| </datatype> |
| <datatype name="base64Binary"> |
| <valid>AAAA</valid> |
| <valid>abcd efgh ijkl mnop qrst uvwx yzAB CDEF GHIJ KLMN OPQR |
| STUV WXYZ 0123 4567 89+/</valid> |
| <valid>BA==</valid> |
| <valid></valid> |
| <valid>BA==</valid> |
| <valid>BQ==</valid> |
| <valid>Bg==</valid> |
| <valid>Bw==</valid> |
| <valid>BBA=</valid> |
| <valid>BBA=</valid> |
| <valid>BBE=</valid> |
| <valid>BBI=</valid> |
| <valid>BBM=</valid> |
| <valid>BBQ=</valid> |
| <valid>BBU=</valid> |
| <valid>BBY=</valid> |
| <valid>BBc=</valid> |
| <valid>BBg=</valid> |
| <valid>BBk=</valid> |
| <valid>BBo=</valid> |
| <valid>BBs=</valid> |
| <valid>BBw=</valid> |
| <valid>BB0=</valid> |
| <valid>BB4=</valid> |
| <valid>BB8=</valid> |
| <invalid>====</invalid> |
| <invalid>BB==</invalid> |
| <invalid>BBB=</invalid> |
| <invalid>B===</invalid> |
| <invalid>B</invalid> |
| <equiv> |
| <class> |
| <value>deadbeef</value> |
| <value>d

	e a d |
| b eef </value> |
| </class> |
| <class> |
| <value>DEADBEEF</value> |
| <value>D

	E A D |
| B EEF </value> |
| </class> |
| </equiv> |
| <length value="0"></length> |
| <length value="6">deadbeef</length> |
| <length value="1">BA==</length> |
| <length value="2">BBA=</length> |
| <length value="3">dead</length> |
| <length value="4">deadBA==</length> |
| </datatype> |
| <datatype name="hexBinary"> |
| <valid>deadbeef</valid> |
| <valid></valid> |
| <valid>0123456789ABCDEFabcdef</valid> |
| <invalid>00 00</invalid> |
| <invalid>00.00</invalid> |
| <invalid>0G</invalid> |
| <equiv> |
| <class> |
| <value>00</value> |
| <value> |
| 00 |
| </value> |
| </class> |
| <class> |
| <value>01</value> |
| </class> |
| <class> |
| <value>10</value> |
| </class> |
| <class> |
| <value>0a</value> |
| <value>0A</value> |
| </class> |
| </equiv> |
| <length value="0"></length> |
| <length value="1">00</length> |
| <length value="2">0000</length> |
| <length value="2"> 0000 </length> |
| <length value="2">AAAA</length> |
| </datatype> |
| <datatype name="float"> |
| <valid>1.0</valid> |
| <valid>1.</valid> |
| <valid>.1</valid> |
| <invalid>- 1</invalid> |
| <invalid>1 .0</invalid> |
| <invalid>+INF</invalid> |
| <invalid>+NaN</invalid> |
| <invalid>-NaN</invalid> |
| <equiv> |
| <class> |
| <value>0</value> |
| <value>-0</value> |
| <value>+0</value> |
| <value> 0 </value> |
| <value> 0. </value> |
| <value> .0 </value> |
| <value> 0.0 </value> |
| <value> 0e0 </value> |
| <value> 0E0 </value> |
| <value> 0E+0 </value> |
| <value> 0E-0 </value> |
| </class> |
| <class> |
| <value>1E0</value> |
| <value>0.1E1</value> |
| <value>10E-1</value> |
| <value>+1</value> |
| </class> |
| <class> |
| <value>-1</value> |
| </class> |
| <class> |
| <value>INF</value> |
| <value>INF </value> |
| </class> |
| <class> |
| <value>-INF</value> |
| <value>-INF </value> |
| </class> |
| <class> |
| <value>NaN</value> |
| <value> NaN </value> |
| </class> |
| </equiv> |
| <lessThan> |
| <value>-INF</value> |
| <value>-1000</value> |
| </lessThan> |
| <lessThan> |
| <value>1000</value> |
| <value>INF</value> |
| </lessThan> |
| <lessThan> |
| <value>-1</value> |
| <value>1</value> |
| </lessThan> |
| <lessThan> |
| <value>0</value> |
| <value>1</value> |
| </lessThan> |
| <lessThan> |
| <value>-1</value> |
| <value>0</value> |
| </lessThan> |
| </datatype> |
| <datatype name="double"> |
| <valid>1.0</valid> |
| <valid>1.</valid> |
| <valid>.1</valid> |
| <invalid>- 1</invalid> |
| <invalid>1 .0</invalid> |
| <invalid>+INF</invalid> |
| <invalid>+NaN</invalid> |
| <invalid>-NaN</invalid> |
| <equiv> |
| <class> |
| <value>0</value> |
| <value>-0</value> |
| <value>+0</value> |
| <value> 0 </value> |
| <value> 0. </value> |
| <value> .0 </value> |
| <value> 0.0 </value> |
| <value> 0e0 </value> |
| <value> 0E0 </value> |
| <value> 0E+0 </value> |
| <value> 0E-0 </value> |
| </class> |
| <class> |
| <value>1E0</value> |
| <value>0.1E1</value> |
| <value>10E-1</value> |
| <value>+1</value> |
| </class> |
| <class> |
| <value>-1</value> |
| </class> |
| <class> |
| <value>INF</value> |
| <value>INF </value> |
| </class> |
| <class> |
| <value>-INF</value> |
| <value>-INF </value> |
| </class> |
| <class> |
| <value>NaN</value> |
| <value> NaN </value> |
| </class> |
| </equiv> |
| <lessThan> |
| <value>-INF</value> |
| <value>-1000</value> |
| </lessThan> |
| <lessThan> |
| <value>1000</value> |
| <value>INF</value> |
| </lessThan> |
| <lessThan> |
| <value>-1</value> |
| <value>1</value> |
| </lessThan> |
| <lessThan> |
| <value>0</value> |
| <value>1</value> |
| </lessThan> |
| <lessThan> |
| <value>-1</value> |
| <value>0</value> |
| </lessThan> |
| </datatype> |
| <datatype name="QName"> |
| <valid>foo</valid> |
| <valid xmlns:x="http://www.example.com">x:foo</valid> |
| <invalid>y:foo</invalid> |
| <equiv xmlns:x="http://www.example.com" |
| xmlns:y="http://www.example.com/" |
| xmlns:z="http://www.example.com"> |
| <class> |
| <value>foo</value> |
| <value> foo</value> |
| </class> |
| <class> |
| <value>x:foo</value> |
| <value> x:foo </value> |
| <value>z:foo</value> |
| </class> |
| <class> |
| <value>x:bar</value> |
| <value>z:bar</value> |
| </class> |
| <class> |
| <value>y:foo</value> |
| </class> |
| <class> |
| <value>y:bar</value> |
| </class> |
| </equiv> |
| </datatype> |
| <datatype name="NOTATION"> |
| <valid>foo</valid> |
| <valid xmlns:x="http://www.example.com">x:foo</valid> |
| <invalid>y:foo</invalid> |
| </datatype> |
| <datatype name="decimal"> |
| <valid>1.0</valid> |
| <valid>1.</valid> |
| <valid>.1</valid> |
| <valid>+1.0</valid> |
| <valid>-1.0</valid> |
| <valid> 1 </valid> |
| <valid>99999999999999999999999999999999999999999999999999999999999999999</valid> |
| <valid>-99999999999999999999999999999999999999999999999999999999999999999</valid> |
| <invalid>junk</invalid> |
| <invalid>--1</invalid> |
| <invalid>++1</invalid> |
| <invalid>+-1</invalid> |
| <invalid>1.2.</invalid> |
| <invalid>..1</invalid> |
| <invalid>1..</invalid> |
| <invalid>1 .2</invalid> |
| <invalid>1+</invalid> |
| <invalid>+ 1</invalid> |
| <lessThan> |
| <value>0</value> |
| <value>1</value> |
| </lessThan> |
| </datatype> |
| <datatype name="nonPositiveInteger"> |
| <valid>-1</valid> |
| <valid>0</valid> |
| <valid>-0</valid> |
| <invalid>1</invalid> |
| </datatype> |
| <datatype name="nonNegativeInteger"> |
| <valid>1</valid> |
| <valid>0</valid> |
| <valid>+1</valid> |
| <valid>+0</valid> |
| <invalid>-1</invalid> |
| </datatype> |
| <datatype name="positiveInteger"> |
| <valid>+1</valid> |
| <valid>1</valid> |
| <invalid>0</invalid> |
| <invalid>-1</invalid> |
| </datatype> |
| <datatype name="negativeInteger"> |
| <valid>-1</valid> |
| <invalid>+1</invalid> |
| <invalid>0</invalid> |
| </datatype> |
| <datatype name="long"> |
| <valid>1</valid> |
| <valid>+1</valid> |
| <valid>0</valid> |
| <valid> 0 </valid> |
| <invalid>1 2</invalid> |
| <invalid>9999999999999999999999999999999999999999999999999999999999999999999999999</invalid> |
| <valid>9223372036854775807</valid> |
| <valid>-9223372036854775808</valid> |
| <invalid>9223372036854775808</invalid> |
| <invalid>-9223372036854775809</invalid> |
| <invalid/> |
| </datatype> |
| <datatype name="int"> |
| <valid>1</valid> |
| <valid>01</valid> |
| <valid> 1 </valid> |
| <valid>2147483647</valid> |
| <valid>-2147483648</valid> |
| <invalid>2147483648</invalid> |
| <invalid>-2147483649</invalid> |
| <invalid>9999999999999999999999999999999999999999999999999999999999999999999999999</invalid> |
| <equiv> |
| <class> |
| <value>1</value> |
| <value>+1</value> |
| <value> 1 </value> |
| <value>001</value> |
| </class> |
| <class> |
| <value>-1</value> |
| <value> -1 </value> |
| <value>-001</value> |
| </class> |
| </equiv> |
| </datatype> |
| <datatype name="short"> |
| <valid>1</valid> |
| <valid>32767</valid> |
| <valid>-32768</valid> |
| <invalid>32768</invalid> |
| <invalid>-32769</invalid> |
| <invalid>9999999999999999999999999999999999999999999999999999999999999999999999999</invalid> |
| <equiv> |
| <class> |
| <value>1</value> |
| <value>+1</value> |
| <value> 1 </value> |
| <value>001</value> |
| </class> |
| <class> |
| <value>-1</value> |
| <value> -1 </value> |
| <value>-001</value> |
| </class> |
| </equiv> |
| </datatype> |
| <datatype name="byte"> |
| <valid>1</valid> |
| <valid>127</valid> |
| <valid>-128</valid> |
| <invalid>128</invalid> |
| <invalid>-129</invalid> |
| </datatype> |
| <datatype name="unsignedLong"> |
| <valid>1</valid> |
| <valid>+1</valid> |
| <invalid>-1</invalid> |
| <valid>0</valid> |
| <valid>18446744073709551615</valid> |
| <invalid>18446744073709551616</invalid> |
| <invalid>-1</invalid> |
| </datatype> |
| <datatype name="unsignedInt"> |
| <valid>1</valid> |
| <valid>+1</valid> |
| <valid>0</valid> |
| <valid>4294967295</valid> |
| <invalid>4294967296</invalid> |
| <invalid>-1</invalid> |
| </datatype> |
| <datatype name="unsignedShort"> |
| <valid>1</valid> |
| <valid>+1</valid> |
| <valid>0</valid> |
| <valid>65535</valid> |
| <invalid>65536</invalid> |
| <invalid>-1</invalid> |
| </datatype> |
| <datatype name="unsignedByte"> |
| <valid>1</valid> |
| <valid>+1</valid> |
| <valid>0</valid> |
| <valid>255</valid> |
| <invalid>256</invalid> |
| <invalid>-1</invalid> |
| </datatype> |
| <datatype name="string"> |
| <valid>any thing at all!</valid> |
| </datatype> |
| <datatype name="normalizedString"> |
| <valid>any thing at all!</valid> |
| </datatype> |
| <datatype name="token"> |
| <valid>any thing at all!</valid> |
| <equiv> |
| <class> |
| <value/> |
| <value> </value> |
| <value>	

 </value> |
| </class> |
| <class> |
| <value>x </value> |
| <value>x
</value> |
| <value>x
</value> |
| <value>x	</value> |
| <value> x</value> |
| <value>
x</value> |
| <value>
x</value> |
| <value>	x</value> |
| <value>	

 x	

 </value> |
| </class> |
| <class> |
| <value>x y </value> |
| <value>x y
</value> |
| <value>x y
</value> |
| <value>x y	</value> |
| <value>x y</value> |
| <value>x
y</value> |
| <value>x
y</value> |
| <value>x	y</value> |
| <value> x y</value> |
| <value>
x y</value> |
| <value>
x y</value> |
| <value>	x y</value> |
| <value>	

 x	

 y	

 </value> |
| </class> |
| </equiv> |
| <length value="0"></length> |
| <length value="1">x</length> |
| <length value="1"> x </length> |
| <length value="1">𐠀</length> |
| </datatype> |
| <datatype name="language"> |
| <valid>en</valid> |
| <valid>en-UK</valid> |
| <valid>i-cherokee</valid> |
| <valid>x-klingon</valid> |
| <valid>en-uk-scotland</valid> |
| <invalid>en.UK</invalid> |
| </datatype> |
| <datatype name="Name"> |
| <valid>foo</valid> |
| <valid>_0123456789</valid> |
| <invalid>.</invalid> |
| <valid>:</valid> |
| <invalid>-</invalid> |
| <invalid>1234</invalid> |
| <valid> foo </valid> |
| </datatype> |
| <datatype name="NCName"> |
| <valid>foo</valid> |
| <invalid>foo:bar</invalid> |
| <invalid>0foo</invalid> |
| <equiv> |
| <class><value>foo</value><value> foo </value></class> |
| <class><value>FOO</value><value> FOO </value></class> |
| </equiv> |
| </datatype> |
| <datatype name="NMTOKEN"> |
| <valid>foo</valid> |
| <valid>_</valid> |
| <valid>.</valid> |
| <valid>:</valid> |
| <valid>-</valid> |
| <valid>1234</valid> |
| <valid> foo </valid> |
| <length value="3"> foo </length> |
| <length value="2">fo</length> |
| <length value="1">f</length> |
| </datatype> |
| <datatype name="NMTOKENS"> |
| <valid>foo bar</valid> |
| <invalid/> |
| <valid>1 2 3 4</valid> |
| </datatype> |
| <datatype name="ID"> |
| <valid>foobar</valid> |
| <invalid>foo:bar</invalid> |
| <invalid>foo bar</invalid> |
| </datatype> |
| <datatype name="ENTITY"> |
| <invalid/> |
| <invalid>foo</invalid> |
| <valid internalSubset="<!ENTITY foo SYSTEM 'whatever' NDATA jpeg>" |
| >foo</valid> |
| </datatype> |
| <datatype name="ENTITIES"> |
| <invalid></invalid> |
| <invalid>foo</invalid> |
| <valid internalSubset="<!ENTITY foo SYSTEM 'whatever' NDATA jpeg> |
| 
<!ENTITY bar SYSTEM 'whatever' NDATA jpeg> |
| " |
| > foo bar </valid> |
| </datatype> |
| </xsdtest> |