summaryrefslogtreecommitdiffstats
path: root/libxml2/test/xsdtest
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2017-05-03 15:29:42 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2017-05-03 15:29:42 (GMT)
commit937cfaf1a06a4a9d0c8ba119d7ce820878ff9058 (patch)
treef7b0b1bcce9ae963a0a069eafa552350eb4ee391 /libxml2/test/xsdtest
parent4b8453f0303492a1de2dcf854555f6429fac550e (diff)
downloadblt-937cfaf1a06a4a9d0c8ba119d7ce820878ff9058.zip
blt-937cfaf1a06a4a9d0c8ba119d7ce820878ff9058.tar.gz
blt-937cfaf1a06a4a9d0c8ba119d7ce820878ff9058.tar.bz2
inital commit
Diffstat (limited to 'libxml2/test/xsdtest')
-rw-r--r--libxml2/test/xsdtest/xsdtest.xml806
-rw-r--r--libxml2/test/xsdtest/xsdtest.xsl238
-rw-r--r--libxml2/test/xsdtest/xsdtestsuite.xml5286
3 files changed, 6330 insertions, 0 deletions
diff --git a/libxml2/test/xsdtest/xsdtest.xml b/libxml2/test/xsdtest/xsdtest.xml
new file mode 100644
index 0000000..b8a6de9
--- /dev/null
+++ b/libxml2/test/xsdtest/xsdtest.xml
@@ -0,0 +1,806 @@
+<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://ji%6d@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&#xA;&#xD;&#x9;e a d
+b eef </value>
+</class>
+<class>
+<value>DEADBEEF</value>
+<value>D&#xA;&#xD;&#x9;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>&#x9;&#xA;&#xD;&#x20;</value>
+</class>
+<class>
+ <value>x&#x20;</value>
+ <value>x&#xA;</value>
+ <value>x&#xD;</value>
+ <value>x&#x9;</value>
+ <value>&#x20;x</value>
+ <value>&#xA;x</value>
+ <value>&#xD;x</value>
+ <value>&#x9;x</value>
+ <value>&#x9;&#xA;&#xD;&#x20;x&#x9;&#xA;&#xD;&#x20;</value>
+</class>
+<class>
+ <value>x y&#x20;</value>
+ <value>x y&#xA;</value>
+ <value>x y&#xD;</value>
+ <value>x y&#x9;</value>
+ <value>x&#x20;y</value>
+ <value>x&#xA;y</value>
+ <value>x&#xD;y</value>
+ <value>x&#x9;y</value>
+ <value>&#x20;x y</value>
+ <value>&#xA;x y</value>
+ <value>&#xD;x y</value>
+ <value>&#x9;x y</value>
+ <value>&#x9;&#xA;&#xD;&#x20;x&#x9;&#xA;&#xD;&#x20;y&#x9;&#xA;&#xD;&#x20;</value>
+</class>
+</equiv>
+<length value="0"></length>
+<length value="1">x</length>
+<length value="1"> x </length>
+<length value="1">&#x10800;</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="&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg>"
+>foo</valid>
+</datatype>
+<datatype name="ENTITIES">
+<invalid></invalid>
+<invalid>foo</invalid>
+<valid internalSubset="&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg>
+&#xA;&lt;!ENTITY bar SYSTEM 'whatever' NDATA jpeg>
+"
+> foo bar </valid>
+</datatype>
+</xsdtest>
diff --git a/libxml2/test/xsdtest/xsdtest.xsl b/libxml2/test/xsdtest/xsdtest.xsl
new file mode 100644
index 0000000..d57adf2
--- /dev/null
+++ b/libxml2/test/xsdtest/xsdtest.xsl
@@ -0,0 +1,238 @@
+<?xml version="1.0"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:strip-space elements="xsdtest datatype equiv class"/>
+
+<xsl:output indent="yes" encoding="utf-8"/>
+
+<xsl:template match="xsdtest">
+ <testSuite>
+ <xsl:apply-templates/>
+ </testSuite>
+</xsl:template>
+
+<xsl:template match="datatype">
+<testSuite>
+<documentation>Datatype <xsl:value-of select="@name"/></documentation>
+<testCase>
+<requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="{@name}">
+ <xsl:for-each select="param">
+ <param name="{@name}"><xsl:value-of select="."/></param>
+ </xsl:for-each>
+ </data>
+</element>
+</correct>
+<xsl:apply-templates select="valid|invalid"/>
+</testCase>
+<xsl:apply-templates select="equiv/class|length|lessThan|incomparable"/>
+</testSuite>
+</xsl:template>
+
+<xsl:template match="valid">
+ <xsl:call-template name="valid"/>
+</xsl:template>
+
+<xsl:template match="invalid">
+ <xsl:call-template name="invalid"/>
+</xsl:template>
+
+<xsl:template name="valid">
+ <valid>
+ <xsl:apply-templates select="@internalSubset"/>
+ <doc>
+ <xsl:copy-of select="namespace::*"/>
+ <xsl:value-of select="."/>
+ </doc>
+ </valid>
+</xsl:template>
+
+<xsl:template name="invalid">
+ <invalid>
+ <xsl:apply-templates select="@internalSubset"/>
+ <doc>
+ <xsl:copy-of select="namespace::*"/>
+ <xsl:value-of select="."/>
+ </doc>
+ </invalid>
+</xsl:template>
+
+<xsl:template match="@internalSubset">
+ <xsl:param name="doc" select="'doc'"/>
+ <xsl:attribute name="dtd">
+ <xsl:text>
+&lt;!DOCTYPE </xsl:text>
+ <xsl:value-of select="$doc"/>
+ <xsl:text> [
+</xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>
+]></xsl:text>
+ </xsl:attribute>
+</xsl:template>
+
+<xsl:template match="class">
+<testCase>
+<correct>
+ <xsl:for-each select="value[1]">
+ <xsl:apply-templates select="@internalSubset">
+ <xsl:with-param name="doc">element</xsl:with-param>
+ </xsl:apply-templates>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value>
+ <xsl:copy-of select="namespace::*"/>
+ <xsl:attribute name="type"><xsl:value-of select="../../../@name"/></xsl:attribute>
+ <xsl:value-of select="."/>
+ </value>
+ </element>
+ </xsl:for-each>
+</correct>
+<xsl:for-each select="value[position() != 1]">
+ <xsl:call-template name="valid"/>
+</xsl:for-each>
+<xsl:for-each select="preceding-sibling::class/value|following-sibling::class/value">
+ <xsl:call-template name="invalid"/>
+</xsl:for-each>
+</testCase>
+</xsl:template>
+
+<xsl:template match="length">
+<testCase>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="{../@name}">
+ <param name="length"><xsl:value-of select="@value"/></param>
+ </data>
+</element>
+</correct>
+<xsl:call-template name="valid"/>
+</testCase>
+
+<testCase>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="{../@name}">
+ <param name="length"><xsl:value-of select="@value + 1"/></param>
+ </data>
+</element>
+</correct>
+<xsl:call-template name="invalid"/>
+</testCase>
+
+<xsl:if test="@value != 0">
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="{../@name}">
+ <param name="length"><xsl:value-of select="@value - 1"/></param>
+ </data>
+ </element>
+ </correct>
+ <xsl:call-template name="invalid"/>
+ </testCase>
+</xsl:if>
+
+</xsl:template>
+
+<xsl:template match="lessThan">
+<testCase>
+<correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="{../@name}">
+ <param name="minExclusive">
+ <xsl:value-of select="value[1]"/>
+ </param>
+ </data>
+ </element>
+</correct>
+<valid>
+<doc>
+<xsl:value-of select="value[2]"/>
+</doc>
+</valid>
+<invalid>
+<doc>
+<xsl:value-of select="value[1]"/>
+</doc>
+</invalid>
+</testCase>
+<testCase>
+<correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="{../@name}">
+ <param name="minExclusive">
+ <xsl:value-of select="value[2]"/>
+ </param>
+ </data>
+ </element>
+</correct>
+<invalid>
+<doc>
+<xsl:value-of select="value[1]"/>
+</doc>
+</invalid>
+<invalid>
+<doc>
+<xsl:value-of select="value[2]"/>
+</doc>
+</invalid>
+</testCase>
+</xsl:template>
+
+<xsl:template match="incomparable">
+<testCase>
+<correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="{../@name}">
+ <param name="minExclusive">
+ <xsl:value-of select="value[1]"/>
+ </param>
+ </data>
+ </element>
+</correct>
+<invalid>
+<doc>
+<xsl:value-of select="value[2]"/>
+</doc>
+</invalid>
+<invalid>
+<doc>
+<xsl:value-of select="value[1]"/>
+</doc>
+</invalid>
+</testCase>
+<testCase>
+<correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="{../@name}">
+ <param name="minExclusive">
+ <xsl:value-of select="value[2]"/>
+ </param>
+ </data>
+ </element>
+</correct>
+<invalid>
+<doc>
+<xsl:value-of select="value[1]"/>
+</doc>
+</invalid>
+<invalid>
+<doc>
+<xsl:value-of select="value[2]"/>
+</doc>
+</invalid>
+</testCase>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/libxml2/test/xsdtest/xsdtestsuite.xml b/libxml2/test/xsdtest/xsdtestsuite.xml
new file mode 100644
index 0000000..1c91cb9
--- /dev/null
+++ b/libxml2/test/xsdtest/xsdtestsuite.xml
@@ -0,0 +1,5286 @@
+<?xml version="1.0" encoding="utf-8"?>
+<testSuite>
+ <testSuite>
+ <documentation>Datatype dateTime</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="dateTime"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>2001-12-01T19:45:00</doc>
+ </valid>
+ <valid>
+ <doc>2001-12-01T19:45:00Z</doc>
+ </valid>
+ <valid>
+ <doc>2001-12-01T19:45:00-11:59</doc>
+ </valid>
+ <valid>
+ <doc>0001-01-12T00:00:00+12:00</doc>
+ </valid>
+ <invalid>
+ <doc>2001-12-1T19:45:00+24:00</doc>
+ </invalid>
+ <invalid>
+ <doc>2001-12-1T19:45:00</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="dateTime">2001-12-01T19:45:00</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>2001-12-01T19:45:00.00</doc>
+ </valid>
+ <invalid>
+ <doc>2001-12-01T19:45:00Z</doc>
+ </invalid>
+ <invalid>
+ <doc>2001-12-01T19:45:00.00Z</doc>
+ </invalid>
+ <invalid>
+ <doc>2001-12-01T20:45:00+01:00</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="dateTime">2001-12-01T19:45:00Z</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>2001-12-01T19:45:00.00Z</doc>
+ </valid>
+ <valid>
+ <doc>2001-12-01T20:45:00+01:00</doc>
+ </valid>
+ <invalid>
+ <doc>2001-12-01T19:45:00</doc>
+ </invalid>
+ <invalid>
+ <doc>2001-12-01T19:45:00.00</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype anyURI</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="anyURI"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>foobar</doc>
+ </valid>
+ <valid>
+ <doc>http://www.example.com</doc>
+ </valid>
+ <valid>
+ <doc>http://ji%6d@www.example.com</doc>
+ </valid>
+ <valid>
+ <doc>http://www.example.co%6d</doc>
+ </valid>
+ <valid>
+ <doc>nosuchscheme:stuff</doc>
+ </valid>
+ <invalid>
+ <doc>foo$bar:stuff</doc>
+ </invalid>
+ <invalid>
+ <doc>f%oobar</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype integer</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="integer"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>10</doc>
+ </valid>
+ <valid>
+ <doc>01</doc>
+ </valid>
+ <valid>
+ <doc>0123456789</doc>
+ </valid>
+ <valid>
+ <doc>+10</doc>
+ </valid>
+ <valid>
+ <doc>-10</doc>
+ </valid>
+ <invalid>
+ <doc>1.0</doc>
+ </invalid>
+ <invalid>
+ <doc>.1</doc>
+ </invalid>
+ <valid>
+ <doc>9999999999999999999999999999999</doc>
+ </valid>
+ <invalid>
+ <doc>1.</doc>
+ </invalid>
+ <invalid>
+ <doc>0.</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="integer">0</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>+0</doc>
+ </valid>
+ <valid>
+ <doc>-0</doc>
+ </valid>
+ <valid>
+ <doc>00</doc>
+ </valid>
+ <invalid>
+ <doc>10</doc>
+ </invalid>
+ <invalid>
+ <doc>+10</doc>
+ </invalid>
+ <invalid>
+ <doc>+0010</doc>
+ </invalid>
+ <invalid>
+ <doc>010</doc>
+ </invalid>
+ <invalid>
+ <doc>-10</doc>
+ </invalid>
+ <invalid>
+ <doc>-0010</doc>
+ </invalid>
+ <invalid>
+ <doc>-010</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="integer">10</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>+10</doc>
+ </valid>
+ <valid>
+ <doc>+0010</doc>
+ </valid>
+ <valid>
+ <doc>010</doc>
+ </valid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>+0</doc>
+ </invalid>
+ <invalid>
+ <doc>-0</doc>
+ </invalid>
+ <invalid>
+ <doc>00</doc>
+ </invalid>
+ <invalid>
+ <doc>-10</doc>
+ </invalid>
+ <invalid>
+ <doc>-0010</doc>
+ </invalid>
+ <invalid>
+ <doc>-010</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="integer">-10</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>-0010</doc>
+ </valid>
+ <valid>
+ <doc>-010</doc>
+ </valid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>+0</doc>
+ </invalid>
+ <invalid>
+ <doc>-0</doc>
+ </invalid>
+ <invalid>
+ <doc>00</doc>
+ </invalid>
+ <invalid>
+ <doc>10</doc>
+ </invalid>
+ <invalid>
+ <doc>+10</doc>
+ </invalid>
+ <invalid>
+ <doc>+0010</doc>
+ </invalid>
+ <invalid>
+ <doc>010</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype duration</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>P1Y</doc>
+ </valid>
+ <valid>
+ <doc>P1Y0M2DT17H5M12S</doc>
+ </valid>
+ <valid>
+ <doc>-P1Y</doc>
+ </valid>
+ <valid>
+ <doc>P60D</doc>
+ </valid>
+ <valid>
+ <doc>PT24H</doc>
+ </valid>
+ <valid>
+ <doc>PT1.2S</doc>
+ </valid>
+ <invalid>
+ <doc>P24h</doc>
+ </invalid>
+ <invalid>
+ <doc>P24H</doc>
+ </invalid>
+ <invalid>
+ <doc>P1YT</doc>
+ </invalid>
+ <invalid>
+ <doc>P</doc>
+ </invalid>
+ <invalid>
+ <doc>-P</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="duration">-P6M</value>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P0Y</doc>
+ </invalid>
+ <invalid>
+ <doc>-P0Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P001Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P001Y0M</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y0M0DT0H0M0.0S</doc>
+ </invalid>
+ <invalid>
+ <doc>P6M</doc>
+ </invalid>
+ <invalid>
+ <doc>PT6M</doc>
+ </invalid>
+ <invalid>
+ <doc>PT1S</doc>
+ </invalid>
+ <invalid>
+ <doc>PT1.0S</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="duration">P0Y</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>-P0Y</doc>
+ </valid>
+ <invalid>
+ <doc>-P6M</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P001Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P001Y0M</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y0M0DT0H0M0.0S</doc>
+ </invalid>
+ <invalid>
+ <doc>P6M</doc>
+ </invalid>
+ <invalid>
+ <doc>PT6M</doc>
+ </invalid>
+ <invalid>
+ <doc>PT1S</doc>
+ </invalid>
+ <invalid>
+ <doc>PT1.0S</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="duration">P1Y</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>P001Y</doc>
+ </valid>
+ <valid>
+ <doc>P001Y0M</doc>
+ </valid>
+ <valid>
+ <doc>P1Y0M0DT0H0M0.0S</doc>
+ </valid>
+ <invalid>
+ <doc>-P6M</doc>
+ </invalid>
+ <invalid>
+ <doc>P0Y</doc>
+ </invalid>
+ <invalid>
+ <doc>-P0Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P6M</doc>
+ </invalid>
+ <invalid>
+ <doc>PT6M</doc>
+ </invalid>
+ <invalid>
+ <doc>PT1S</doc>
+ </invalid>
+ <invalid>
+ <doc>PT1.0S</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="duration">P6M</value>
+ </element>
+ </correct>
+ <invalid>
+ <doc>-P6M</doc>
+ </invalid>
+ <invalid>
+ <doc>P0Y</doc>
+ </invalid>
+ <invalid>
+ <doc>-P0Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P001Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P001Y0M</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y0M0DT0H0M0.0S</doc>
+ </invalid>
+ <invalid>
+ <doc>PT6M</doc>
+ </invalid>
+ <invalid>
+ <doc>PT1S</doc>
+ </invalid>
+ <invalid>
+ <doc>PT1.0S</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="duration">PT6M</value>
+ </element>
+ </correct>
+ <invalid>
+ <doc>-P6M</doc>
+ </invalid>
+ <invalid>
+ <doc>P0Y</doc>
+ </invalid>
+ <invalid>
+ <doc>-P0Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P001Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P001Y0M</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y0M0DT0H0M0.0S</doc>
+ </invalid>
+ <invalid>
+ <doc>P6M</doc>
+ </invalid>
+ <invalid>
+ <doc>PT1S</doc>
+ </invalid>
+ <invalid>
+ <doc>PT1.0S</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="duration">PT1S</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>PT1.0S</doc>
+ </valid>
+ <invalid>
+ <doc>-P6M</doc>
+ </invalid>
+ <invalid>
+ <doc>P0Y</doc>
+ </invalid>
+ <invalid>
+ <doc>-P0Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P001Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P001Y0M</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y0M0DT0H0M0.0S</doc>
+ </invalid>
+ <invalid>
+ <doc>P6M</doc>
+ </invalid>
+ <invalid>
+ <doc>PT6M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT1M</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>PT61S</doc>
+ </valid>
+ <invalid>
+ <doc>PT1M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT61S</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>PT1M</doc>
+ </invalid>
+ <invalid>
+ <doc>PT61S</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT59S</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>PT1M</doc>
+ </valid>
+ <invalid>
+ <doc>PT59S</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT1M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>PT59S</doc>
+ </invalid>
+ <invalid>
+ <doc>PT1M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT60S</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>PT1M</doc>
+ </invalid>
+ <invalid>
+ <doc>PT60S</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT1M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>PT60S</doc>
+ </invalid>
+ <invalid>
+ <doc>PT1M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT1H</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>PT61M</doc>
+ </valid>
+ <invalid>
+ <doc>PT1H</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT61M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>PT1H</doc>
+ </invalid>
+ <invalid>
+ <doc>PT61M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT59M</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>PT1H</doc>
+ </valid>
+ <invalid>
+ <doc>PT59M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT1H</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>PT59M</doc>
+ </invalid>
+ <invalid>
+ <doc>PT1H</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT60M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>PT1H</doc>
+ </invalid>
+ <invalid>
+ <doc>PT60M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT1H</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>PT60M</doc>
+ </invalid>
+ <invalid>
+ <doc>PT1H</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1D</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>PT25H</doc>
+ </valid>
+ <invalid>
+ <doc>P1D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT25H</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P1D</doc>
+ </invalid>
+ <invalid>
+ <doc>PT25H</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT23H</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>P1D</doc>
+ </valid>
+ <invalid>
+ <doc>PT23H</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>PT23H</doc>
+ </invalid>
+ <invalid>
+ <doc>P1D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>PT24H</doc>
+ </invalid>
+ <invalid>
+ <doc>P1D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">PT24H</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P1D</doc>
+ </invalid>
+ <invalid>
+ <doc>PT24H</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1Y</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>P13M</doc>
+ </valid>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P13M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P13M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P11M</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>P1Y</doc>
+ </valid>
+ <invalid>
+ <doc>P11M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1Y</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P11M</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P12M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P12M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1Y</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P12M</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P364D</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>P1Y</doc>
+ </valid>
+ <invalid>
+ <doc>P364D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1Y</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P364D</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1Y</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P365D</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P365D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P365D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1Y</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P366D</doc>
+ </invalid>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P366D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P366D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1Y</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>P367D</doc>
+ </valid>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P367D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P1Y</doc>
+ </invalid>
+ <invalid>
+ <doc>P367D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P149D</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>P5M</doc>
+ </valid>
+ <invalid>
+ <doc>P149D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P5M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P149D</doc>
+ </invalid>
+ <invalid>
+ <doc>P5M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P150D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P5M</doc>
+ </invalid>
+ <invalid>
+ <doc>P150D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P5M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P150D</doc>
+ </invalid>
+ <invalid>
+ <doc>P5M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P151D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P5M</doc>
+ </invalid>
+ <invalid>
+ <doc>P151D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P5M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P151D</doc>
+ </invalid>
+ <invalid>
+ <doc>P5M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P152D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P5M</doc>
+ </invalid>
+ <invalid>
+ <doc>P152D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P5M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P152D</doc>
+ </invalid>
+ <invalid>
+ <doc>P5M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P153D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P5M</doc>
+ </invalid>
+ <invalid>
+ <doc>P153D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P5M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P153D</doc>
+ </invalid>
+ <invalid>
+ <doc>P5M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P5M</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>P154D</doc>
+ </valid>
+ <invalid>
+ <doc>P5M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P154D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P5M</doc>
+ </invalid>
+ <invalid>
+ <doc>P154D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P27D</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>P1M</doc>
+ </valid>
+ <invalid>
+ <doc>P27D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P27D</doc>
+ </invalid>
+ <invalid>
+ <doc>P1M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P28D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P1M</doc>
+ </invalid>
+ <invalid>
+ <doc>P28D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P28D</doc>
+ </invalid>
+ <invalid>
+ <doc>P1M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P29D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P1M</doc>
+ </invalid>
+ <invalid>
+ <doc>P29D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P29D</doc>
+ </invalid>
+ <invalid>
+ <doc>P1M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P30D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P1M</doc>
+ </invalid>
+ <invalid>
+ <doc>P30D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P30D</doc>
+ </invalid>
+ <invalid>
+ <doc>P1M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P31D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P1M</doc>
+ </invalid>
+ <invalid>
+ <doc>P31D</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1M</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P31D</doc>
+ </invalid>
+ <invalid>
+ <doc>P1M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P1M</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>P32D</doc>
+ </valid>
+ <invalid>
+ <doc>P1M</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="duration">
+ <param name="minExclusive">P32D</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>P1M</doc>
+ </invalid>
+ <invalid>
+ <doc>P32D</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype time</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="time"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>12:45:00</doc>
+ </valid>
+ <valid>
+ <doc>12:45:00Z</doc>
+ </valid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype date</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="date"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>1886-12-01</doc>
+ </valid>
+ <valid>
+ <doc>1886-12-01Z</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="date">
+ <param name="minExclusive">1066-12-31</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>1900-01-01</doc>
+ </valid>
+ <invalid>
+ <doc>1066-12-31</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="date">
+ <param name="minExclusive">1900-01-01</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>1066-12-31</doc>
+ </invalid>
+ <invalid>
+ <doc>1900-01-01</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="date">
+ <param name="minExclusive">1900-01-01</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>1900-01-02</doc>
+ </valid>
+ <invalid>
+ <doc>1900-01-01</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="date">
+ <param name="minExclusive">1900-01-02</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>1900-01-01</doc>
+ </invalid>
+ <invalid>
+ <doc>1900-01-02</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype gYearMonth</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gYearMonth"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>1996-12</doc>
+ </valid>
+ <valid>
+ <doc>1996-01</doc>
+ </valid>
+ <valid>
+ <doc>1996-01Z</doc>
+ </valid>
+ <invalid>
+ <doc>1996-00</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="gYearMonth">1996-01</value>
+ </element>
+ </correct>
+ <invalid>
+ <doc>1996-01Z</doc>
+ </invalid>
+ <invalid>
+ <doc>1996-01+00:00</doc>
+ </invalid>
+ <invalid>
+ <doc>1996-01-00:00</doc>
+ </invalid>
+ <invalid>
+ <doc>1996-01+01:00</doc>
+ </invalid>
+ <invalid>
+ <doc>1996-01-01:00</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="gYearMonth">1996-01Z</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>1996-01+00:00</doc>
+ </valid>
+ <valid>
+ <doc>1996-01-00:00</doc>
+ </valid>
+ <invalid>
+ <doc>1996-01</doc>
+ </invalid>
+ <invalid>
+ <doc>1996-01+01:00</doc>
+ </invalid>
+ <invalid>
+ <doc>1996-01-01:00</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="gYearMonth">1996-01+01:00</value>
+ </element>
+ </correct>
+ <invalid>
+ <doc>1996-01</doc>
+ </invalid>
+ <invalid>
+ <doc>1996-01Z</doc>
+ </invalid>
+ <invalid>
+ <doc>1996-01+00:00</doc>
+ </invalid>
+ <invalid>
+ <doc>1996-01-00:00</doc>
+ </invalid>
+ <invalid>
+ <doc>1996-01-01:00</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="gYearMonth">1996-01-01:00</value>
+ </element>
+ </correct>
+ <invalid>
+ <doc>1996-01</doc>
+ </invalid>
+ <invalid>
+ <doc>1996-01Z</doc>
+ </invalid>
+ <invalid>
+ <doc>1996-01+00:00</doc>
+ </invalid>
+ <invalid>
+ <doc>1996-01-00:00</doc>
+ </invalid>
+ <invalid>
+ <doc>1996-01+01:00</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype gYear</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gYear"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>2001</doc>
+ </valid>
+ <valid>
+ <doc>2001Z</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gYear">
+ <param name="minExclusive">1999</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>2000</doc>
+ </valid>
+ <invalid>
+ <doc>1999</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gYear">
+ <param name="minExclusive">2000</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>1999</doc>
+ </invalid>
+ <invalid>
+ <doc>2000</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gYear">
+ <param name="minExclusive">1999+07:00</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>2000+07:00</doc>
+ </valid>
+ <invalid>
+ <doc>1999+07:00</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gYear">
+ <param name="minExclusive">2000+07:00</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>1999+07:00</doc>
+ </invalid>
+ <invalid>
+ <doc>2000+07:00</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype gMonthDay</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gMonthDay"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>--12-01</doc>
+ </valid>
+ <valid>
+ <doc>--12-01Z</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gMonthDay">
+ <param name="minExclusive">--12-01</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>--12-04</doc>
+ </valid>
+ <invalid>
+ <doc>--12-01</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gMonthDay">
+ <param name="minExclusive">--12-04</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>--12-01</doc>
+ </invalid>
+ <invalid>
+ <doc>--12-04</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gMonthDay">
+ <param name="minExclusive">--11-17</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>--12-04</doc>
+ </valid>
+ <invalid>
+ <doc>--11-17</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gMonthDay">
+ <param name="minExclusive">--12-04</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>--11-17</doc>
+ </invalid>
+ <invalid>
+ <doc>--12-04</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype gDay</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gDay"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>---20</doc>
+ </valid>
+ <valid>
+ <doc>---20Z</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gDay">
+ <param name="minExclusive">---01</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>---31</doc>
+ </valid>
+ <invalid>
+ <doc>---01</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gDay">
+ <param name="minExclusive">---31</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>---01</doc>
+ </invalid>
+ <invalid>
+ <doc>---31</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype gMonth</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gMonth"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>--12</doc>
+ </valid>
+ <valid>
+ <doc>--01</doc>
+ </valid>
+ <valid>
+ <doc>--01Z</doc>
+ </valid>
+ <valid>
+ <doc> --12 </doc>
+ </valid>
+ <invalid>
+ <doc>---01</doc>
+ </invalid>
+ <invalid>
+ <doc>--00</doc>
+ </invalid>
+ <invalid>
+ <doc>--13</doc>
+ </invalid>
+ <invalid>
+ <doc>- -13</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gMonth">
+ <param name="minExclusive">--01</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>--12</doc>
+ </valid>
+ <invalid>
+ <doc>--01</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gMonth">
+ <param name="minExclusive">--12</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>--01</doc>
+ </invalid>
+ <invalid>
+ <doc>--12</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gMonth">
+ <param name="minExclusive">--01</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>--02</doc>
+ </valid>
+ <invalid>
+ <doc>--01</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="gMonth">
+ <param name="minExclusive">--02</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>--01</doc>
+ </invalid>
+ <invalid>
+ <doc>--02</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype boolean</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="boolean"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>true</doc>
+ </valid>
+ <valid>
+ <doc>false</doc>
+ </valid>
+ <valid>
+ <doc>0</doc>
+ </valid>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <invalid>
+ <doc>00</doc>
+ </invalid>
+ <invalid>
+ <doc>00</doc>
+ </invalid>
+ <invalid>
+ <doc>01</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="boolean">true</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <invalid>
+ <doc>false</doc>
+ </invalid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="boolean">false</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>0</doc>
+ </valid>
+ <invalid>
+ <doc>true</doc>
+ </invalid>
+ <invalid>
+ <doc>1</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype base64Binary</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>AAAA</doc>
+ </valid>
+ <valid>
+ <doc>abcd efgh ijkl mnop qrst uvwx yzAB CDEF GHIJ KLMN OPQR
+STUV WXYZ 0123 4567 89+/</doc>
+ </valid>
+ <valid>
+ <doc>BA==</doc>
+ </valid>
+ <valid>
+ <doc></doc>
+ </valid>
+ <valid>
+ <doc>BA==</doc>
+ </valid>
+ <valid>
+ <doc>BQ==</doc>
+ </valid>
+ <valid>
+ <doc>Bg==</doc>
+ </valid>
+ <valid>
+ <doc>Bw==</doc>
+ </valid>
+ <valid>
+ <doc>BBA=</doc>
+ </valid>
+ <valid>
+ <doc>BBA=</doc>
+ </valid>
+ <valid>
+ <doc>BBE=</doc>
+ </valid>
+ <valid>
+ <doc>BBI=</doc>
+ </valid>
+ <valid>
+ <doc>BBM=</doc>
+ </valid>
+ <valid>
+ <doc>BBQ=</doc>
+ </valid>
+ <valid>
+ <doc>BBU=</doc>
+ </valid>
+ <valid>
+ <doc>BBY=</doc>
+ </valid>
+ <valid>
+ <doc>BBc=</doc>
+ </valid>
+ <valid>
+ <doc>BBg=</doc>
+ </valid>
+ <valid>
+ <doc>BBk=</doc>
+ </valid>
+ <valid>
+ <doc>BBo=</doc>
+ </valid>
+ <valid>
+ <doc>BBs=</doc>
+ </valid>
+ <valid>
+ <doc>BBw=</doc>
+ </valid>
+ <valid>
+ <doc>BB0=</doc>
+ </valid>
+ <valid>
+ <doc>BB4=</doc>
+ </valid>
+ <valid>
+ <doc>BB8=</doc>
+ </valid>
+ <invalid>
+ <doc>====</doc>
+ </invalid>
+ <invalid>
+ <doc>BB==</doc>
+ </invalid>
+ <invalid>
+ <doc>BBB=</doc>
+ </invalid>
+ <invalid>
+ <doc>B===</doc>
+ </invalid>
+ <invalid>
+ <doc>B</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="base64Binary">deadbeef</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>d
+&#13; e a d
+b eef </doc>
+ </valid>
+ <invalid>
+ <doc>DEADBEEF</doc>
+ </invalid>
+ <invalid>
+ <doc>D
+&#13; E A D
+B EEF </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="base64Binary">DEADBEEF</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>D
+&#13; E A D
+B EEF </doc>
+ </valid>
+ <invalid>
+ <doc>deadbeef</doc>
+ </invalid>
+ <invalid>
+ <doc>d
+&#13; e a d
+b eef </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">0</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc></doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">1</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc></doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">6</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>deadbeef</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">7</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>deadbeef</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">5</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>deadbeef</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">1</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>BA==</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">2</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>BA==</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">0</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>BA==</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">2</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>BBA=</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">3</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>BBA=</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">1</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>BBA=</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">3</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>dead</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">4</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>dead</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">2</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>dead</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">4</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>deadBA==</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">5</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>deadBA==</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="base64Binary">
+ <param name="length">3</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>deadBA==</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype hexBinary</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>deadbeef</doc>
+ </valid>
+ <valid>
+ <doc></doc>
+ </valid>
+ <valid>
+ <doc>0123456789ABCDEFabcdef</doc>
+ </valid>
+ <invalid>
+ <doc>00 00</doc>
+ </invalid>
+ <invalid>
+ <doc>00.00</doc>
+ </invalid>
+ <invalid>
+ <doc>0G</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="hexBinary">00</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>
+ 00
+ </doc>
+ </valid>
+ <invalid>
+ <doc>01</doc>
+ </invalid>
+ <invalid>
+ <doc>10</doc>
+ </invalid>
+ <invalid>
+ <doc>0a</doc>
+ </invalid>
+ <invalid>
+ <doc>0A</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="hexBinary">01</value>
+ </element>
+ </correct>
+ <invalid>
+ <doc>00</doc>
+ </invalid>
+ <invalid>
+ <doc>
+ 00
+ </doc>
+ </invalid>
+ <invalid>
+ <doc>10</doc>
+ </invalid>
+ <invalid>
+ <doc>0a</doc>
+ </invalid>
+ <invalid>
+ <doc>0A</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="hexBinary">10</value>
+ </element>
+ </correct>
+ <invalid>
+ <doc>00</doc>
+ </invalid>
+ <invalid>
+ <doc>
+ 00
+ </doc>
+ </invalid>
+ <invalid>
+ <doc>01</doc>
+ </invalid>
+ <invalid>
+ <doc>0a</doc>
+ </invalid>
+ <invalid>
+ <doc>0A</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="hexBinary">0a</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>0A</doc>
+ </valid>
+ <invalid>
+ <doc>00</doc>
+ </invalid>
+ <invalid>
+ <doc>
+ 00
+ </doc>
+ </invalid>
+ <invalid>
+ <doc>01</doc>
+ </invalid>
+ <invalid>
+ <doc>10</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary">
+ <param name="length">0</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc></doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary">
+ <param name="length">1</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc></doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary">
+ <param name="length">1</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>00</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary">
+ <param name="length">2</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>00</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary">
+ <param name="length">0</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>00</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary">
+ <param name="length">2</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>0000</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary">
+ <param name="length">3</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>0000</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary">
+ <param name="length">1</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>0000</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary">
+ <param name="length">2</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc> 0000 </doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary">
+ <param name="length">3</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc> 0000 </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary">
+ <param name="length">1</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc> 0000 </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary">
+ <param name="length">2</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>AAAA</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary">
+ <param name="length">3</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>AAAA</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="hexBinary">
+ <param name="length">1</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>AAAA</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype float</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="float"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>1.0</doc>
+ </valid>
+ <valid>
+ <doc>1.</doc>
+ </valid>
+ <valid>
+ <doc>.1</doc>
+ </valid>
+ <invalid>
+ <doc>- 1</doc>
+ </invalid>
+ <invalid>
+ <doc>1 .0</doc>
+ </invalid>
+ <invalid>
+ <doc>+INF</doc>
+ </invalid>
+ <invalid>
+ <doc>+NaN</doc>
+ </invalid>
+ <invalid>
+ <doc>-NaN</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="float">0</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>-0</doc>
+ </valid>
+ <valid>
+ <doc>+0</doc>
+ </valid>
+ <valid>
+ <doc> 0 </doc>
+ </valid>
+ <valid>
+ <doc> 0. </doc>
+ </valid>
+ <valid>
+ <doc> .0 </doc>
+ </valid>
+ <valid>
+ <doc> 0.0 </doc>
+ </valid>
+ <valid>
+ <doc> 0e0 </doc>
+ </valid>
+ <valid>
+ <doc> 0E0 </doc>
+ </valid>
+ <valid>
+ <doc> 0E+0 </doc>
+ </valid>
+ <valid>
+ <doc> 0E-0 </doc>
+ </valid>
+ <invalid>
+ <doc>1E0</doc>
+ </invalid>
+ <invalid>
+ <doc>0.1E1</doc>
+ </invalid>
+ <invalid>
+ <doc>10E-1</doc>
+ </invalid>
+ <invalid>
+ <doc>+1</doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc>INF</doc>
+ </invalid>
+ <invalid>
+ <doc>INF </doc>
+ </invalid>
+ <invalid>
+ <doc>-INF</doc>
+ </invalid>
+ <invalid>
+ <doc>-INF </doc>
+ </invalid>
+ <invalid>
+ <doc>NaN</doc>
+ </invalid>
+ <invalid>
+ <doc> NaN </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="float">1E0</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>0.1E1</doc>
+ </valid>
+ <valid>
+ <doc>10E-1</doc>
+ </valid>
+ <valid>
+ <doc>+1</doc>
+ </valid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>-0</doc>
+ </invalid>
+ <invalid>
+ <doc>+0</doc>
+ </invalid>
+ <invalid>
+ <doc> 0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0. </doc>
+ </invalid>
+ <invalid>
+ <doc> .0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0.0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0e0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E+0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E-0 </doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc>INF</doc>
+ </invalid>
+ <invalid>
+ <doc>INF </doc>
+ </invalid>
+ <invalid>
+ <doc>-INF</doc>
+ </invalid>
+ <invalid>
+ <doc>-INF </doc>
+ </invalid>
+ <invalid>
+ <doc>NaN</doc>
+ </invalid>
+ <invalid>
+ <doc> NaN </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="float">-1</value>
+ </element>
+ </correct>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>-0</doc>
+ </invalid>
+ <invalid>
+ <doc>+0</doc>
+ </invalid>
+ <invalid>
+ <doc> 0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0. </doc>
+ </invalid>
+ <invalid>
+ <doc> .0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0.0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0e0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E+0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E-0 </doc>
+ </invalid>
+ <invalid>
+ <doc>1E0</doc>
+ </invalid>
+ <invalid>
+ <doc>0.1E1</doc>
+ </invalid>
+ <invalid>
+ <doc>10E-1</doc>
+ </invalid>
+ <invalid>
+ <doc>+1</doc>
+ </invalid>
+ <invalid>
+ <doc>INF</doc>
+ </invalid>
+ <invalid>
+ <doc>INF </doc>
+ </invalid>
+ <invalid>
+ <doc>-INF</doc>
+ </invalid>
+ <invalid>
+ <doc>-INF </doc>
+ </invalid>
+ <invalid>
+ <doc>NaN</doc>
+ </invalid>
+ <invalid>
+ <doc> NaN </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="float">INF</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>INF </doc>
+ </valid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>-0</doc>
+ </invalid>
+ <invalid>
+ <doc>+0</doc>
+ </invalid>
+ <invalid>
+ <doc> 0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0. </doc>
+ </invalid>
+ <invalid>
+ <doc> .0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0.0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0e0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E+0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E-0 </doc>
+ </invalid>
+ <invalid>
+ <doc>1E0</doc>
+ </invalid>
+ <invalid>
+ <doc>0.1E1</doc>
+ </invalid>
+ <invalid>
+ <doc>10E-1</doc>
+ </invalid>
+ <invalid>
+ <doc>+1</doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc>-INF</doc>
+ </invalid>
+ <invalid>
+ <doc>-INF </doc>
+ </invalid>
+ <invalid>
+ <doc>NaN</doc>
+ </invalid>
+ <invalid>
+ <doc> NaN </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="float">-INF</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>-INF </doc>
+ </valid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>-0</doc>
+ </invalid>
+ <invalid>
+ <doc>+0</doc>
+ </invalid>
+ <invalid>
+ <doc> 0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0. </doc>
+ </invalid>
+ <invalid>
+ <doc> .0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0.0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0e0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E+0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E-0 </doc>
+ </invalid>
+ <invalid>
+ <doc>1E0</doc>
+ </invalid>
+ <invalid>
+ <doc>0.1E1</doc>
+ </invalid>
+ <invalid>
+ <doc>10E-1</doc>
+ </invalid>
+ <invalid>
+ <doc>+1</doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc>INF</doc>
+ </invalid>
+ <invalid>
+ <doc>INF </doc>
+ </invalid>
+ <invalid>
+ <doc>NaN</doc>
+ </invalid>
+ <invalid>
+ <doc> NaN </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="float">NaN</value>
+ </element>
+ </correct>
+ <valid>
+ <doc> NaN </doc>
+ </valid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>-0</doc>
+ </invalid>
+ <invalid>
+ <doc>+0</doc>
+ </invalid>
+ <invalid>
+ <doc> 0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0. </doc>
+ </invalid>
+ <invalid>
+ <doc> .0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0.0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0e0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E+0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E-0 </doc>
+ </invalid>
+ <invalid>
+ <doc>1E0</doc>
+ </invalid>
+ <invalid>
+ <doc>0.1E1</doc>
+ </invalid>
+ <invalid>
+ <doc>10E-1</doc>
+ </invalid>
+ <invalid>
+ <doc>+1</doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc>INF</doc>
+ </invalid>
+ <invalid>
+ <doc>INF </doc>
+ </invalid>
+ <invalid>
+ <doc>-INF</doc>
+ </invalid>
+ <invalid>
+ <doc>-INF </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="float">
+ <param name="minExclusive">-INF</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>-1000</doc>
+ </valid>
+ <invalid>
+ <doc>-INF</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="float">
+ <param name="minExclusive">-1000</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>-INF</doc>
+ </invalid>
+ <invalid>
+ <doc>-1000</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="float">
+ <param name="minExclusive">1000</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>INF</doc>
+ </valid>
+ <invalid>
+ <doc>1000</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="float">
+ <param name="minExclusive">INF</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>1000</doc>
+ </invalid>
+ <invalid>
+ <doc>INF</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="float">
+ <param name="minExclusive">-1</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="float">
+ <param name="minExclusive">1</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc>1</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="float">
+ <param name="minExclusive">0</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="float">
+ <param name="minExclusive">1</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>1</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="float">
+ <param name="minExclusive">-1</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>0</doc>
+ </valid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="float">
+ <param name="minExclusive">0</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype double</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="double"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>1.0</doc>
+ </valid>
+ <valid>
+ <doc>1.</doc>
+ </valid>
+ <valid>
+ <doc>.1</doc>
+ </valid>
+ <invalid>
+ <doc>- 1</doc>
+ </invalid>
+ <invalid>
+ <doc>1 .0</doc>
+ </invalid>
+ <invalid>
+ <doc>+INF</doc>
+ </invalid>
+ <invalid>
+ <doc>+NaN</doc>
+ </invalid>
+ <invalid>
+ <doc>-NaN</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="double">0</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>-0</doc>
+ </valid>
+ <valid>
+ <doc>+0</doc>
+ </valid>
+ <valid>
+ <doc> 0 </doc>
+ </valid>
+ <valid>
+ <doc> 0. </doc>
+ </valid>
+ <valid>
+ <doc> .0 </doc>
+ </valid>
+ <valid>
+ <doc> 0.0 </doc>
+ </valid>
+ <valid>
+ <doc> 0e0 </doc>
+ </valid>
+ <valid>
+ <doc> 0E0 </doc>
+ </valid>
+ <valid>
+ <doc> 0E+0 </doc>
+ </valid>
+ <valid>
+ <doc> 0E-0 </doc>
+ </valid>
+ <invalid>
+ <doc>1E0</doc>
+ </invalid>
+ <invalid>
+ <doc>0.1E1</doc>
+ </invalid>
+ <invalid>
+ <doc>10E-1</doc>
+ </invalid>
+ <invalid>
+ <doc>+1</doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc>INF</doc>
+ </invalid>
+ <invalid>
+ <doc>INF </doc>
+ </invalid>
+ <invalid>
+ <doc>-INF</doc>
+ </invalid>
+ <invalid>
+ <doc>-INF </doc>
+ </invalid>
+ <invalid>
+ <doc>NaN</doc>
+ </invalid>
+ <invalid>
+ <doc> NaN </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="double">1E0</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>0.1E1</doc>
+ </valid>
+ <valid>
+ <doc>10E-1</doc>
+ </valid>
+ <valid>
+ <doc>+1</doc>
+ </valid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>-0</doc>
+ </invalid>
+ <invalid>
+ <doc>+0</doc>
+ </invalid>
+ <invalid>
+ <doc> 0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0. </doc>
+ </invalid>
+ <invalid>
+ <doc> .0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0.0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0e0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E+0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E-0 </doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc>INF</doc>
+ </invalid>
+ <invalid>
+ <doc>INF </doc>
+ </invalid>
+ <invalid>
+ <doc>-INF</doc>
+ </invalid>
+ <invalid>
+ <doc>-INF </doc>
+ </invalid>
+ <invalid>
+ <doc>NaN</doc>
+ </invalid>
+ <invalid>
+ <doc> NaN </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="double">-1</value>
+ </element>
+ </correct>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>-0</doc>
+ </invalid>
+ <invalid>
+ <doc>+0</doc>
+ </invalid>
+ <invalid>
+ <doc> 0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0. </doc>
+ </invalid>
+ <invalid>
+ <doc> .0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0.0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0e0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E+0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E-0 </doc>
+ </invalid>
+ <invalid>
+ <doc>1E0</doc>
+ </invalid>
+ <invalid>
+ <doc>0.1E1</doc>
+ </invalid>
+ <invalid>
+ <doc>10E-1</doc>
+ </invalid>
+ <invalid>
+ <doc>+1</doc>
+ </invalid>
+ <invalid>
+ <doc>INF</doc>
+ </invalid>
+ <invalid>
+ <doc>INF </doc>
+ </invalid>
+ <invalid>
+ <doc>-INF</doc>
+ </invalid>
+ <invalid>
+ <doc>-INF </doc>
+ </invalid>
+ <invalid>
+ <doc>NaN</doc>
+ </invalid>
+ <invalid>
+ <doc> NaN </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="double">INF</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>INF </doc>
+ </valid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>-0</doc>
+ </invalid>
+ <invalid>
+ <doc>+0</doc>
+ </invalid>
+ <invalid>
+ <doc> 0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0. </doc>
+ </invalid>
+ <invalid>
+ <doc> .0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0.0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0e0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E+0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E-0 </doc>
+ </invalid>
+ <invalid>
+ <doc>1E0</doc>
+ </invalid>
+ <invalid>
+ <doc>0.1E1</doc>
+ </invalid>
+ <invalid>
+ <doc>10E-1</doc>
+ </invalid>
+ <invalid>
+ <doc>+1</doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc>-INF</doc>
+ </invalid>
+ <invalid>
+ <doc>-INF </doc>
+ </invalid>
+ <invalid>
+ <doc>NaN</doc>
+ </invalid>
+ <invalid>
+ <doc> NaN </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="double">-INF</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>-INF </doc>
+ </valid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>-0</doc>
+ </invalid>
+ <invalid>
+ <doc>+0</doc>
+ </invalid>
+ <invalid>
+ <doc> 0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0. </doc>
+ </invalid>
+ <invalid>
+ <doc> .0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0.0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0e0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E+0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E-0 </doc>
+ </invalid>
+ <invalid>
+ <doc>1E0</doc>
+ </invalid>
+ <invalid>
+ <doc>0.1E1</doc>
+ </invalid>
+ <invalid>
+ <doc>10E-1</doc>
+ </invalid>
+ <invalid>
+ <doc>+1</doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc>INF</doc>
+ </invalid>
+ <invalid>
+ <doc>INF </doc>
+ </invalid>
+ <invalid>
+ <doc>NaN</doc>
+ </invalid>
+ <invalid>
+ <doc> NaN </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="double">NaN</value>
+ </element>
+ </correct>
+ <valid>
+ <doc> NaN </doc>
+ </valid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>-0</doc>
+ </invalid>
+ <invalid>
+ <doc>+0</doc>
+ </invalid>
+ <invalid>
+ <doc> 0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0. </doc>
+ </invalid>
+ <invalid>
+ <doc> .0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0.0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0e0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E+0 </doc>
+ </invalid>
+ <invalid>
+ <doc> 0E-0 </doc>
+ </invalid>
+ <invalid>
+ <doc>1E0</doc>
+ </invalid>
+ <invalid>
+ <doc>0.1E1</doc>
+ </invalid>
+ <invalid>
+ <doc>10E-1</doc>
+ </invalid>
+ <invalid>
+ <doc>+1</doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc>INF</doc>
+ </invalid>
+ <invalid>
+ <doc>INF </doc>
+ </invalid>
+ <invalid>
+ <doc>-INF</doc>
+ </invalid>
+ <invalid>
+ <doc>-INF </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="double">
+ <param name="minExclusive">-INF</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>-1000</doc>
+ </valid>
+ <invalid>
+ <doc>-INF</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="double">
+ <param name="minExclusive">-1000</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>-INF</doc>
+ </invalid>
+ <invalid>
+ <doc>-1000</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="double">
+ <param name="minExclusive">1000</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>INF</doc>
+ </valid>
+ <invalid>
+ <doc>1000</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="double">
+ <param name="minExclusive">INF</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>1000</doc>
+ </invalid>
+ <invalid>
+ <doc>INF</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="double">
+ <param name="minExclusive">-1</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="double">
+ <param name="minExclusive">1</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc>1</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="double">
+ <param name="minExclusive">0</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="double">
+ <param name="minExclusive">1</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>1</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="double">
+ <param name="minExclusive">-1</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>0</doc>
+ </valid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="double">
+ <param name="minExclusive">0</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype QName</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="QName"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>foo</doc>
+ </valid>
+ <valid>
+ <doc xmlns:x="http://www.example.com">x:foo</doc>
+ </valid>
+ <invalid>
+ <doc>y:foo</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com" type="QName">foo</value>
+ </element>
+ </correct>
+ <valid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> foo</doc>
+ </valid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">x:foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> x:foo </doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">x:bar</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:bar</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">y:foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">y:bar</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com" type="QName">x:foo</value>
+ </element>
+ </correct>
+ <valid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> x:foo </doc>
+ </valid>
+ <valid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:foo</doc>
+ </valid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">x:bar</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:bar</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">y:foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">y:bar</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com" type="QName">x:bar</value>
+ </element>
+ </correct>
+ <valid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:bar</doc>
+ </valid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">x:foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> x:foo </doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">y:foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">y:bar</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com" type="QName">y:foo</value>
+ </element>
+ </correct>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">x:foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> x:foo </doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">x:bar</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:bar</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">y:bar</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com" type="QName">y:bar</value>
+ </element>
+ </correct>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">x:foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> x:foo </doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:foo</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">x:bar</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:bar</doc>
+ </invalid>
+ <invalid>
+ <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">y:foo</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype NOTATION</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="NOTATION"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>foo</doc>
+ </valid>
+ <valid>
+ <doc xmlns:x="http://www.example.com">x:foo</doc>
+ </valid>
+ <invalid>
+ <doc>y:foo</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype decimal</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="decimal"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>1.0</doc>
+ </valid>
+ <valid>
+ <doc>1.</doc>
+ </valid>
+ <valid>
+ <doc>.1</doc>
+ </valid>
+ <valid>
+ <doc>+1.0</doc>
+ </valid>
+ <valid>
+ <doc>-1.0</doc>
+ </valid>
+ <valid>
+ <doc> 1 </doc>
+ </valid>
+ <valid>
+ <doc>99999999999999999999999999999999999999999999999999999999999999999</doc>
+ </valid>
+ <valid>
+ <doc>-99999999999999999999999999999999999999999999999999999999999999999</doc>
+ </valid>
+ <invalid>
+ <doc>junk</doc>
+ </invalid>
+ <invalid>
+ <doc>--1</doc>
+ </invalid>
+ <invalid>
+ <doc>++1</doc>
+ </invalid>
+ <invalid>
+ <doc>+-1</doc>
+ </invalid>
+ <invalid>
+ <doc>1.2.</doc>
+ </invalid>
+ <invalid>
+ <doc>..1</doc>
+ </invalid>
+ <invalid>
+ <doc>1..</doc>
+ </invalid>
+ <invalid>
+ <doc>1 .2</doc>
+ </invalid>
+ <invalid>
+ <doc>1+</doc>
+ </invalid>
+ <invalid>
+ <doc>+ 1</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="decimal">
+ <param name="minExclusive">0</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="decimal">
+ <param name="minExclusive">1</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>1</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype nonPositiveInteger</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="nonPositiveInteger"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>-1</doc>
+ </valid>
+ <valid>
+ <doc>0</doc>
+ </valid>
+ <valid>
+ <doc>-0</doc>
+ </valid>
+ <invalid>
+ <doc>1</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype nonNegativeInteger</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="nonNegativeInteger"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <valid>
+ <doc>0</doc>
+ </valid>
+ <valid>
+ <doc>+1</doc>
+ </valid>
+ <valid>
+ <doc>+0</doc>
+ </valid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype positiveInteger</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="positiveInteger"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>+1</doc>
+ </valid>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype negativeInteger</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="negativeInteger"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>-1</doc>
+ </valid>
+ <invalid>
+ <doc>+1</doc>
+ </invalid>
+ <invalid>
+ <doc>0</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype long</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="long"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <valid>
+ <doc>+1</doc>
+ </valid>
+ <valid>
+ <doc>0</doc>
+ </valid>
+ <valid>
+ <doc> 0 </doc>
+ </valid>
+ <invalid>
+ <doc>1 2</doc>
+ </invalid>
+ <invalid>
+ <doc>9999999999999999999999999999999999999999999999999999999999999999999999999</doc>
+ </invalid>
+ <valid>
+ <doc>9223372036854775807</doc>
+ </valid>
+ <valid>
+ <doc>-9223372036854775808</doc>
+ </valid>
+ <invalid>
+ <doc>9223372036854775808</doc>
+ </invalid>
+ <invalid>
+ <doc>-9223372036854775809</doc>
+ </invalid>
+ <invalid>
+ <doc></doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype int</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="int"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <valid>
+ <doc>01</doc>
+ </valid>
+ <valid>
+ <doc> 1 </doc>
+ </valid>
+ <valid>
+ <doc>2147483647</doc>
+ </valid>
+ <valid>
+ <doc>-2147483648</doc>
+ </valid>
+ <invalid>
+ <doc>2147483648</doc>
+ </invalid>
+ <invalid>
+ <doc>-2147483649</doc>
+ </invalid>
+ <invalid>
+ <doc>9999999999999999999999999999999999999999999999999999999999999999999999999</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="int">1</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>+1</doc>
+ </valid>
+ <valid>
+ <doc> 1 </doc>
+ </valid>
+ <valid>
+ <doc>001</doc>
+ </valid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc> -1 </doc>
+ </invalid>
+ <invalid>
+ <doc>-001</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="int">-1</value>
+ </element>
+ </correct>
+ <valid>
+ <doc> -1 </doc>
+ </valid>
+ <valid>
+ <doc>-001</doc>
+ </valid>
+ <invalid>
+ <doc>1</doc>
+ </invalid>
+ <invalid>
+ <doc>+1</doc>
+ </invalid>
+ <invalid>
+ <doc> 1 </doc>
+ </invalid>
+ <invalid>
+ <doc>001</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype short</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="short"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <valid>
+ <doc>32767</doc>
+ </valid>
+ <valid>
+ <doc>-32768</doc>
+ </valid>
+ <invalid>
+ <doc>32768</doc>
+ </invalid>
+ <invalid>
+ <doc>-32769</doc>
+ </invalid>
+ <invalid>
+ <doc>9999999999999999999999999999999999999999999999999999999999999999999999999</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="short">1</value>
+ </element>
+ </correct>
+ <valid>
+ <doc>+1</doc>
+ </valid>
+ <valid>
+ <doc> 1 </doc>
+ </valid>
+ <valid>
+ <doc>001</doc>
+ </valid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <invalid>
+ <doc> -1 </doc>
+ </invalid>
+ <invalid>
+ <doc>-001</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="short">-1</value>
+ </element>
+ </correct>
+ <valid>
+ <doc> -1 </doc>
+ </valid>
+ <valid>
+ <doc>-001</doc>
+ </valid>
+ <invalid>
+ <doc>1</doc>
+ </invalid>
+ <invalid>
+ <doc>+1</doc>
+ </invalid>
+ <invalid>
+ <doc> 1 </doc>
+ </invalid>
+ <invalid>
+ <doc>001</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype byte</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="byte"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <valid>
+ <doc>127</doc>
+ </valid>
+ <valid>
+ <doc>-128</doc>
+ </valid>
+ <invalid>
+ <doc>128</doc>
+ </invalid>
+ <invalid>
+ <doc>-129</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype unsignedLong</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="unsignedLong"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <valid>
+ <doc>+1</doc>
+ </valid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ <valid>
+ <doc>0</doc>
+ </valid>
+ <valid>
+ <doc>18446744073709551615</doc>
+ </valid>
+ <invalid>
+ <doc>18446744073709551616</doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype unsignedInt</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="unsignedInt"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <valid>
+ <doc>+1</doc>
+ </valid>
+ <valid>
+ <doc>0</doc>
+ </valid>
+ <valid>
+ <doc>4294967295</doc>
+ </valid>
+ <invalid>
+ <doc>4294967296</doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype unsignedShort</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="unsignedShort"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <valid>
+ <doc>+1</doc>
+ </valid>
+ <valid>
+ <doc>0</doc>
+ </valid>
+ <valid>
+ <doc>65535</doc>
+ </valid>
+ <invalid>
+ <doc>65536</doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype unsignedByte</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="unsignedByte"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>1</doc>
+ </valid>
+ <valid>
+ <doc>+1</doc>
+ </valid>
+ <valid>
+ <doc>0</doc>
+ </valid>
+ <valid>
+ <doc>255</doc>
+ </valid>
+ <invalid>
+ <doc>256</doc>
+ </invalid>
+ <invalid>
+ <doc>-1</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype string</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="string"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>any thing at all!</doc>
+ </valid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype normalizedString</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="normalizedString"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>any thing at all!</doc>
+ </valid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype token</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="token"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>any thing at all!</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="token"></value>
+ </element>
+ </correct>
+ <valid>
+ <doc> </doc>
+ </valid>
+ <valid>
+ <doc>
+&#13; </doc>
+ </valid>
+ <invalid>
+ <doc>x </doc>
+ </invalid>
+ <invalid>
+ <doc>x
+</doc>
+ </invalid>
+ <invalid>
+ <doc>x&#13;</doc>
+ </invalid>
+ <invalid>
+ <doc>x </doc>
+ </invalid>
+ <invalid>
+ <doc> x</doc>
+ </invalid>
+ <invalid>
+ <doc>
+x</doc>
+ </invalid>
+ <invalid>
+ <doc>&#13;x</doc>
+ </invalid>
+ <invalid>
+ <doc> x</doc>
+ </invalid>
+ <invalid>
+ <doc>
+&#13; x
+&#13; </doc>
+ </invalid>
+ <invalid>
+ <doc>x y </doc>
+ </invalid>
+ <invalid>
+ <doc>x y
+</doc>
+ </invalid>
+ <invalid>
+ <doc>x y&#13;</doc>
+ </invalid>
+ <invalid>
+ <doc>x y </doc>
+ </invalid>
+ <invalid>
+ <doc>x y</doc>
+ </invalid>
+ <invalid>
+ <doc>x
+y</doc>
+ </invalid>
+ <invalid>
+ <doc>x&#13;y</doc>
+ </invalid>
+ <invalid>
+ <doc>x y</doc>
+ </invalid>
+ <invalid>
+ <doc> x y</doc>
+ </invalid>
+ <invalid>
+ <doc>
+x y</doc>
+ </invalid>
+ <invalid>
+ <doc>&#13;x y</doc>
+ </invalid>
+ <invalid>
+ <doc> x y</doc>
+ </invalid>
+ <invalid>
+ <doc>
+&#13; x
+&#13; y
+&#13; </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="token">x </value>
+ </element>
+ </correct>
+ <valid>
+ <doc>x
+</doc>
+ </valid>
+ <valid>
+ <doc>x&#13;</doc>
+ </valid>
+ <valid>
+ <doc>x </doc>
+ </valid>
+ <valid>
+ <doc> x</doc>
+ </valid>
+ <valid>
+ <doc>
+x</doc>
+ </valid>
+ <valid>
+ <doc>&#13;x</doc>
+ </valid>
+ <valid>
+ <doc> x</doc>
+ </valid>
+ <valid>
+ <doc>
+&#13; x
+&#13; </doc>
+ </valid>
+ <invalid>
+ <doc></doc>
+ </invalid>
+ <invalid>
+ <doc> </doc>
+ </invalid>
+ <invalid>
+ <doc>
+&#13; </doc>
+ </invalid>
+ <invalid>
+ <doc>x y </doc>
+ </invalid>
+ <invalid>
+ <doc>x y
+</doc>
+ </invalid>
+ <invalid>
+ <doc>x y&#13;</doc>
+ </invalid>
+ <invalid>
+ <doc>x y </doc>
+ </invalid>
+ <invalid>
+ <doc>x y</doc>
+ </invalid>
+ <invalid>
+ <doc>x
+y</doc>
+ </invalid>
+ <invalid>
+ <doc>x&#13;y</doc>
+ </invalid>
+ <invalid>
+ <doc>x y</doc>
+ </invalid>
+ <invalid>
+ <doc> x y</doc>
+ </invalid>
+ <invalid>
+ <doc>
+x y</doc>
+ </invalid>
+ <invalid>
+ <doc>&#13;x y</doc>
+ </invalid>
+ <invalid>
+ <doc> x y</doc>
+ </invalid>
+ <invalid>
+ <doc>
+&#13; x
+&#13; y
+&#13; </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="token">x y </value>
+ </element>
+ </correct>
+ <valid>
+ <doc>x y
+</doc>
+ </valid>
+ <valid>
+ <doc>x y&#13;</doc>
+ </valid>
+ <valid>
+ <doc>x y </doc>
+ </valid>
+ <valid>
+ <doc>x y</doc>
+ </valid>
+ <valid>
+ <doc>x
+y</doc>
+ </valid>
+ <valid>
+ <doc>x&#13;y</doc>
+ </valid>
+ <valid>
+ <doc>x y</doc>
+ </valid>
+ <valid>
+ <doc> x y</doc>
+ </valid>
+ <valid>
+ <doc>
+x y</doc>
+ </valid>
+ <valid>
+ <doc>&#13;x y</doc>
+ </valid>
+ <valid>
+ <doc> x y</doc>
+ </valid>
+ <valid>
+ <doc>
+&#13; x
+&#13; y
+&#13; </doc>
+ </valid>
+ <invalid>
+ <doc></doc>
+ </invalid>
+ <invalid>
+ <doc> </doc>
+ </invalid>
+ <invalid>
+ <doc>
+&#13; </doc>
+ </invalid>
+ <invalid>
+ <doc>x </doc>
+ </invalid>
+ <invalid>
+ <doc>x
+</doc>
+ </invalid>
+ <invalid>
+ <doc>x&#13;</doc>
+ </invalid>
+ <invalid>
+ <doc>x </doc>
+ </invalid>
+ <invalid>
+ <doc> x</doc>
+ </invalid>
+ <invalid>
+ <doc>
+x</doc>
+ </invalid>
+ <invalid>
+ <doc>&#13;x</doc>
+ </invalid>
+ <invalid>
+ <doc> x</doc>
+ </invalid>
+ <invalid>
+ <doc>
+&#13; x
+&#13; </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="token">
+ <param name="length">0</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc></doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="token">
+ <param name="length">1</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc></doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="token">
+ <param name="length">1</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>x</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="token">
+ <param name="length">2</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>x</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="token">
+ <param name="length">0</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>x</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="token">
+ <param name="length">1</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc> x </doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="token">
+ <param name="length">2</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc> x </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="token">
+ <param name="length">0</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc> x </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="token">
+ <param name="length">1</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>𐠀</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="token">
+ <param name="length">2</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>𐠀</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="token">
+ <param name="length">0</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>𐠀</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype language</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="language"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>en</doc>
+ </valid>
+ <valid>
+ <doc>en-UK</doc>
+ </valid>
+ <valid>
+ <doc>i-cherokee</doc>
+ </valid>
+ <valid>
+ <doc>x-klingon</doc>
+ </valid>
+ <valid>
+ <doc>en-uk-scotland</doc>
+ </valid>
+ <invalid>
+ <doc>en.UK</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype Name</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="Name"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>foo</doc>
+ </valid>
+ <valid>
+ <doc>_0123456789</doc>
+ </valid>
+ <invalid>
+ <doc>.</doc>
+ </invalid>
+ <valid>
+ <doc>:</doc>
+ </valid>
+ <invalid>
+ <doc>-</doc>
+ </invalid>
+ <invalid>
+ <doc>1234</doc>
+ </invalid>
+ <valid>
+ <doc> foo </doc>
+ </valid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype NCName</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="NCName"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>foo</doc>
+ </valid>
+ <invalid>
+ <doc>foo:bar</doc>
+ </invalid>
+ <invalid>
+ <doc>0foo</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="NCName">foo</value>
+ </element>
+ </correct>
+ <valid>
+ <doc> foo </doc>
+ </valid>
+ <invalid>
+ <doc>FOO</doc>
+ </invalid>
+ <invalid>
+ <doc> FOO </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <value type="NCName">FOO</value>
+ </element>
+ </correct>
+ <valid>
+ <doc> FOO </doc>
+ </valid>
+ <invalid>
+ <doc>foo</doc>
+ </invalid>
+ <invalid>
+ <doc> foo </doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype NMTOKEN</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="NMTOKEN"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>foo</doc>
+ </valid>
+ <valid>
+ <doc>_</doc>
+ </valid>
+ <valid>
+ <doc>.</doc>
+ </valid>
+ <valid>
+ <doc>:</doc>
+ </valid>
+ <valid>
+ <doc>-</doc>
+ </valid>
+ <valid>
+ <doc>1234</doc>
+ </valid>
+ <valid>
+ <doc> foo </doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="NMTOKEN">
+ <param name="length">3</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc> foo </doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="NMTOKEN">
+ <param name="length">4</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc> foo </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="NMTOKEN">
+ <param name="length">2</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc> foo </doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="NMTOKEN">
+ <param name="length">2</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>fo</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="NMTOKEN">
+ <param name="length">3</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>fo</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="NMTOKEN">
+ <param name="length">1</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>fo</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="NMTOKEN">
+ <param name="length">1</param>
+ </data>
+ </element>
+ </correct>
+ <valid>
+ <doc>f</doc>
+ </valid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="NMTOKEN">
+ <param name="length">2</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>f</doc>
+ </invalid>
+ </testCase>
+ <testCase>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="NMTOKEN">
+ <param name="length">0</param>
+ </data>
+ </element>
+ </correct>
+ <invalid>
+ <doc>f</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype NMTOKENS</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="NMTOKENS"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>foo bar</doc>
+ </valid>
+ <invalid>
+ <doc></doc>
+ </invalid>
+ <valid>
+ <doc>1 2 3 4</doc>
+ </valid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype ID</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="ID"/>
+ </element>
+ </correct>
+ <valid>
+ <doc>foobar</doc>
+ </valid>
+ <invalid>
+ <doc>foo:bar</doc>
+ </invalid>
+ <invalid>
+ <doc>foo bar</doc>
+ </invalid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype ENTITY</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="ENTITY"/>
+ </element>
+ </correct>
+ <invalid>
+ <doc></doc>
+ </invalid>
+ <invalid>
+ <doc>foo</doc>
+ </invalid>
+ <valid dtd="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt;&#10;]&gt;">
+ <doc>foo</doc>
+ </valid>
+ </testCase>
+ </testSuite>
+ <testSuite>
+ <documentation>Datatype ENTITIES</documentation>
+ <testCase>
+ <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
+ <correct>
+ <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <data type="ENTITIES"/>
+ </element>
+ </correct>
+ <invalid>
+ <doc></doc>
+ </invalid>
+ <invalid>
+ <doc>foo</doc>
+ </invalid>
+ <valid dtd="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt; &#10;&lt;!ENTITY bar SYSTEM 'whatever' NDATA jpeg&gt; &#10;]&gt;">
+ <doc> foo bar </doc>
+ </valid>
+ </testCase>
+ </testSuite>
+</testSuite>