/ libxml2 / test / xsdtest / xsdtestsuite.xml
xsdtestsuite.xml
   1  <?xml version="1.0" encoding="utf-8"?>
   2  <testSuite>
   3    <testSuite>
   4      <documentation>Datatype dateTime</documentation>
   5      <testCase>
   6        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
   7        <correct>
   8          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
   9            <data type="dateTime"/>
  10          </element>
  11        </correct>
  12        <valid>
  13          <doc>2001-12-01T19:45:00</doc>
  14        </valid>
  15        <valid>
  16          <doc>2001-12-01T19:45:00Z</doc>
  17        </valid>
  18        <valid>
  19          <doc>2001-12-01T19:45:00-11:59</doc>
  20        </valid>
  21        <valid>
  22          <doc>0001-01-12T00:00:00+12:00</doc>
  23        </valid>
  24        <invalid>
  25          <doc>2001-12-1T19:45:00+24:00</doc>
  26        </invalid>
  27        <invalid>
  28          <doc>2001-12-1T19:45:00</doc>
  29        </invalid>
  30      </testCase>
  31      <testCase>
  32        <correct>
  33          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  34            <value type="dateTime">2001-12-01T19:45:00</value>
  35          </element>
  36        </correct>
  37        <valid>
  38          <doc>2001-12-01T19:45:00.00</doc>
  39        </valid>
  40        <invalid>
  41          <doc>2001-12-01T19:45:00Z</doc>
  42        </invalid>
  43        <invalid>
  44          <doc>2001-12-01T19:45:00.00Z</doc>
  45        </invalid>
  46        <invalid>
  47          <doc>2001-12-01T20:45:00+01:00</doc>
  48        </invalid>
  49      </testCase>
  50      <testCase>
  51        <correct>
  52          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  53            <value type="dateTime">2001-12-01T19:45:00Z</value>
  54          </element>
  55        </correct>
  56        <valid>
  57          <doc>2001-12-01T19:45:00.00Z</doc>
  58        </valid>
  59        <valid>
  60          <doc>2001-12-01T20:45:00+01:00</doc>
  61        </valid>
  62        <invalid>
  63          <doc>2001-12-01T19:45:00</doc>
  64        </invalid>
  65        <invalid>
  66          <doc>2001-12-01T19:45:00.00</doc>
  67        </invalid>
  68      </testCase>
  69    </testSuite>
  70    <testSuite>
  71      <documentation>Datatype anyURI</documentation>
  72      <testCase>
  73        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
  74        <correct>
  75          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  76            <data type="anyURI"/>
  77          </element>
  78        </correct>
  79        <valid>
  80          <doc>foobar</doc>
  81        </valid>
  82        <valid>
  83          <doc>http://www.example.com</doc>
  84        </valid>
  85        <valid>
  86          <doc>http://ji%6d@www.example.com</doc>
  87        </valid>
  88        <valid>
  89          <doc>http://www.example.co%6d</doc>
  90        </valid>
  91        <valid>
  92          <doc>nosuchscheme:stuff</doc>
  93        </valid>
  94        <invalid>
  95          <doc>foo$bar:stuff</doc>
  96        </invalid>
  97        <invalid>
  98          <doc>f%oobar</doc>
  99        </invalid>
 100      </testCase>
 101    </testSuite>
 102    <testSuite>
 103      <documentation>Datatype integer</documentation>
 104      <testCase>
 105        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
 106        <correct>
 107          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 108            <data type="integer"/>
 109          </element>
 110        </correct>
 111        <valid>
 112          <doc>10</doc>
 113        </valid>
 114        <valid>
 115          <doc>01</doc>
 116        </valid>
 117        <valid>
 118          <doc>0123456789</doc>
 119        </valid>
 120        <valid>
 121          <doc>+10</doc>
 122        </valid>
 123        <valid>
 124          <doc>-10</doc>
 125        </valid>
 126        <invalid>
 127          <doc>1.0</doc>
 128        </invalid>
 129        <invalid>
 130          <doc>.1</doc>
 131        </invalid>
 132        <valid>
 133          <doc>9999999999999999999999999999999</doc>
 134        </valid>
 135        <invalid>
 136          <doc>1.</doc>
 137        </invalid>
 138        <invalid>
 139          <doc>0.</doc>
 140        </invalid>
 141      </testCase>
 142      <testCase>
 143        <correct>
 144          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 145            <value type="integer">0</value>
 146          </element>
 147        </correct>
 148        <valid>
 149          <doc>+0</doc>
 150        </valid>
 151        <valid>
 152          <doc>-0</doc>
 153        </valid>
 154        <valid>
 155          <doc>00</doc>
 156        </valid>
 157        <invalid>
 158          <doc>10</doc>
 159        </invalid>
 160        <invalid>
 161          <doc>+10</doc>
 162        </invalid>
 163        <invalid>
 164          <doc>+0010</doc>
 165        </invalid>
 166        <invalid>
 167          <doc>010</doc>
 168        </invalid>
 169        <invalid>
 170          <doc>-10</doc>
 171        </invalid>
 172        <invalid>
 173          <doc>-0010</doc>
 174        </invalid>
 175        <invalid>
 176          <doc>-010</doc>
 177        </invalid>
 178      </testCase>
 179      <testCase>
 180        <correct>
 181          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 182            <value type="integer">10</value>
 183          </element>
 184        </correct>
 185        <valid>
 186          <doc>+10</doc>
 187        </valid>
 188        <valid>
 189          <doc>+0010</doc>
 190        </valid>
 191        <valid>
 192          <doc>010</doc>
 193        </valid>
 194        <invalid>
 195          <doc>0</doc>
 196        </invalid>
 197        <invalid>
 198          <doc>+0</doc>
 199        </invalid>
 200        <invalid>
 201          <doc>-0</doc>
 202        </invalid>
 203        <invalid>
 204          <doc>00</doc>
 205        </invalid>
 206        <invalid>
 207          <doc>-10</doc>
 208        </invalid>
 209        <invalid>
 210          <doc>-0010</doc>
 211        </invalid>
 212        <invalid>
 213          <doc>-010</doc>
 214        </invalid>
 215      </testCase>
 216      <testCase>
 217        <correct>
 218          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 219            <value type="integer">-10</value>
 220          </element>
 221        </correct>
 222        <valid>
 223          <doc>-0010</doc>
 224        </valid>
 225        <valid>
 226          <doc>-010</doc>
 227        </valid>
 228        <invalid>
 229          <doc>0</doc>
 230        </invalid>
 231        <invalid>
 232          <doc>+0</doc>
 233        </invalid>
 234        <invalid>
 235          <doc>-0</doc>
 236        </invalid>
 237        <invalid>
 238          <doc>00</doc>
 239        </invalid>
 240        <invalid>
 241          <doc>10</doc>
 242        </invalid>
 243        <invalid>
 244          <doc>+10</doc>
 245        </invalid>
 246        <invalid>
 247          <doc>+0010</doc>
 248        </invalid>
 249        <invalid>
 250          <doc>010</doc>
 251        </invalid>
 252      </testCase>
 253    </testSuite>
 254    <testSuite>
 255      <documentation>Datatype duration</documentation>
 256      <testCase>
 257        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
 258        <correct>
 259          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 260            <data type="duration"/>
 261          </element>
 262        </correct>
 263        <valid>
 264          <doc>P1Y</doc>
 265        </valid>
 266        <valid>
 267          <doc>P1Y0M2DT17H5M12S</doc>
 268        </valid>
 269        <valid>
 270          <doc>-P1Y</doc>
 271        </valid>
 272        <valid>
 273          <doc>P60D</doc>
 274        </valid>
 275        <valid>
 276          <doc>PT24H</doc>
 277        </valid>
 278        <valid>
 279          <doc>PT1.2S</doc>
 280        </valid>
 281        <invalid>
 282          <doc>P24h</doc>
 283        </invalid>
 284        <invalid>
 285          <doc>P24H</doc>
 286        </invalid>
 287        <invalid>
 288          <doc>P1YT</doc>
 289        </invalid>
 290        <invalid>
 291          <doc>P</doc>
 292        </invalid>
 293        <invalid>
 294          <doc>-P</doc>
 295        </invalid>
 296      </testCase>
 297      <testCase>
 298        <correct>
 299          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 300            <value type="duration">-P6M</value>
 301          </element>
 302        </correct>
 303        <invalid>
 304          <doc>P0Y</doc>
 305        </invalid>
 306        <invalid>
 307          <doc>-P0Y</doc>
 308        </invalid>
 309        <invalid>
 310          <doc>P1Y</doc>
 311        </invalid>
 312        <invalid>
 313          <doc>P001Y</doc>
 314        </invalid>
 315        <invalid>
 316          <doc>P001Y0M</doc>
 317        </invalid>
 318        <invalid>
 319          <doc>P1Y0M0DT0H0M0.0S</doc>
 320        </invalid>
 321        <invalid>
 322          <doc>P6M</doc>
 323        </invalid>
 324        <invalid>
 325          <doc>PT6M</doc>
 326        </invalid>
 327        <invalid>
 328          <doc>PT1S</doc>
 329        </invalid>
 330        <invalid>
 331          <doc>PT1.0S</doc>
 332        </invalid>
 333      </testCase>
 334      <testCase>
 335        <correct>
 336          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 337            <value type="duration">P0Y</value>
 338          </element>
 339        </correct>
 340        <valid>
 341          <doc>-P0Y</doc>
 342        </valid>
 343        <invalid>
 344          <doc>-P6M</doc>
 345        </invalid>
 346        <invalid>
 347          <doc>P1Y</doc>
 348        </invalid>
 349        <invalid>
 350          <doc>P001Y</doc>
 351        </invalid>
 352        <invalid>
 353          <doc>P001Y0M</doc>
 354        </invalid>
 355        <invalid>
 356          <doc>P1Y0M0DT0H0M0.0S</doc>
 357        </invalid>
 358        <invalid>
 359          <doc>P6M</doc>
 360        </invalid>
 361        <invalid>
 362          <doc>PT6M</doc>
 363        </invalid>
 364        <invalid>
 365          <doc>PT1S</doc>
 366        </invalid>
 367        <invalid>
 368          <doc>PT1.0S</doc>
 369        </invalid>
 370      </testCase>
 371      <testCase>
 372        <correct>
 373          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 374            <value type="duration">P1Y</value>
 375          </element>
 376        </correct>
 377        <valid>
 378          <doc>P001Y</doc>
 379        </valid>
 380        <valid>
 381          <doc>P001Y0M</doc>
 382        </valid>
 383        <valid>
 384          <doc>P1Y0M0DT0H0M0.0S</doc>
 385        </valid>
 386        <invalid>
 387          <doc>-P6M</doc>
 388        </invalid>
 389        <invalid>
 390          <doc>P0Y</doc>
 391        </invalid>
 392        <invalid>
 393          <doc>-P0Y</doc>
 394        </invalid>
 395        <invalid>
 396          <doc>P6M</doc>
 397        </invalid>
 398        <invalid>
 399          <doc>PT6M</doc>
 400        </invalid>
 401        <invalid>
 402          <doc>PT1S</doc>
 403        </invalid>
 404        <invalid>
 405          <doc>PT1.0S</doc>
 406        </invalid>
 407      </testCase>
 408      <testCase>
 409        <correct>
 410          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 411            <value type="duration">P6M</value>
 412          </element>
 413        </correct>
 414        <invalid>
 415          <doc>-P6M</doc>
 416        </invalid>
 417        <invalid>
 418          <doc>P0Y</doc>
 419        </invalid>
 420        <invalid>
 421          <doc>-P0Y</doc>
 422        </invalid>
 423        <invalid>
 424          <doc>P1Y</doc>
 425        </invalid>
 426        <invalid>
 427          <doc>P001Y</doc>
 428        </invalid>
 429        <invalid>
 430          <doc>P001Y0M</doc>
 431        </invalid>
 432        <invalid>
 433          <doc>P1Y0M0DT0H0M0.0S</doc>
 434        </invalid>
 435        <invalid>
 436          <doc>PT6M</doc>
 437        </invalid>
 438        <invalid>
 439          <doc>PT1S</doc>
 440        </invalid>
 441        <invalid>
 442          <doc>PT1.0S</doc>
 443        </invalid>
 444      </testCase>
 445      <testCase>
 446        <correct>
 447          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 448            <value type="duration">PT6M</value>
 449          </element>
 450        </correct>
 451        <invalid>
 452          <doc>-P6M</doc>
 453        </invalid>
 454        <invalid>
 455          <doc>P0Y</doc>
 456        </invalid>
 457        <invalid>
 458          <doc>-P0Y</doc>
 459        </invalid>
 460        <invalid>
 461          <doc>P1Y</doc>
 462        </invalid>
 463        <invalid>
 464          <doc>P001Y</doc>
 465        </invalid>
 466        <invalid>
 467          <doc>P001Y0M</doc>
 468        </invalid>
 469        <invalid>
 470          <doc>P1Y0M0DT0H0M0.0S</doc>
 471        </invalid>
 472        <invalid>
 473          <doc>P6M</doc>
 474        </invalid>
 475        <invalid>
 476          <doc>PT1S</doc>
 477        </invalid>
 478        <invalid>
 479          <doc>PT1.0S</doc>
 480        </invalid>
 481      </testCase>
 482      <testCase>
 483        <correct>
 484          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 485            <value type="duration">PT1S</value>
 486          </element>
 487        </correct>
 488        <valid>
 489          <doc>PT1.0S</doc>
 490        </valid>
 491        <invalid>
 492          <doc>-P6M</doc>
 493        </invalid>
 494        <invalid>
 495          <doc>P0Y</doc>
 496        </invalid>
 497        <invalid>
 498          <doc>-P0Y</doc>
 499        </invalid>
 500        <invalid>
 501          <doc>P1Y</doc>
 502        </invalid>
 503        <invalid>
 504          <doc>P001Y</doc>
 505        </invalid>
 506        <invalid>
 507          <doc>P001Y0M</doc>
 508        </invalid>
 509        <invalid>
 510          <doc>P1Y0M0DT0H0M0.0S</doc>
 511        </invalid>
 512        <invalid>
 513          <doc>P6M</doc>
 514        </invalid>
 515        <invalid>
 516          <doc>PT6M</doc>
 517        </invalid>
 518      </testCase>
 519      <testCase>
 520        <correct>
 521          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 522            <data type="duration">
 523              <param name="minExclusive">PT1M</param>
 524            </data>
 525          </element>
 526        </correct>
 527        <valid>
 528          <doc>PT61S</doc>
 529        </valid>
 530        <invalid>
 531          <doc>PT1M</doc>
 532        </invalid>
 533      </testCase>
 534      <testCase>
 535        <correct>
 536          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 537            <data type="duration">
 538              <param name="minExclusive">PT61S</param>
 539            </data>
 540          </element>
 541        </correct>
 542        <invalid>
 543          <doc>PT1M</doc>
 544        </invalid>
 545        <invalid>
 546          <doc>PT61S</doc>
 547        </invalid>
 548      </testCase>
 549      <testCase>
 550        <correct>
 551          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 552            <data type="duration">
 553              <param name="minExclusive">PT59S</param>
 554            </data>
 555          </element>
 556        </correct>
 557        <valid>
 558          <doc>PT1M</doc>
 559        </valid>
 560        <invalid>
 561          <doc>PT59S</doc>
 562        </invalid>
 563      </testCase>
 564      <testCase>
 565        <correct>
 566          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 567            <data type="duration">
 568              <param name="minExclusive">PT1M</param>
 569            </data>
 570          </element>
 571        </correct>
 572        <invalid>
 573          <doc>PT59S</doc>
 574        </invalid>
 575        <invalid>
 576          <doc>PT1M</doc>
 577        </invalid>
 578      </testCase>
 579      <testCase>
 580        <correct>
 581          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 582            <data type="duration">
 583              <param name="minExclusive">PT60S</param>
 584            </data>
 585          </element>
 586        </correct>
 587        <invalid>
 588          <doc>PT1M</doc>
 589        </invalid>
 590        <invalid>
 591          <doc>PT60S</doc>
 592        </invalid>
 593      </testCase>
 594      <testCase>
 595        <correct>
 596          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 597            <data type="duration">
 598              <param name="minExclusive">PT1M</param>
 599            </data>
 600          </element>
 601        </correct>
 602        <invalid>
 603          <doc>PT60S</doc>
 604        </invalid>
 605        <invalid>
 606          <doc>PT1M</doc>
 607        </invalid>
 608      </testCase>
 609      <testCase>
 610        <correct>
 611          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 612            <data type="duration">
 613              <param name="minExclusive">PT1H</param>
 614            </data>
 615          </element>
 616        </correct>
 617        <valid>
 618          <doc>PT61M</doc>
 619        </valid>
 620        <invalid>
 621          <doc>PT1H</doc>
 622        </invalid>
 623      </testCase>
 624      <testCase>
 625        <correct>
 626          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 627            <data type="duration">
 628              <param name="minExclusive">PT61M</param>
 629            </data>
 630          </element>
 631        </correct>
 632        <invalid>
 633          <doc>PT1H</doc>
 634        </invalid>
 635        <invalid>
 636          <doc>PT61M</doc>
 637        </invalid>
 638      </testCase>
 639      <testCase>
 640        <correct>
 641          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 642            <data type="duration">
 643              <param name="minExclusive">PT59M</param>
 644            </data>
 645          </element>
 646        </correct>
 647        <valid>
 648          <doc>PT1H</doc>
 649        </valid>
 650        <invalid>
 651          <doc>PT59M</doc>
 652        </invalid>
 653      </testCase>
 654      <testCase>
 655        <correct>
 656          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 657            <data type="duration">
 658              <param name="minExclusive">PT1H</param>
 659            </data>
 660          </element>
 661        </correct>
 662        <invalid>
 663          <doc>PT59M</doc>
 664        </invalid>
 665        <invalid>
 666          <doc>PT1H</doc>
 667        </invalid>
 668      </testCase>
 669      <testCase>
 670        <correct>
 671          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 672            <data type="duration">
 673              <param name="minExclusive">PT60M</param>
 674            </data>
 675          </element>
 676        </correct>
 677        <invalid>
 678          <doc>PT1H</doc>
 679        </invalid>
 680        <invalid>
 681          <doc>PT60M</doc>
 682        </invalid>
 683      </testCase>
 684      <testCase>
 685        <correct>
 686          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 687            <data type="duration">
 688              <param name="minExclusive">PT1H</param>
 689            </data>
 690          </element>
 691        </correct>
 692        <invalid>
 693          <doc>PT60M</doc>
 694        </invalid>
 695        <invalid>
 696          <doc>PT1H</doc>
 697        </invalid>
 698      </testCase>
 699      <testCase>
 700        <correct>
 701          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 702            <data type="duration">
 703              <param name="minExclusive">P1D</param>
 704            </data>
 705          </element>
 706        </correct>
 707        <valid>
 708          <doc>PT25H</doc>
 709        </valid>
 710        <invalid>
 711          <doc>P1D</doc>
 712        </invalid>
 713      </testCase>
 714      <testCase>
 715        <correct>
 716          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 717            <data type="duration">
 718              <param name="minExclusive">PT25H</param>
 719            </data>
 720          </element>
 721        </correct>
 722        <invalid>
 723          <doc>P1D</doc>
 724        </invalid>
 725        <invalid>
 726          <doc>PT25H</doc>
 727        </invalid>
 728      </testCase>
 729      <testCase>
 730        <correct>
 731          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 732            <data type="duration">
 733              <param name="minExclusive">PT23H</param>
 734            </data>
 735          </element>
 736        </correct>
 737        <valid>
 738          <doc>P1D</doc>
 739        </valid>
 740        <invalid>
 741          <doc>PT23H</doc>
 742        </invalid>
 743      </testCase>
 744      <testCase>
 745        <correct>
 746          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 747            <data type="duration">
 748              <param name="minExclusive">P1D</param>
 749            </data>
 750          </element>
 751        </correct>
 752        <invalid>
 753          <doc>PT23H</doc>
 754        </invalid>
 755        <invalid>
 756          <doc>P1D</doc>
 757        </invalid>
 758      </testCase>
 759      <testCase>
 760        <correct>
 761          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 762            <data type="duration">
 763              <param name="minExclusive">P1D</param>
 764            </data>
 765          </element>
 766        </correct>
 767        <invalid>
 768          <doc>PT24H</doc>
 769        </invalid>
 770        <invalid>
 771          <doc>P1D</doc>
 772        </invalid>
 773      </testCase>
 774      <testCase>
 775        <correct>
 776          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 777            <data type="duration">
 778              <param name="minExclusive">PT24H</param>
 779            </data>
 780          </element>
 781        </correct>
 782        <invalid>
 783          <doc>P1D</doc>
 784        </invalid>
 785        <invalid>
 786          <doc>PT24H</doc>
 787        </invalid>
 788      </testCase>
 789      <testCase>
 790        <correct>
 791          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 792            <data type="duration">
 793              <param name="minExclusive">P1Y</param>
 794            </data>
 795          </element>
 796        </correct>
 797        <valid>
 798          <doc>P13M</doc>
 799        </valid>
 800        <invalid>
 801          <doc>P1Y</doc>
 802        </invalid>
 803      </testCase>
 804      <testCase>
 805        <correct>
 806          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 807            <data type="duration">
 808              <param name="minExclusive">P13M</param>
 809            </data>
 810          </element>
 811        </correct>
 812        <invalid>
 813          <doc>P1Y</doc>
 814        </invalid>
 815        <invalid>
 816          <doc>P13M</doc>
 817        </invalid>
 818      </testCase>
 819      <testCase>
 820        <correct>
 821          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 822            <data type="duration">
 823              <param name="minExclusive">P11M</param>
 824            </data>
 825          </element>
 826        </correct>
 827        <valid>
 828          <doc>P1Y</doc>
 829        </valid>
 830        <invalid>
 831          <doc>P11M</doc>
 832        </invalid>
 833      </testCase>
 834      <testCase>
 835        <correct>
 836          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 837            <data type="duration">
 838              <param name="minExclusive">P1Y</param>
 839            </data>
 840          </element>
 841        </correct>
 842        <invalid>
 843          <doc>P11M</doc>
 844        </invalid>
 845        <invalid>
 846          <doc>P1Y</doc>
 847        </invalid>
 848      </testCase>
 849      <testCase>
 850        <correct>
 851          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 852            <data type="duration">
 853              <param name="minExclusive">P12M</param>
 854            </data>
 855          </element>
 856        </correct>
 857        <invalid>
 858          <doc>P1Y</doc>
 859        </invalid>
 860        <invalid>
 861          <doc>P12M</doc>
 862        </invalid>
 863      </testCase>
 864      <testCase>
 865        <correct>
 866          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 867            <data type="duration">
 868              <param name="minExclusive">P1Y</param>
 869            </data>
 870          </element>
 871        </correct>
 872        <invalid>
 873          <doc>P12M</doc>
 874        </invalid>
 875        <invalid>
 876          <doc>P1Y</doc>
 877        </invalid>
 878      </testCase>
 879      <testCase>
 880        <correct>
 881          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 882            <data type="duration">
 883              <param name="minExclusive">P364D</param>
 884            </data>
 885          </element>
 886        </correct>
 887        <valid>
 888          <doc>P1Y</doc>
 889        </valid>
 890        <invalid>
 891          <doc>P364D</doc>
 892        </invalid>
 893      </testCase>
 894      <testCase>
 895        <correct>
 896          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 897            <data type="duration">
 898              <param name="minExclusive">P1Y</param>
 899            </data>
 900          </element>
 901        </correct>
 902        <invalid>
 903          <doc>P364D</doc>
 904        </invalid>
 905        <invalid>
 906          <doc>P1Y</doc>
 907        </invalid>
 908      </testCase>
 909      <testCase>
 910        <correct>
 911          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 912            <data type="duration">
 913              <param name="minExclusive">P1Y</param>
 914            </data>
 915          </element>
 916        </correct>
 917        <invalid>
 918          <doc>P365D</doc>
 919        </invalid>
 920        <invalid>
 921          <doc>P1Y</doc>
 922        </invalid>
 923      </testCase>
 924      <testCase>
 925        <correct>
 926          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 927            <data type="duration">
 928              <param name="minExclusive">P365D</param>
 929            </data>
 930          </element>
 931        </correct>
 932        <invalid>
 933          <doc>P1Y</doc>
 934        </invalid>
 935        <invalid>
 936          <doc>P365D</doc>
 937        </invalid>
 938      </testCase>
 939      <testCase>
 940        <correct>
 941          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 942            <data type="duration">
 943              <param name="minExclusive">P1Y</param>
 944            </data>
 945          </element>
 946        </correct>
 947        <invalid>
 948          <doc>P366D</doc>
 949        </invalid>
 950        <invalid>
 951          <doc>P1Y</doc>
 952        </invalid>
 953      </testCase>
 954      <testCase>
 955        <correct>
 956          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 957            <data type="duration">
 958              <param name="minExclusive">P366D</param>
 959            </data>
 960          </element>
 961        </correct>
 962        <invalid>
 963          <doc>P1Y</doc>
 964        </invalid>
 965        <invalid>
 966          <doc>P366D</doc>
 967        </invalid>
 968      </testCase>
 969      <testCase>
 970        <correct>
 971          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 972            <data type="duration">
 973              <param name="minExclusive">P1Y</param>
 974            </data>
 975          </element>
 976        </correct>
 977        <valid>
 978          <doc>P367D</doc>
 979        </valid>
 980        <invalid>
 981          <doc>P1Y</doc>
 982        </invalid>
 983      </testCase>
 984      <testCase>
 985        <correct>
 986          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
 987            <data type="duration">
 988              <param name="minExclusive">P367D</param>
 989            </data>
 990          </element>
 991        </correct>
 992        <invalid>
 993          <doc>P1Y</doc>
 994        </invalid>
 995        <invalid>
 996          <doc>P367D</doc>
 997        </invalid>
 998      </testCase>
 999      <testCase>
1000        <correct>
1001          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1002            <data type="duration">
1003              <param name="minExclusive">P149D</param>
1004            </data>
1005          </element>
1006        </correct>
1007        <valid>
1008          <doc>P5M</doc>
1009        </valid>
1010        <invalid>
1011          <doc>P149D</doc>
1012        </invalid>
1013      </testCase>
1014      <testCase>
1015        <correct>
1016          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1017            <data type="duration">
1018              <param name="minExclusive">P5M</param>
1019            </data>
1020          </element>
1021        </correct>
1022        <invalid>
1023          <doc>P149D</doc>
1024        </invalid>
1025        <invalid>
1026          <doc>P5M</doc>
1027        </invalid>
1028      </testCase>
1029      <testCase>
1030        <correct>
1031          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1032            <data type="duration">
1033              <param name="minExclusive">P150D</param>
1034            </data>
1035          </element>
1036        </correct>
1037        <invalid>
1038          <doc>P5M</doc>
1039        </invalid>
1040        <invalid>
1041          <doc>P150D</doc>
1042        </invalid>
1043      </testCase>
1044      <testCase>
1045        <correct>
1046          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1047            <data type="duration">
1048              <param name="minExclusive">P5M</param>
1049            </data>
1050          </element>
1051        </correct>
1052        <invalid>
1053          <doc>P150D</doc>
1054        </invalid>
1055        <invalid>
1056          <doc>P5M</doc>
1057        </invalid>
1058      </testCase>
1059      <testCase>
1060        <correct>
1061          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1062            <data type="duration">
1063              <param name="minExclusive">P151D</param>
1064            </data>
1065          </element>
1066        </correct>
1067        <invalid>
1068          <doc>P5M</doc>
1069        </invalid>
1070        <invalid>
1071          <doc>P151D</doc>
1072        </invalid>
1073      </testCase>
1074      <testCase>
1075        <correct>
1076          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1077            <data type="duration">
1078              <param name="minExclusive">P5M</param>
1079            </data>
1080          </element>
1081        </correct>
1082        <invalid>
1083          <doc>P151D</doc>
1084        </invalid>
1085        <invalid>
1086          <doc>P5M</doc>
1087        </invalid>
1088      </testCase>
1089      <testCase>
1090        <correct>
1091          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1092            <data type="duration">
1093              <param name="minExclusive">P152D</param>
1094            </data>
1095          </element>
1096        </correct>
1097        <invalid>
1098          <doc>P5M</doc>
1099        </invalid>
1100        <invalid>
1101          <doc>P152D</doc>
1102        </invalid>
1103      </testCase>
1104      <testCase>
1105        <correct>
1106          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1107            <data type="duration">
1108              <param name="minExclusive">P5M</param>
1109            </data>
1110          </element>
1111        </correct>
1112        <invalid>
1113          <doc>P152D</doc>
1114        </invalid>
1115        <invalid>
1116          <doc>P5M</doc>
1117        </invalid>
1118      </testCase>
1119      <testCase>
1120        <correct>
1121          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1122            <data type="duration">
1123              <param name="minExclusive">P153D</param>
1124            </data>
1125          </element>
1126        </correct>
1127        <invalid>
1128          <doc>P5M</doc>
1129        </invalid>
1130        <invalid>
1131          <doc>P153D</doc>
1132        </invalid>
1133      </testCase>
1134      <testCase>
1135        <correct>
1136          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1137            <data type="duration">
1138              <param name="minExclusive">P5M</param>
1139            </data>
1140          </element>
1141        </correct>
1142        <invalid>
1143          <doc>P153D</doc>
1144        </invalid>
1145        <invalid>
1146          <doc>P5M</doc>
1147        </invalid>
1148      </testCase>
1149      <testCase>
1150        <correct>
1151          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1152            <data type="duration">
1153              <param name="minExclusive">P5M</param>
1154            </data>
1155          </element>
1156        </correct>
1157        <valid>
1158          <doc>P154D</doc>
1159        </valid>
1160        <invalid>
1161          <doc>P5M</doc>
1162        </invalid>
1163      </testCase>
1164      <testCase>
1165        <correct>
1166          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1167            <data type="duration">
1168              <param name="minExclusive">P154D</param>
1169            </data>
1170          </element>
1171        </correct>
1172        <invalid>
1173          <doc>P5M</doc>
1174        </invalid>
1175        <invalid>
1176          <doc>P154D</doc>
1177        </invalid>
1178      </testCase>
1179      <testCase>
1180        <correct>
1181          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1182            <data type="duration">
1183              <param name="minExclusive">P27D</param>
1184            </data>
1185          </element>
1186        </correct>
1187        <valid>
1188          <doc>P1M</doc>
1189        </valid>
1190        <invalid>
1191          <doc>P27D</doc>
1192        </invalid>
1193      </testCase>
1194      <testCase>
1195        <correct>
1196          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1197            <data type="duration">
1198              <param name="minExclusive">P1M</param>
1199            </data>
1200          </element>
1201        </correct>
1202        <invalid>
1203          <doc>P27D</doc>
1204        </invalid>
1205        <invalid>
1206          <doc>P1M</doc>
1207        </invalid>
1208      </testCase>
1209      <testCase>
1210        <correct>
1211          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1212            <data type="duration">
1213              <param name="minExclusive">P28D</param>
1214            </data>
1215          </element>
1216        </correct>
1217        <invalid>
1218          <doc>P1M</doc>
1219        </invalid>
1220        <invalid>
1221          <doc>P28D</doc>
1222        </invalid>
1223      </testCase>
1224      <testCase>
1225        <correct>
1226          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1227            <data type="duration">
1228              <param name="minExclusive">P1M</param>
1229            </data>
1230          </element>
1231        </correct>
1232        <invalid>
1233          <doc>P28D</doc>
1234        </invalid>
1235        <invalid>
1236          <doc>P1M</doc>
1237        </invalid>
1238      </testCase>
1239      <testCase>
1240        <correct>
1241          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1242            <data type="duration">
1243              <param name="minExclusive">P29D</param>
1244            </data>
1245          </element>
1246        </correct>
1247        <invalid>
1248          <doc>P1M</doc>
1249        </invalid>
1250        <invalid>
1251          <doc>P29D</doc>
1252        </invalid>
1253      </testCase>
1254      <testCase>
1255        <correct>
1256          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1257            <data type="duration">
1258              <param name="minExclusive">P1M</param>
1259            </data>
1260          </element>
1261        </correct>
1262        <invalid>
1263          <doc>P29D</doc>
1264        </invalid>
1265        <invalid>
1266          <doc>P1M</doc>
1267        </invalid>
1268      </testCase>
1269      <testCase>
1270        <correct>
1271          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1272            <data type="duration">
1273              <param name="minExclusive">P30D</param>
1274            </data>
1275          </element>
1276        </correct>
1277        <invalid>
1278          <doc>P1M</doc>
1279        </invalid>
1280        <invalid>
1281          <doc>P30D</doc>
1282        </invalid>
1283      </testCase>
1284      <testCase>
1285        <correct>
1286          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1287            <data type="duration">
1288              <param name="minExclusive">P1M</param>
1289            </data>
1290          </element>
1291        </correct>
1292        <invalid>
1293          <doc>P30D</doc>
1294        </invalid>
1295        <invalid>
1296          <doc>P1M</doc>
1297        </invalid>
1298      </testCase>
1299      <testCase>
1300        <correct>
1301          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1302            <data type="duration">
1303              <param name="minExclusive">P31D</param>
1304            </data>
1305          </element>
1306        </correct>
1307        <invalid>
1308          <doc>P1M</doc>
1309        </invalid>
1310        <invalid>
1311          <doc>P31D</doc>
1312        </invalid>
1313      </testCase>
1314      <testCase>
1315        <correct>
1316          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1317            <data type="duration">
1318              <param name="minExclusive">P1M</param>
1319            </data>
1320          </element>
1321        </correct>
1322        <invalid>
1323          <doc>P31D</doc>
1324        </invalid>
1325        <invalid>
1326          <doc>P1M</doc>
1327        </invalid>
1328      </testCase>
1329      <testCase>
1330        <correct>
1331          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1332            <data type="duration">
1333              <param name="minExclusive">P1M</param>
1334            </data>
1335          </element>
1336        </correct>
1337        <valid>
1338          <doc>P32D</doc>
1339        </valid>
1340        <invalid>
1341          <doc>P1M</doc>
1342        </invalid>
1343      </testCase>
1344      <testCase>
1345        <correct>
1346          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1347            <data type="duration">
1348              <param name="minExclusive">P32D</param>
1349            </data>
1350          </element>
1351        </correct>
1352        <invalid>
1353          <doc>P1M</doc>
1354        </invalid>
1355        <invalid>
1356          <doc>P32D</doc>
1357        </invalid>
1358      </testCase>
1359    </testSuite>
1360    <testSuite>
1361      <documentation>Datatype time</documentation>
1362      <testCase>
1363        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
1364        <correct>
1365          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1366            <data type="time"/>
1367          </element>
1368        </correct>
1369        <valid>
1370          <doc>12:45:00</doc>
1371        </valid>
1372        <valid>
1373          <doc>12:45:00Z</doc>
1374        </valid>
1375      </testCase>
1376    </testSuite>
1377    <testSuite>
1378      <documentation>Datatype date</documentation>
1379      <testCase>
1380        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
1381        <correct>
1382          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1383            <data type="date"/>
1384          </element>
1385        </correct>
1386        <valid>
1387          <doc>1886-12-01</doc>
1388        </valid>
1389        <valid>
1390          <doc>1886-12-01Z</doc>
1391        </valid>
1392      </testCase>
1393      <testCase>
1394        <correct>
1395          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1396            <data type="date">
1397              <param name="minExclusive">1066-12-31</param>
1398            </data>
1399          </element>
1400        </correct>
1401        <valid>
1402          <doc>1900-01-01</doc>
1403        </valid>
1404        <invalid>
1405          <doc>1066-12-31</doc>
1406        </invalid>
1407      </testCase>
1408      <testCase>
1409        <correct>
1410          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1411            <data type="date">
1412              <param name="minExclusive">1900-01-01</param>
1413            </data>
1414          </element>
1415        </correct>
1416        <invalid>
1417          <doc>1066-12-31</doc>
1418        </invalid>
1419        <invalid>
1420          <doc>1900-01-01</doc>
1421        </invalid>
1422      </testCase>
1423      <testCase>
1424        <correct>
1425          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1426            <data type="date">
1427              <param name="minExclusive">1900-01-01</param>
1428            </data>
1429          </element>
1430        </correct>
1431        <valid>
1432          <doc>1900-01-02</doc>
1433        </valid>
1434        <invalid>
1435          <doc>1900-01-01</doc>
1436        </invalid>
1437      </testCase>
1438      <testCase>
1439        <correct>
1440          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1441            <data type="date">
1442              <param name="minExclusive">1900-01-02</param>
1443            </data>
1444          </element>
1445        </correct>
1446        <invalid>
1447          <doc>1900-01-01</doc>
1448        </invalid>
1449        <invalid>
1450          <doc>1900-01-02</doc>
1451        </invalid>
1452      </testCase>
1453    </testSuite>
1454    <testSuite>
1455      <documentation>Datatype gYearMonth</documentation>
1456      <testCase>
1457        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
1458        <correct>
1459          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1460            <data type="gYearMonth"/>
1461          </element>
1462        </correct>
1463        <valid>
1464          <doc>1996-12</doc>
1465        </valid>
1466        <valid>
1467          <doc>1996-01</doc>
1468        </valid>
1469        <valid>
1470          <doc>1996-01Z</doc>
1471        </valid>
1472        <invalid>
1473          <doc>1996-00</doc>
1474        </invalid>
1475      </testCase>
1476      <testCase>
1477        <correct>
1478          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1479            <value type="gYearMonth">1996-01</value>
1480          </element>
1481        </correct>
1482        <invalid>
1483          <doc>1996-01Z</doc>
1484        </invalid>
1485        <invalid>
1486          <doc>1996-01+00:00</doc>
1487        </invalid>
1488        <invalid>
1489          <doc>1996-01-00:00</doc>
1490        </invalid>
1491        <invalid>
1492          <doc>1996-01+01:00</doc>
1493        </invalid>
1494        <invalid>
1495          <doc>1996-01-01:00</doc>
1496        </invalid>
1497      </testCase>
1498      <testCase>
1499        <correct>
1500          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1501            <value type="gYearMonth">1996-01Z</value>
1502          </element>
1503        </correct>
1504        <valid>
1505          <doc>1996-01+00:00</doc>
1506        </valid>
1507        <valid>
1508          <doc>1996-01-00:00</doc>
1509        </valid>
1510        <invalid>
1511          <doc>1996-01</doc>
1512        </invalid>
1513        <invalid>
1514          <doc>1996-01+01:00</doc>
1515        </invalid>
1516        <invalid>
1517          <doc>1996-01-01:00</doc>
1518        </invalid>
1519      </testCase>
1520      <testCase>
1521        <correct>
1522          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1523            <value type="gYearMonth">1996-01+01:00</value>
1524          </element>
1525        </correct>
1526        <invalid>
1527          <doc>1996-01</doc>
1528        </invalid>
1529        <invalid>
1530          <doc>1996-01Z</doc>
1531        </invalid>
1532        <invalid>
1533          <doc>1996-01+00:00</doc>
1534        </invalid>
1535        <invalid>
1536          <doc>1996-01-00:00</doc>
1537        </invalid>
1538        <invalid>
1539          <doc>1996-01-01:00</doc>
1540        </invalid>
1541      </testCase>
1542      <testCase>
1543        <correct>
1544          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1545            <value type="gYearMonth">1996-01-01:00</value>
1546          </element>
1547        </correct>
1548        <invalid>
1549          <doc>1996-01</doc>
1550        </invalid>
1551        <invalid>
1552          <doc>1996-01Z</doc>
1553        </invalid>
1554        <invalid>
1555          <doc>1996-01+00:00</doc>
1556        </invalid>
1557        <invalid>
1558          <doc>1996-01-00:00</doc>
1559        </invalid>
1560        <invalid>
1561          <doc>1996-01+01:00</doc>
1562        </invalid>
1563      </testCase>
1564    </testSuite>
1565    <testSuite>
1566      <documentation>Datatype gYear</documentation>
1567      <testCase>
1568        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
1569        <correct>
1570          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1571            <data type="gYear"/>
1572          </element>
1573        </correct>
1574        <valid>
1575          <doc>2001</doc>
1576        </valid>
1577        <valid>
1578          <doc>2001Z</doc>
1579        </valid>
1580      </testCase>
1581      <testCase>
1582        <correct>
1583          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1584            <data type="gYear">
1585              <param name="minExclusive">1999</param>
1586            </data>
1587          </element>
1588        </correct>
1589        <valid>
1590          <doc>2000</doc>
1591        </valid>
1592        <invalid>
1593          <doc>1999</doc>
1594        </invalid>
1595      </testCase>
1596      <testCase>
1597        <correct>
1598          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1599            <data type="gYear">
1600              <param name="minExclusive">2000</param>
1601            </data>
1602          </element>
1603        </correct>
1604        <invalid>
1605          <doc>1999</doc>
1606        </invalid>
1607        <invalid>
1608          <doc>2000</doc>
1609        </invalid>
1610      </testCase>
1611      <testCase>
1612        <correct>
1613          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1614            <data type="gYear">
1615              <param name="minExclusive">1999+07:00</param>
1616            </data>
1617          </element>
1618        </correct>
1619        <valid>
1620          <doc>2000+07:00</doc>
1621        </valid>
1622        <invalid>
1623          <doc>1999+07:00</doc>
1624        </invalid>
1625      </testCase>
1626      <testCase>
1627        <correct>
1628          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1629            <data type="gYear">
1630              <param name="minExclusive">2000+07:00</param>
1631            </data>
1632          </element>
1633        </correct>
1634        <invalid>
1635          <doc>1999+07:00</doc>
1636        </invalid>
1637        <invalid>
1638          <doc>2000+07:00</doc>
1639        </invalid>
1640      </testCase>
1641    </testSuite>
1642    <testSuite>
1643      <documentation>Datatype gMonthDay</documentation>
1644      <testCase>
1645        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
1646        <correct>
1647          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1648            <data type="gMonthDay"/>
1649          </element>
1650        </correct>
1651        <valid>
1652          <doc>--12-01</doc>
1653        </valid>
1654        <valid>
1655          <doc>--12-01Z</doc>
1656        </valid>
1657      </testCase>
1658      <testCase>
1659        <correct>
1660          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1661            <data type="gMonthDay">
1662              <param name="minExclusive">--12-01</param>
1663            </data>
1664          </element>
1665        </correct>
1666        <valid>
1667          <doc>--12-04</doc>
1668        </valid>
1669        <invalid>
1670          <doc>--12-01</doc>
1671        </invalid>
1672      </testCase>
1673      <testCase>
1674        <correct>
1675          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1676            <data type="gMonthDay">
1677              <param name="minExclusive">--12-04</param>
1678            </data>
1679          </element>
1680        </correct>
1681        <invalid>
1682          <doc>--12-01</doc>
1683        </invalid>
1684        <invalid>
1685          <doc>--12-04</doc>
1686        </invalid>
1687      </testCase>
1688      <testCase>
1689        <correct>
1690          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1691            <data type="gMonthDay">
1692              <param name="minExclusive">--11-17</param>
1693            </data>
1694          </element>
1695        </correct>
1696        <valid>
1697          <doc>--12-04</doc>
1698        </valid>
1699        <invalid>
1700          <doc>--11-17</doc>
1701        </invalid>
1702      </testCase>
1703      <testCase>
1704        <correct>
1705          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1706            <data type="gMonthDay">
1707              <param name="minExclusive">--12-04</param>
1708            </data>
1709          </element>
1710        </correct>
1711        <invalid>
1712          <doc>--11-17</doc>
1713        </invalid>
1714        <invalid>
1715          <doc>--12-04</doc>
1716        </invalid>
1717      </testCase>
1718    </testSuite>
1719    <testSuite>
1720      <documentation>Datatype gDay</documentation>
1721      <testCase>
1722        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
1723        <correct>
1724          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1725            <data type="gDay"/>
1726          </element>
1727        </correct>
1728        <valid>
1729          <doc>---20</doc>
1730        </valid>
1731        <valid>
1732          <doc>---20Z</doc>
1733        </valid>
1734      </testCase>
1735      <testCase>
1736        <correct>
1737          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1738            <data type="gDay">
1739              <param name="minExclusive">---01</param>
1740            </data>
1741          </element>
1742        </correct>
1743        <valid>
1744          <doc>---31</doc>
1745        </valid>
1746        <invalid>
1747          <doc>---01</doc>
1748        </invalid>
1749      </testCase>
1750      <testCase>
1751        <correct>
1752          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1753            <data type="gDay">
1754              <param name="minExclusive">---31</param>
1755            </data>
1756          </element>
1757        </correct>
1758        <invalid>
1759          <doc>---01</doc>
1760        </invalid>
1761        <invalid>
1762          <doc>---31</doc>
1763        </invalid>
1764      </testCase>
1765    </testSuite>
1766    <testSuite>
1767      <documentation>Datatype gMonth</documentation>
1768      <testCase>
1769        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
1770        <correct>
1771          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1772            <data type="gMonth"/>
1773          </element>
1774        </correct>
1775        <valid>
1776          <doc>--12</doc>
1777        </valid>
1778        <valid>
1779          <doc>--01</doc>
1780        </valid>
1781        <valid>
1782          <doc>--01Z</doc>
1783        </valid>
1784        <valid>
1785          <doc> --12 </doc>
1786        </valid>
1787        <invalid>
1788          <doc>---01</doc>
1789        </invalid>
1790        <invalid>
1791          <doc>--00</doc>
1792        </invalid>
1793        <invalid>
1794          <doc>--13</doc>
1795        </invalid>
1796        <invalid>
1797          <doc>- -13</doc>
1798        </invalid>
1799      </testCase>
1800      <testCase>
1801        <correct>
1802          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1803            <data type="gMonth">
1804              <param name="minExclusive">--01</param>
1805            </data>
1806          </element>
1807        </correct>
1808        <valid>
1809          <doc>--12</doc>
1810        </valid>
1811        <invalid>
1812          <doc>--01</doc>
1813        </invalid>
1814      </testCase>
1815      <testCase>
1816        <correct>
1817          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1818            <data type="gMonth">
1819              <param name="minExclusive">--12</param>
1820            </data>
1821          </element>
1822        </correct>
1823        <invalid>
1824          <doc>--01</doc>
1825        </invalid>
1826        <invalid>
1827          <doc>--12</doc>
1828        </invalid>
1829      </testCase>
1830      <testCase>
1831        <correct>
1832          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1833            <data type="gMonth">
1834              <param name="minExclusive">--01</param>
1835            </data>
1836          </element>
1837        </correct>
1838        <valid>
1839          <doc>--02</doc>
1840        </valid>
1841        <invalid>
1842          <doc>--01</doc>
1843        </invalid>
1844      </testCase>
1845      <testCase>
1846        <correct>
1847          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1848            <data type="gMonth">
1849              <param name="minExclusive">--02</param>
1850            </data>
1851          </element>
1852        </correct>
1853        <invalid>
1854          <doc>--01</doc>
1855        </invalid>
1856        <invalid>
1857          <doc>--02</doc>
1858        </invalid>
1859      </testCase>
1860    </testSuite>
1861    <testSuite>
1862      <documentation>Datatype boolean</documentation>
1863      <testCase>
1864        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
1865        <correct>
1866          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1867            <data type="boolean"/>
1868          </element>
1869        </correct>
1870        <valid>
1871          <doc>true</doc>
1872        </valid>
1873        <valid>
1874          <doc>false</doc>
1875        </valid>
1876        <valid>
1877          <doc>0</doc>
1878        </valid>
1879        <valid>
1880          <doc>1</doc>
1881        </valid>
1882        <invalid>
1883          <doc>00</doc>
1884        </invalid>
1885        <invalid>
1886          <doc>00</doc>
1887        </invalid>
1888        <invalid>
1889          <doc>01</doc>
1890        </invalid>
1891      </testCase>
1892      <testCase>
1893        <correct>
1894          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1895            <value type="boolean">true</value>
1896          </element>
1897        </correct>
1898        <valid>
1899          <doc>1</doc>
1900        </valid>
1901        <invalid>
1902          <doc>false</doc>
1903        </invalid>
1904        <invalid>
1905          <doc>0</doc>
1906        </invalid>
1907      </testCase>
1908      <testCase>
1909        <correct>
1910          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1911            <value type="boolean">false</value>
1912          </element>
1913        </correct>
1914        <valid>
1915          <doc>0</doc>
1916        </valid>
1917        <invalid>
1918          <doc>true</doc>
1919        </invalid>
1920        <invalid>
1921          <doc>1</doc>
1922        </invalid>
1923      </testCase>
1924    </testSuite>
1925    <testSuite>
1926      <documentation>Datatype base64Binary</documentation>
1927      <testCase>
1928        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
1929        <correct>
1930          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1931            <data type="base64Binary"/>
1932          </element>
1933        </correct>
1934        <valid>
1935          <doc>AAAA</doc>
1936        </valid>
1937        <valid>
1938          <doc>abcd efgh ijkl mnop qrst uvwx yzAB CDEF GHIJ KLMN OPQR
1939  STUV WXYZ 0123 4567 89+/</doc>
1940        </valid>
1941        <valid>
1942          <doc>BA==</doc>
1943        </valid>
1944        <valid>
1945          <doc></doc>
1946        </valid>
1947        <valid>
1948          <doc>BA==</doc>
1949        </valid>
1950        <valid>
1951          <doc>BQ==</doc>
1952        </valid>
1953        <valid>
1954          <doc>Bg==</doc>
1955        </valid>
1956        <valid>
1957          <doc>Bw==</doc>
1958        </valid>
1959        <valid>
1960          <doc>BBA=</doc>
1961        </valid>
1962        <valid>
1963          <doc>BBA=</doc>
1964        </valid>
1965        <valid>
1966          <doc>BBE=</doc>
1967        </valid>
1968        <valid>
1969          <doc>BBI=</doc>
1970        </valid>
1971        <valid>
1972          <doc>BBM=</doc>
1973        </valid>
1974        <valid>
1975          <doc>BBQ=</doc>
1976        </valid>
1977        <valid>
1978          <doc>BBU=</doc>
1979        </valid>
1980        <valid>
1981          <doc>BBY=</doc>
1982        </valid>
1983        <valid>
1984          <doc>BBc=</doc>
1985        </valid>
1986        <valid>
1987          <doc>BBg=</doc>
1988        </valid>
1989        <valid>
1990          <doc>BBk=</doc>
1991        </valid>
1992        <valid>
1993          <doc>BBo=</doc>
1994        </valid>
1995        <valid>
1996          <doc>BBs=</doc>
1997        </valid>
1998        <valid>
1999          <doc>BBw=</doc>
2000        </valid>
2001        <valid>
2002          <doc>BB0=</doc>
2003        </valid>
2004        <valid>
2005          <doc>BB4=</doc>
2006        </valid>
2007        <valid>
2008          <doc>BB8=</doc>
2009        </valid>
2010        <invalid>
2011          <doc>====</doc>
2012        </invalid>
2013        <invalid>
2014          <doc>BB==</doc>
2015        </invalid>
2016        <invalid>
2017          <doc>BBB=</doc>
2018        </invalid>
2019        <invalid>
2020          <doc>B===</doc>
2021        </invalid>
2022        <invalid>
2023          <doc>B</doc>
2024        </invalid>
2025      </testCase>
2026      <testCase>
2027        <correct>
2028          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2029            <value type="base64Binary">deadbeef</value>
2030          </element>
2031        </correct>
2032        <valid>
2033          <doc>d
2034  &#13;	e a d
2035  b eef </doc>
2036        </valid>
2037        <invalid>
2038          <doc>DEADBEEF</doc>
2039        </invalid>
2040        <invalid>
2041          <doc>D
2042  &#13;	E A D
2043  B EEF </doc>
2044        </invalid>
2045      </testCase>
2046      <testCase>
2047        <correct>
2048          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2049            <value type="base64Binary">DEADBEEF</value>
2050          </element>
2051        </correct>
2052        <valid>
2053          <doc>D
2054  &#13;	E A D
2055  B EEF </doc>
2056        </valid>
2057        <invalid>
2058          <doc>deadbeef</doc>
2059        </invalid>
2060        <invalid>
2061          <doc>d
2062  &#13;	e a d
2063  b eef </doc>
2064        </invalid>
2065      </testCase>
2066      <testCase>
2067        <correct>
2068          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2069            <data type="base64Binary">
2070              <param name="length">0</param>
2071            </data>
2072          </element>
2073        </correct>
2074        <valid>
2075          <doc></doc>
2076        </valid>
2077      </testCase>
2078      <testCase>
2079        <correct>
2080          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2081            <data type="base64Binary">
2082              <param name="length">1</param>
2083            </data>
2084          </element>
2085        </correct>
2086        <invalid>
2087          <doc></doc>
2088        </invalid>
2089      </testCase>
2090      <testCase>
2091        <correct>
2092          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2093            <data type="base64Binary">
2094              <param name="length">6</param>
2095            </data>
2096          </element>
2097        </correct>
2098        <valid>
2099          <doc>deadbeef</doc>
2100        </valid>
2101      </testCase>
2102      <testCase>
2103        <correct>
2104          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2105            <data type="base64Binary">
2106              <param name="length">7</param>
2107            </data>
2108          </element>
2109        </correct>
2110        <invalid>
2111          <doc>deadbeef</doc>
2112        </invalid>
2113      </testCase>
2114      <testCase>
2115        <correct>
2116          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2117            <data type="base64Binary">
2118              <param name="length">5</param>
2119            </data>
2120          </element>
2121        </correct>
2122        <invalid>
2123          <doc>deadbeef</doc>
2124        </invalid>
2125      </testCase>
2126      <testCase>
2127        <correct>
2128          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2129            <data type="base64Binary">
2130              <param name="length">1</param>
2131            </data>
2132          </element>
2133        </correct>
2134        <valid>
2135          <doc>BA==</doc>
2136        </valid>
2137      </testCase>
2138      <testCase>
2139        <correct>
2140          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2141            <data type="base64Binary">
2142              <param name="length">2</param>
2143            </data>
2144          </element>
2145        </correct>
2146        <invalid>
2147          <doc>BA==</doc>
2148        </invalid>
2149      </testCase>
2150      <testCase>
2151        <correct>
2152          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2153            <data type="base64Binary">
2154              <param name="length">0</param>
2155            </data>
2156          </element>
2157        </correct>
2158        <invalid>
2159          <doc>BA==</doc>
2160        </invalid>
2161      </testCase>
2162      <testCase>
2163        <correct>
2164          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2165            <data type="base64Binary">
2166              <param name="length">2</param>
2167            </data>
2168          </element>
2169        </correct>
2170        <valid>
2171          <doc>BBA=</doc>
2172        </valid>
2173      </testCase>
2174      <testCase>
2175        <correct>
2176          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2177            <data type="base64Binary">
2178              <param name="length">3</param>
2179            </data>
2180          </element>
2181        </correct>
2182        <invalid>
2183          <doc>BBA=</doc>
2184        </invalid>
2185      </testCase>
2186      <testCase>
2187        <correct>
2188          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2189            <data type="base64Binary">
2190              <param name="length">1</param>
2191            </data>
2192          </element>
2193        </correct>
2194        <invalid>
2195          <doc>BBA=</doc>
2196        </invalid>
2197      </testCase>
2198      <testCase>
2199        <correct>
2200          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2201            <data type="base64Binary">
2202              <param name="length">3</param>
2203            </data>
2204          </element>
2205        </correct>
2206        <valid>
2207          <doc>dead</doc>
2208        </valid>
2209      </testCase>
2210      <testCase>
2211        <correct>
2212          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2213            <data type="base64Binary">
2214              <param name="length">4</param>
2215            </data>
2216          </element>
2217        </correct>
2218        <invalid>
2219          <doc>dead</doc>
2220        </invalid>
2221      </testCase>
2222      <testCase>
2223        <correct>
2224          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2225            <data type="base64Binary">
2226              <param name="length">2</param>
2227            </data>
2228          </element>
2229        </correct>
2230        <invalid>
2231          <doc>dead</doc>
2232        </invalid>
2233      </testCase>
2234      <testCase>
2235        <correct>
2236          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2237            <data type="base64Binary">
2238              <param name="length">4</param>
2239            </data>
2240          </element>
2241        </correct>
2242        <valid>
2243          <doc>deadBA==</doc>
2244        </valid>
2245      </testCase>
2246      <testCase>
2247        <correct>
2248          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2249            <data type="base64Binary">
2250              <param name="length">5</param>
2251            </data>
2252          </element>
2253        </correct>
2254        <invalid>
2255          <doc>deadBA==</doc>
2256        </invalid>
2257      </testCase>
2258      <testCase>
2259        <correct>
2260          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2261            <data type="base64Binary">
2262              <param name="length">3</param>
2263            </data>
2264          </element>
2265        </correct>
2266        <invalid>
2267          <doc>deadBA==</doc>
2268        </invalid>
2269      </testCase>
2270    </testSuite>
2271    <testSuite>
2272      <documentation>Datatype hexBinary</documentation>
2273      <testCase>
2274        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
2275        <correct>
2276          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2277            <data type="hexBinary"/>
2278          </element>
2279        </correct>
2280        <valid>
2281          <doc>deadbeef</doc>
2282        </valid>
2283        <valid>
2284          <doc></doc>
2285        </valid>
2286        <valid>
2287          <doc>0123456789ABCDEFabcdef</doc>
2288        </valid>
2289        <invalid>
2290          <doc>00 00</doc>
2291        </invalid>
2292        <invalid>
2293          <doc>00.00</doc>
2294        </invalid>
2295        <invalid>
2296          <doc>0G</doc>
2297        </invalid>
2298      </testCase>
2299      <testCase>
2300        <correct>
2301          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2302            <value type="hexBinary">00</value>
2303          </element>
2304        </correct>
2305        <valid>
2306          <doc>
2307  	00
2308     </doc>
2309        </valid>
2310        <invalid>
2311          <doc>01</doc>
2312        </invalid>
2313        <invalid>
2314          <doc>10</doc>
2315        </invalid>
2316        <invalid>
2317          <doc>0a</doc>
2318        </invalid>
2319        <invalid>
2320          <doc>0A</doc>
2321        </invalid>
2322      </testCase>
2323      <testCase>
2324        <correct>
2325          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2326            <value type="hexBinary">01</value>
2327          </element>
2328        </correct>
2329        <invalid>
2330          <doc>00</doc>
2331        </invalid>
2332        <invalid>
2333          <doc>
2334  	00
2335     </doc>
2336        </invalid>
2337        <invalid>
2338          <doc>10</doc>
2339        </invalid>
2340        <invalid>
2341          <doc>0a</doc>
2342        </invalid>
2343        <invalid>
2344          <doc>0A</doc>
2345        </invalid>
2346      </testCase>
2347      <testCase>
2348        <correct>
2349          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2350            <value type="hexBinary">10</value>
2351          </element>
2352        </correct>
2353        <invalid>
2354          <doc>00</doc>
2355        </invalid>
2356        <invalid>
2357          <doc>
2358  	00
2359     </doc>
2360        </invalid>
2361        <invalid>
2362          <doc>01</doc>
2363        </invalid>
2364        <invalid>
2365          <doc>0a</doc>
2366        </invalid>
2367        <invalid>
2368          <doc>0A</doc>
2369        </invalid>
2370      </testCase>
2371      <testCase>
2372        <correct>
2373          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2374            <value type="hexBinary">0a</value>
2375          </element>
2376        </correct>
2377        <valid>
2378          <doc>0A</doc>
2379        </valid>
2380        <invalid>
2381          <doc>00</doc>
2382        </invalid>
2383        <invalid>
2384          <doc>
2385  	00
2386     </doc>
2387        </invalid>
2388        <invalid>
2389          <doc>01</doc>
2390        </invalid>
2391        <invalid>
2392          <doc>10</doc>
2393        </invalid>
2394      </testCase>
2395      <testCase>
2396        <correct>
2397          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2398            <data type="hexBinary">
2399              <param name="length">0</param>
2400            </data>
2401          </element>
2402        </correct>
2403        <valid>
2404          <doc></doc>
2405        </valid>
2406      </testCase>
2407      <testCase>
2408        <correct>
2409          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2410            <data type="hexBinary">
2411              <param name="length">1</param>
2412            </data>
2413          </element>
2414        </correct>
2415        <invalid>
2416          <doc></doc>
2417        </invalid>
2418      </testCase>
2419      <testCase>
2420        <correct>
2421          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2422            <data type="hexBinary">
2423              <param name="length">1</param>
2424            </data>
2425          </element>
2426        </correct>
2427        <valid>
2428          <doc>00</doc>
2429        </valid>
2430      </testCase>
2431      <testCase>
2432        <correct>
2433          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2434            <data type="hexBinary">
2435              <param name="length">2</param>
2436            </data>
2437          </element>
2438        </correct>
2439        <invalid>
2440          <doc>00</doc>
2441        </invalid>
2442      </testCase>
2443      <testCase>
2444        <correct>
2445          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2446            <data type="hexBinary">
2447              <param name="length">0</param>
2448            </data>
2449          </element>
2450        </correct>
2451        <invalid>
2452          <doc>00</doc>
2453        </invalid>
2454      </testCase>
2455      <testCase>
2456        <correct>
2457          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2458            <data type="hexBinary">
2459              <param name="length">2</param>
2460            </data>
2461          </element>
2462        </correct>
2463        <valid>
2464          <doc>0000</doc>
2465        </valid>
2466      </testCase>
2467      <testCase>
2468        <correct>
2469          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2470            <data type="hexBinary">
2471              <param name="length">3</param>
2472            </data>
2473          </element>
2474        </correct>
2475        <invalid>
2476          <doc>0000</doc>
2477        </invalid>
2478      </testCase>
2479      <testCase>
2480        <correct>
2481          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2482            <data type="hexBinary">
2483              <param name="length">1</param>
2484            </data>
2485          </element>
2486        </correct>
2487        <invalid>
2488          <doc>0000</doc>
2489        </invalid>
2490      </testCase>
2491      <testCase>
2492        <correct>
2493          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2494            <data type="hexBinary">
2495              <param name="length">2</param>
2496            </data>
2497          </element>
2498        </correct>
2499        <valid>
2500          <doc> 0000 </doc>
2501        </valid>
2502      </testCase>
2503      <testCase>
2504        <correct>
2505          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2506            <data type="hexBinary">
2507              <param name="length">3</param>
2508            </data>
2509          </element>
2510        </correct>
2511        <invalid>
2512          <doc> 0000 </doc>
2513        </invalid>
2514      </testCase>
2515      <testCase>
2516        <correct>
2517          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2518            <data type="hexBinary">
2519              <param name="length">1</param>
2520            </data>
2521          </element>
2522        </correct>
2523        <invalid>
2524          <doc> 0000 </doc>
2525        </invalid>
2526      </testCase>
2527      <testCase>
2528        <correct>
2529          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2530            <data type="hexBinary">
2531              <param name="length">2</param>
2532            </data>
2533          </element>
2534        </correct>
2535        <valid>
2536          <doc>AAAA</doc>
2537        </valid>
2538      </testCase>
2539      <testCase>
2540        <correct>
2541          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2542            <data type="hexBinary">
2543              <param name="length">3</param>
2544            </data>
2545          </element>
2546        </correct>
2547        <invalid>
2548          <doc>AAAA</doc>
2549        </invalid>
2550      </testCase>
2551      <testCase>
2552        <correct>
2553          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2554            <data type="hexBinary">
2555              <param name="length">1</param>
2556            </data>
2557          </element>
2558        </correct>
2559        <invalid>
2560          <doc>AAAA</doc>
2561        </invalid>
2562      </testCase>
2563    </testSuite>
2564    <testSuite>
2565      <documentation>Datatype float</documentation>
2566      <testCase>
2567        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
2568        <correct>
2569          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2570            <data type="float"/>
2571          </element>
2572        </correct>
2573        <valid>
2574          <doc>1.0</doc>
2575        </valid>
2576        <valid>
2577          <doc>1.</doc>
2578        </valid>
2579        <valid>
2580          <doc>.1</doc>
2581        </valid>
2582        <invalid>
2583          <doc>- 1</doc>
2584        </invalid>
2585        <invalid>
2586          <doc>1 .0</doc>
2587        </invalid>
2588        <invalid>
2589          <doc>+INF</doc>
2590        </invalid>
2591        <invalid>
2592          <doc>+NaN</doc>
2593        </invalid>
2594        <invalid>
2595          <doc>-NaN</doc>
2596        </invalid>
2597      </testCase>
2598      <testCase>
2599        <correct>
2600          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2601            <value type="float">0</value>
2602          </element>
2603        </correct>
2604        <valid>
2605          <doc>-0</doc>
2606        </valid>
2607        <valid>
2608          <doc>+0</doc>
2609        </valid>
2610        <valid>
2611          <doc> 0 </doc>
2612        </valid>
2613        <valid>
2614          <doc> 0. </doc>
2615        </valid>
2616        <valid>
2617          <doc> .0 </doc>
2618        </valid>
2619        <valid>
2620          <doc> 0.0 </doc>
2621        </valid>
2622        <valid>
2623          <doc> 0e0 </doc>
2624        </valid>
2625        <valid>
2626          <doc> 0E0 </doc>
2627        </valid>
2628        <valid>
2629          <doc> 0E+0 </doc>
2630        </valid>
2631        <valid>
2632          <doc> 0E-0 </doc>
2633        </valid>
2634        <invalid>
2635          <doc>1E0</doc>
2636        </invalid>
2637        <invalid>
2638          <doc>0.1E1</doc>
2639        </invalid>
2640        <invalid>
2641          <doc>10E-1</doc>
2642        </invalid>
2643        <invalid>
2644          <doc>+1</doc>
2645        </invalid>
2646        <invalid>
2647          <doc>-1</doc>
2648        </invalid>
2649        <invalid>
2650          <doc>INF</doc>
2651        </invalid>
2652        <invalid>
2653          <doc>INF </doc>
2654        </invalid>
2655        <invalid>
2656          <doc>-INF</doc>
2657        </invalid>
2658        <invalid>
2659          <doc>-INF </doc>
2660        </invalid>
2661        <invalid>
2662          <doc>NaN</doc>
2663        </invalid>
2664        <invalid>
2665          <doc> NaN </doc>
2666        </invalid>
2667      </testCase>
2668      <testCase>
2669        <correct>
2670          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2671            <value type="float">1E0</value>
2672          </element>
2673        </correct>
2674        <valid>
2675          <doc>0.1E1</doc>
2676        </valid>
2677        <valid>
2678          <doc>10E-1</doc>
2679        </valid>
2680        <valid>
2681          <doc>+1</doc>
2682        </valid>
2683        <invalid>
2684          <doc>0</doc>
2685        </invalid>
2686        <invalid>
2687          <doc>-0</doc>
2688        </invalid>
2689        <invalid>
2690          <doc>+0</doc>
2691        </invalid>
2692        <invalid>
2693          <doc> 0 </doc>
2694        </invalid>
2695        <invalid>
2696          <doc> 0. </doc>
2697        </invalid>
2698        <invalid>
2699          <doc> .0 </doc>
2700        </invalid>
2701        <invalid>
2702          <doc> 0.0 </doc>
2703        </invalid>
2704        <invalid>
2705          <doc> 0e0 </doc>
2706        </invalid>
2707        <invalid>
2708          <doc> 0E0 </doc>
2709        </invalid>
2710        <invalid>
2711          <doc> 0E+0 </doc>
2712        </invalid>
2713        <invalid>
2714          <doc> 0E-0 </doc>
2715        </invalid>
2716        <invalid>
2717          <doc>-1</doc>
2718        </invalid>
2719        <invalid>
2720          <doc>INF</doc>
2721        </invalid>
2722        <invalid>
2723          <doc>INF </doc>
2724        </invalid>
2725        <invalid>
2726          <doc>-INF</doc>
2727        </invalid>
2728        <invalid>
2729          <doc>-INF </doc>
2730        </invalid>
2731        <invalid>
2732          <doc>NaN</doc>
2733        </invalid>
2734        <invalid>
2735          <doc> NaN </doc>
2736        </invalid>
2737      </testCase>
2738      <testCase>
2739        <correct>
2740          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2741            <value type="float">-1</value>
2742          </element>
2743        </correct>
2744        <invalid>
2745          <doc>0</doc>
2746        </invalid>
2747        <invalid>
2748          <doc>-0</doc>
2749        </invalid>
2750        <invalid>
2751          <doc>+0</doc>
2752        </invalid>
2753        <invalid>
2754          <doc> 0 </doc>
2755        </invalid>
2756        <invalid>
2757          <doc> 0. </doc>
2758        </invalid>
2759        <invalid>
2760          <doc> .0 </doc>
2761        </invalid>
2762        <invalid>
2763          <doc> 0.0 </doc>
2764        </invalid>
2765        <invalid>
2766          <doc> 0e0 </doc>
2767        </invalid>
2768        <invalid>
2769          <doc> 0E0 </doc>
2770        </invalid>
2771        <invalid>
2772          <doc> 0E+0 </doc>
2773        </invalid>
2774        <invalid>
2775          <doc> 0E-0 </doc>
2776        </invalid>
2777        <invalid>
2778          <doc>1E0</doc>
2779        </invalid>
2780        <invalid>
2781          <doc>0.1E1</doc>
2782        </invalid>
2783        <invalid>
2784          <doc>10E-1</doc>
2785        </invalid>
2786        <invalid>
2787          <doc>+1</doc>
2788        </invalid>
2789        <invalid>
2790          <doc>INF</doc>
2791        </invalid>
2792        <invalid>
2793          <doc>INF </doc>
2794        </invalid>
2795        <invalid>
2796          <doc>-INF</doc>
2797        </invalid>
2798        <invalid>
2799          <doc>-INF </doc>
2800        </invalid>
2801        <invalid>
2802          <doc>NaN</doc>
2803        </invalid>
2804        <invalid>
2805          <doc> NaN </doc>
2806        </invalid>
2807      </testCase>
2808      <testCase>
2809        <correct>
2810          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2811            <value type="float">INF</value>
2812          </element>
2813        </correct>
2814        <valid>
2815          <doc>INF </doc>
2816        </valid>
2817        <invalid>
2818          <doc>0</doc>
2819        </invalid>
2820        <invalid>
2821          <doc>-0</doc>
2822        </invalid>
2823        <invalid>
2824          <doc>+0</doc>
2825        </invalid>
2826        <invalid>
2827          <doc> 0 </doc>
2828        </invalid>
2829        <invalid>
2830          <doc> 0. </doc>
2831        </invalid>
2832        <invalid>
2833          <doc> .0 </doc>
2834        </invalid>
2835        <invalid>
2836          <doc> 0.0 </doc>
2837        </invalid>
2838        <invalid>
2839          <doc> 0e0 </doc>
2840        </invalid>
2841        <invalid>
2842          <doc> 0E0 </doc>
2843        </invalid>
2844        <invalid>
2845          <doc> 0E+0 </doc>
2846        </invalid>
2847        <invalid>
2848          <doc> 0E-0 </doc>
2849        </invalid>
2850        <invalid>
2851          <doc>1E0</doc>
2852        </invalid>
2853        <invalid>
2854          <doc>0.1E1</doc>
2855        </invalid>
2856        <invalid>
2857          <doc>10E-1</doc>
2858        </invalid>
2859        <invalid>
2860          <doc>+1</doc>
2861        </invalid>
2862        <invalid>
2863          <doc>-1</doc>
2864        </invalid>
2865        <invalid>
2866          <doc>-INF</doc>
2867        </invalid>
2868        <invalid>
2869          <doc>-INF </doc>
2870        </invalid>
2871        <invalid>
2872          <doc>NaN</doc>
2873        </invalid>
2874        <invalid>
2875          <doc> NaN </doc>
2876        </invalid>
2877      </testCase>
2878      <testCase>
2879        <correct>
2880          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2881            <value type="float">-INF</value>
2882          </element>
2883        </correct>
2884        <valid>
2885          <doc>-INF </doc>
2886        </valid>
2887        <invalid>
2888          <doc>0</doc>
2889        </invalid>
2890        <invalid>
2891          <doc>-0</doc>
2892        </invalid>
2893        <invalid>
2894          <doc>+0</doc>
2895        </invalid>
2896        <invalid>
2897          <doc> 0 </doc>
2898        </invalid>
2899        <invalid>
2900          <doc> 0. </doc>
2901        </invalid>
2902        <invalid>
2903          <doc> .0 </doc>
2904        </invalid>
2905        <invalid>
2906          <doc> 0.0 </doc>
2907        </invalid>
2908        <invalid>
2909          <doc> 0e0 </doc>
2910        </invalid>
2911        <invalid>
2912          <doc> 0E0 </doc>
2913        </invalid>
2914        <invalid>
2915          <doc> 0E+0 </doc>
2916        </invalid>
2917        <invalid>
2918          <doc> 0E-0 </doc>
2919        </invalid>
2920        <invalid>
2921          <doc>1E0</doc>
2922        </invalid>
2923        <invalid>
2924          <doc>0.1E1</doc>
2925        </invalid>
2926        <invalid>
2927          <doc>10E-1</doc>
2928        </invalid>
2929        <invalid>
2930          <doc>+1</doc>
2931        </invalid>
2932        <invalid>
2933          <doc>-1</doc>
2934        </invalid>
2935        <invalid>
2936          <doc>INF</doc>
2937        </invalid>
2938        <invalid>
2939          <doc>INF </doc>
2940        </invalid>
2941        <invalid>
2942          <doc>NaN</doc>
2943        </invalid>
2944        <invalid>
2945          <doc> NaN </doc>
2946        </invalid>
2947      </testCase>
2948      <testCase>
2949        <correct>
2950          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
2951            <value type="float">NaN</value>
2952          </element>
2953        </correct>
2954        <valid>
2955          <doc> NaN </doc>
2956        </valid>
2957        <invalid>
2958          <doc>0</doc>
2959        </invalid>
2960        <invalid>
2961          <doc>-0</doc>
2962        </invalid>
2963        <invalid>
2964          <doc>+0</doc>
2965        </invalid>
2966        <invalid>
2967          <doc> 0 </doc>
2968        </invalid>
2969        <invalid>
2970          <doc> 0. </doc>
2971        </invalid>
2972        <invalid>
2973          <doc> .0 </doc>
2974        </invalid>
2975        <invalid>
2976          <doc> 0.0 </doc>
2977        </invalid>
2978        <invalid>
2979          <doc> 0e0 </doc>
2980        </invalid>
2981        <invalid>
2982          <doc> 0E0 </doc>
2983        </invalid>
2984        <invalid>
2985          <doc> 0E+0 </doc>
2986        </invalid>
2987        <invalid>
2988          <doc> 0E-0 </doc>
2989        </invalid>
2990        <invalid>
2991          <doc>1E0</doc>
2992        </invalid>
2993        <invalid>
2994          <doc>0.1E1</doc>
2995        </invalid>
2996        <invalid>
2997          <doc>10E-1</doc>
2998        </invalid>
2999        <invalid>
3000          <doc>+1</doc>
3001        </invalid>
3002        <invalid>
3003          <doc>-1</doc>
3004        </invalid>
3005        <invalid>
3006          <doc>INF</doc>
3007        </invalid>
3008        <invalid>
3009          <doc>INF </doc>
3010        </invalid>
3011        <invalid>
3012          <doc>-INF</doc>
3013        </invalid>
3014        <invalid>
3015          <doc>-INF </doc>
3016        </invalid>
3017      </testCase>
3018      <testCase>
3019        <correct>
3020          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3021            <data type="float">
3022              <param name="minExclusive">-INF</param>
3023            </data>
3024          </element>
3025        </correct>
3026        <valid>
3027          <doc>-1000</doc>
3028        </valid>
3029        <invalid>
3030          <doc>-INF</doc>
3031        </invalid>
3032      </testCase>
3033      <testCase>
3034        <correct>
3035          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3036            <data type="float">
3037              <param name="minExclusive">-1000</param>
3038            </data>
3039          </element>
3040        </correct>
3041        <invalid>
3042          <doc>-INF</doc>
3043        </invalid>
3044        <invalid>
3045          <doc>-1000</doc>
3046        </invalid>
3047      </testCase>
3048      <testCase>
3049        <correct>
3050          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3051            <data type="float">
3052              <param name="minExclusive">1000</param>
3053            </data>
3054          </element>
3055        </correct>
3056        <valid>
3057          <doc>INF</doc>
3058        </valid>
3059        <invalid>
3060          <doc>1000</doc>
3061        </invalid>
3062      </testCase>
3063      <testCase>
3064        <correct>
3065          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3066            <data type="float">
3067              <param name="minExclusive">INF</param>
3068            </data>
3069          </element>
3070        </correct>
3071        <invalid>
3072          <doc>1000</doc>
3073        </invalid>
3074        <invalid>
3075          <doc>INF</doc>
3076        </invalid>
3077      </testCase>
3078      <testCase>
3079        <correct>
3080          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3081            <data type="float">
3082              <param name="minExclusive">-1</param>
3083            </data>
3084          </element>
3085        </correct>
3086        <valid>
3087          <doc>1</doc>
3088        </valid>
3089        <invalid>
3090          <doc>-1</doc>
3091        </invalid>
3092      </testCase>
3093      <testCase>
3094        <correct>
3095          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3096            <data type="float">
3097              <param name="minExclusive">1</param>
3098            </data>
3099          </element>
3100        </correct>
3101        <invalid>
3102          <doc>-1</doc>
3103        </invalid>
3104        <invalid>
3105          <doc>1</doc>
3106        </invalid>
3107      </testCase>
3108      <testCase>
3109        <correct>
3110          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3111            <data type="float">
3112              <param name="minExclusive">0</param>
3113            </data>
3114          </element>
3115        </correct>
3116        <valid>
3117          <doc>1</doc>
3118        </valid>
3119        <invalid>
3120          <doc>0</doc>
3121        </invalid>
3122      </testCase>
3123      <testCase>
3124        <correct>
3125          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3126            <data type="float">
3127              <param name="minExclusive">1</param>
3128            </data>
3129          </element>
3130        </correct>
3131        <invalid>
3132          <doc>0</doc>
3133        </invalid>
3134        <invalid>
3135          <doc>1</doc>
3136        </invalid>
3137      </testCase>
3138      <testCase>
3139        <correct>
3140          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3141            <data type="float">
3142              <param name="minExclusive">-1</param>
3143            </data>
3144          </element>
3145        </correct>
3146        <valid>
3147          <doc>0</doc>
3148        </valid>
3149        <invalid>
3150          <doc>-1</doc>
3151        </invalid>
3152      </testCase>
3153      <testCase>
3154        <correct>
3155          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3156            <data type="float">
3157              <param name="minExclusive">0</param>
3158            </data>
3159          </element>
3160        </correct>
3161        <invalid>
3162          <doc>-1</doc>
3163        </invalid>
3164        <invalid>
3165          <doc>0</doc>
3166        </invalid>
3167      </testCase>
3168    </testSuite>
3169    <testSuite>
3170      <documentation>Datatype double</documentation>
3171      <testCase>
3172        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
3173        <correct>
3174          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3175            <data type="double"/>
3176          </element>
3177        </correct>
3178        <valid>
3179          <doc>1.0</doc>
3180        </valid>
3181        <valid>
3182          <doc>1.</doc>
3183        </valid>
3184        <valid>
3185          <doc>.1</doc>
3186        </valid>
3187        <invalid>
3188          <doc>- 1</doc>
3189        </invalid>
3190        <invalid>
3191          <doc>1 .0</doc>
3192        </invalid>
3193        <invalid>
3194          <doc>+INF</doc>
3195        </invalid>
3196        <invalid>
3197          <doc>+NaN</doc>
3198        </invalid>
3199        <invalid>
3200          <doc>-NaN</doc>
3201        </invalid>
3202      </testCase>
3203      <testCase>
3204        <correct>
3205          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3206            <value type="double">0</value>
3207          </element>
3208        </correct>
3209        <valid>
3210          <doc>-0</doc>
3211        </valid>
3212        <valid>
3213          <doc>+0</doc>
3214        </valid>
3215        <valid>
3216          <doc> 0 </doc>
3217        </valid>
3218        <valid>
3219          <doc> 0. </doc>
3220        </valid>
3221        <valid>
3222          <doc> .0 </doc>
3223        </valid>
3224        <valid>
3225          <doc> 0.0 </doc>
3226        </valid>
3227        <valid>
3228          <doc> 0e0 </doc>
3229        </valid>
3230        <valid>
3231          <doc> 0E0 </doc>
3232        </valid>
3233        <valid>
3234          <doc> 0E+0 </doc>
3235        </valid>
3236        <valid>
3237          <doc> 0E-0 </doc>
3238        </valid>
3239        <invalid>
3240          <doc>1E0</doc>
3241        </invalid>
3242        <invalid>
3243          <doc>0.1E1</doc>
3244        </invalid>
3245        <invalid>
3246          <doc>10E-1</doc>
3247        </invalid>
3248        <invalid>
3249          <doc>+1</doc>
3250        </invalid>
3251        <invalid>
3252          <doc>-1</doc>
3253        </invalid>
3254        <invalid>
3255          <doc>INF</doc>
3256        </invalid>
3257        <invalid>
3258          <doc>INF </doc>
3259        </invalid>
3260        <invalid>
3261          <doc>-INF</doc>
3262        </invalid>
3263        <invalid>
3264          <doc>-INF </doc>
3265        </invalid>
3266        <invalid>
3267          <doc>NaN</doc>
3268        </invalid>
3269        <invalid>
3270          <doc> NaN </doc>
3271        </invalid>
3272      </testCase>
3273      <testCase>
3274        <correct>
3275          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3276            <value type="double">1E0</value>
3277          </element>
3278        </correct>
3279        <valid>
3280          <doc>0.1E1</doc>
3281        </valid>
3282        <valid>
3283          <doc>10E-1</doc>
3284        </valid>
3285        <valid>
3286          <doc>+1</doc>
3287        </valid>
3288        <invalid>
3289          <doc>0</doc>
3290        </invalid>
3291        <invalid>
3292          <doc>-0</doc>
3293        </invalid>
3294        <invalid>
3295          <doc>+0</doc>
3296        </invalid>
3297        <invalid>
3298          <doc> 0 </doc>
3299        </invalid>
3300        <invalid>
3301          <doc> 0. </doc>
3302        </invalid>
3303        <invalid>
3304          <doc> .0 </doc>
3305        </invalid>
3306        <invalid>
3307          <doc> 0.0 </doc>
3308        </invalid>
3309        <invalid>
3310          <doc> 0e0 </doc>
3311        </invalid>
3312        <invalid>
3313          <doc> 0E0 </doc>
3314        </invalid>
3315        <invalid>
3316          <doc> 0E+0 </doc>
3317        </invalid>
3318        <invalid>
3319          <doc> 0E-0 </doc>
3320        </invalid>
3321        <invalid>
3322          <doc>-1</doc>
3323        </invalid>
3324        <invalid>
3325          <doc>INF</doc>
3326        </invalid>
3327        <invalid>
3328          <doc>INF </doc>
3329        </invalid>
3330        <invalid>
3331          <doc>-INF</doc>
3332        </invalid>
3333        <invalid>
3334          <doc>-INF </doc>
3335        </invalid>
3336        <invalid>
3337          <doc>NaN</doc>
3338        </invalid>
3339        <invalid>
3340          <doc> NaN </doc>
3341        </invalid>
3342      </testCase>
3343      <testCase>
3344        <correct>
3345          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3346            <value type="double">-1</value>
3347          </element>
3348        </correct>
3349        <invalid>
3350          <doc>0</doc>
3351        </invalid>
3352        <invalid>
3353          <doc>-0</doc>
3354        </invalid>
3355        <invalid>
3356          <doc>+0</doc>
3357        </invalid>
3358        <invalid>
3359          <doc> 0 </doc>
3360        </invalid>
3361        <invalid>
3362          <doc> 0. </doc>
3363        </invalid>
3364        <invalid>
3365          <doc> .0 </doc>
3366        </invalid>
3367        <invalid>
3368          <doc> 0.0 </doc>
3369        </invalid>
3370        <invalid>
3371          <doc> 0e0 </doc>
3372        </invalid>
3373        <invalid>
3374          <doc> 0E0 </doc>
3375        </invalid>
3376        <invalid>
3377          <doc> 0E+0 </doc>
3378        </invalid>
3379        <invalid>
3380          <doc> 0E-0 </doc>
3381        </invalid>
3382        <invalid>
3383          <doc>1E0</doc>
3384        </invalid>
3385        <invalid>
3386          <doc>0.1E1</doc>
3387        </invalid>
3388        <invalid>
3389          <doc>10E-1</doc>
3390        </invalid>
3391        <invalid>
3392          <doc>+1</doc>
3393        </invalid>
3394        <invalid>
3395          <doc>INF</doc>
3396        </invalid>
3397        <invalid>
3398          <doc>INF </doc>
3399        </invalid>
3400        <invalid>
3401          <doc>-INF</doc>
3402        </invalid>
3403        <invalid>
3404          <doc>-INF </doc>
3405        </invalid>
3406        <invalid>
3407          <doc>NaN</doc>
3408        </invalid>
3409        <invalid>
3410          <doc> NaN </doc>
3411        </invalid>
3412      </testCase>
3413      <testCase>
3414        <correct>
3415          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3416            <value type="double">INF</value>
3417          </element>
3418        </correct>
3419        <valid>
3420          <doc>INF </doc>
3421        </valid>
3422        <invalid>
3423          <doc>0</doc>
3424        </invalid>
3425        <invalid>
3426          <doc>-0</doc>
3427        </invalid>
3428        <invalid>
3429          <doc>+0</doc>
3430        </invalid>
3431        <invalid>
3432          <doc> 0 </doc>
3433        </invalid>
3434        <invalid>
3435          <doc> 0. </doc>
3436        </invalid>
3437        <invalid>
3438          <doc> .0 </doc>
3439        </invalid>
3440        <invalid>
3441          <doc> 0.0 </doc>
3442        </invalid>
3443        <invalid>
3444          <doc> 0e0 </doc>
3445        </invalid>
3446        <invalid>
3447          <doc> 0E0 </doc>
3448        </invalid>
3449        <invalid>
3450          <doc> 0E+0 </doc>
3451        </invalid>
3452        <invalid>
3453          <doc> 0E-0 </doc>
3454        </invalid>
3455        <invalid>
3456          <doc>1E0</doc>
3457        </invalid>
3458        <invalid>
3459          <doc>0.1E1</doc>
3460        </invalid>
3461        <invalid>
3462          <doc>10E-1</doc>
3463        </invalid>
3464        <invalid>
3465          <doc>+1</doc>
3466        </invalid>
3467        <invalid>
3468          <doc>-1</doc>
3469        </invalid>
3470        <invalid>
3471          <doc>-INF</doc>
3472        </invalid>
3473        <invalid>
3474          <doc>-INF </doc>
3475        </invalid>
3476        <invalid>
3477          <doc>NaN</doc>
3478        </invalid>
3479        <invalid>
3480          <doc> NaN </doc>
3481        </invalid>
3482      </testCase>
3483      <testCase>
3484        <correct>
3485          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3486            <value type="double">-INF</value>
3487          </element>
3488        </correct>
3489        <valid>
3490          <doc>-INF </doc>
3491        </valid>
3492        <invalid>
3493          <doc>0</doc>
3494        </invalid>
3495        <invalid>
3496          <doc>-0</doc>
3497        </invalid>
3498        <invalid>
3499          <doc>+0</doc>
3500        </invalid>
3501        <invalid>
3502          <doc> 0 </doc>
3503        </invalid>
3504        <invalid>
3505          <doc> 0. </doc>
3506        </invalid>
3507        <invalid>
3508          <doc> .0 </doc>
3509        </invalid>
3510        <invalid>
3511          <doc> 0.0 </doc>
3512        </invalid>
3513        <invalid>
3514          <doc> 0e0 </doc>
3515        </invalid>
3516        <invalid>
3517          <doc> 0E0 </doc>
3518        </invalid>
3519        <invalid>
3520          <doc> 0E+0 </doc>
3521        </invalid>
3522        <invalid>
3523          <doc> 0E-0 </doc>
3524        </invalid>
3525        <invalid>
3526          <doc>1E0</doc>
3527        </invalid>
3528        <invalid>
3529          <doc>0.1E1</doc>
3530        </invalid>
3531        <invalid>
3532          <doc>10E-1</doc>
3533        </invalid>
3534        <invalid>
3535          <doc>+1</doc>
3536        </invalid>
3537        <invalid>
3538          <doc>-1</doc>
3539        </invalid>
3540        <invalid>
3541          <doc>INF</doc>
3542        </invalid>
3543        <invalid>
3544          <doc>INF </doc>
3545        </invalid>
3546        <invalid>
3547          <doc>NaN</doc>
3548        </invalid>
3549        <invalid>
3550          <doc> NaN </doc>
3551        </invalid>
3552      </testCase>
3553      <testCase>
3554        <correct>
3555          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3556            <value type="double">NaN</value>
3557          </element>
3558        </correct>
3559        <valid>
3560          <doc> NaN </doc>
3561        </valid>
3562        <invalid>
3563          <doc>0</doc>
3564        </invalid>
3565        <invalid>
3566          <doc>-0</doc>
3567        </invalid>
3568        <invalid>
3569          <doc>+0</doc>
3570        </invalid>
3571        <invalid>
3572          <doc> 0 </doc>
3573        </invalid>
3574        <invalid>
3575          <doc> 0. </doc>
3576        </invalid>
3577        <invalid>
3578          <doc> .0 </doc>
3579        </invalid>
3580        <invalid>
3581          <doc> 0.0 </doc>
3582        </invalid>
3583        <invalid>
3584          <doc> 0e0 </doc>
3585        </invalid>
3586        <invalid>
3587          <doc> 0E0 </doc>
3588        </invalid>
3589        <invalid>
3590          <doc> 0E+0 </doc>
3591        </invalid>
3592        <invalid>
3593          <doc> 0E-0 </doc>
3594        </invalid>
3595        <invalid>
3596          <doc>1E0</doc>
3597        </invalid>
3598        <invalid>
3599          <doc>0.1E1</doc>
3600        </invalid>
3601        <invalid>
3602          <doc>10E-1</doc>
3603        </invalid>
3604        <invalid>
3605          <doc>+1</doc>
3606        </invalid>
3607        <invalid>
3608          <doc>-1</doc>
3609        </invalid>
3610        <invalid>
3611          <doc>INF</doc>
3612        </invalid>
3613        <invalid>
3614          <doc>INF </doc>
3615        </invalid>
3616        <invalid>
3617          <doc>-INF</doc>
3618        </invalid>
3619        <invalid>
3620          <doc>-INF </doc>
3621        </invalid>
3622      </testCase>
3623      <testCase>
3624        <correct>
3625          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3626            <data type="double">
3627              <param name="minExclusive">-INF</param>
3628            </data>
3629          </element>
3630        </correct>
3631        <valid>
3632          <doc>-1000</doc>
3633        </valid>
3634        <invalid>
3635          <doc>-INF</doc>
3636        </invalid>
3637      </testCase>
3638      <testCase>
3639        <correct>
3640          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3641            <data type="double">
3642              <param name="minExclusive">-1000</param>
3643            </data>
3644          </element>
3645        </correct>
3646        <invalid>
3647          <doc>-INF</doc>
3648        </invalid>
3649        <invalid>
3650          <doc>-1000</doc>
3651        </invalid>
3652      </testCase>
3653      <testCase>
3654        <correct>
3655          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3656            <data type="double">
3657              <param name="minExclusive">1000</param>
3658            </data>
3659          </element>
3660        </correct>
3661        <valid>
3662          <doc>INF</doc>
3663        </valid>
3664        <invalid>
3665          <doc>1000</doc>
3666        </invalid>
3667      </testCase>
3668      <testCase>
3669        <correct>
3670          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3671            <data type="double">
3672              <param name="minExclusive">INF</param>
3673            </data>
3674          </element>
3675        </correct>
3676        <invalid>
3677          <doc>1000</doc>
3678        </invalid>
3679        <invalid>
3680          <doc>INF</doc>
3681        </invalid>
3682      </testCase>
3683      <testCase>
3684        <correct>
3685          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3686            <data type="double">
3687              <param name="minExclusive">-1</param>
3688            </data>
3689          </element>
3690        </correct>
3691        <valid>
3692          <doc>1</doc>
3693        </valid>
3694        <invalid>
3695          <doc>-1</doc>
3696        </invalid>
3697      </testCase>
3698      <testCase>
3699        <correct>
3700          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3701            <data type="double">
3702              <param name="minExclusive">1</param>
3703            </data>
3704          </element>
3705        </correct>
3706        <invalid>
3707          <doc>-1</doc>
3708        </invalid>
3709        <invalid>
3710          <doc>1</doc>
3711        </invalid>
3712      </testCase>
3713      <testCase>
3714        <correct>
3715          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3716            <data type="double">
3717              <param name="minExclusive">0</param>
3718            </data>
3719          </element>
3720        </correct>
3721        <valid>
3722          <doc>1</doc>
3723        </valid>
3724        <invalid>
3725          <doc>0</doc>
3726        </invalid>
3727      </testCase>
3728      <testCase>
3729        <correct>
3730          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3731            <data type="double">
3732              <param name="minExclusive">1</param>
3733            </data>
3734          </element>
3735        </correct>
3736        <invalid>
3737          <doc>0</doc>
3738        </invalid>
3739        <invalid>
3740          <doc>1</doc>
3741        </invalid>
3742      </testCase>
3743      <testCase>
3744        <correct>
3745          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3746            <data type="double">
3747              <param name="minExclusive">-1</param>
3748            </data>
3749          </element>
3750        </correct>
3751        <valid>
3752          <doc>0</doc>
3753        </valid>
3754        <invalid>
3755          <doc>-1</doc>
3756        </invalid>
3757      </testCase>
3758      <testCase>
3759        <correct>
3760          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3761            <data type="double">
3762              <param name="minExclusive">0</param>
3763            </data>
3764          </element>
3765        </correct>
3766        <invalid>
3767          <doc>-1</doc>
3768        </invalid>
3769        <invalid>
3770          <doc>0</doc>
3771        </invalid>
3772      </testCase>
3773    </testSuite>
3774    <testSuite>
3775      <documentation>Datatype QName</documentation>
3776      <testCase>
3777        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
3778        <correct>
3779          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3780            <data type="QName"/>
3781          </element>
3782        </correct>
3783        <valid>
3784          <doc>foo</doc>
3785        </valid>
3786        <valid>
3787          <doc xmlns:x="http://www.example.com">x:foo</doc>
3788        </valid>
3789        <invalid>
3790          <doc>y:foo</doc>
3791        </invalid>
3792      </testCase>
3793      <testCase>
3794        <correct>
3795          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3796            <value xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com" type="QName">foo</value>
3797          </element>
3798        </correct>
3799        <valid>
3800          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> foo</doc>
3801        </valid>
3802        <invalid>
3803          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">x:foo</doc>
3804        </invalid>
3805        <invalid>
3806          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> x:foo </doc>
3807        </invalid>
3808        <invalid>
3809          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:foo</doc>
3810        </invalid>
3811        <invalid>
3812          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">x:bar</doc>
3813        </invalid>
3814        <invalid>
3815          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:bar</doc>
3816        </invalid>
3817        <invalid>
3818          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">y:foo</doc>
3819        </invalid>
3820        <invalid>
3821          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">y:bar</doc>
3822        </invalid>
3823      </testCase>
3824      <testCase>
3825        <correct>
3826          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3827            <value xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com" type="QName">x:foo</value>
3828          </element>
3829        </correct>
3830        <valid>
3831          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> x:foo </doc>
3832        </valid>
3833        <valid>
3834          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:foo</doc>
3835        </valid>
3836        <invalid>
3837          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">foo</doc>
3838        </invalid>
3839        <invalid>
3840          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> foo</doc>
3841        </invalid>
3842        <invalid>
3843          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">x:bar</doc>
3844        </invalid>
3845        <invalid>
3846          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:bar</doc>
3847        </invalid>
3848        <invalid>
3849          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">y:foo</doc>
3850        </invalid>
3851        <invalid>
3852          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">y:bar</doc>
3853        </invalid>
3854      </testCase>
3855      <testCase>
3856        <correct>
3857          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3858            <value xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com" type="QName">x:bar</value>
3859          </element>
3860        </correct>
3861        <valid>
3862          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:bar</doc>
3863        </valid>
3864        <invalid>
3865          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">foo</doc>
3866        </invalid>
3867        <invalid>
3868          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> foo</doc>
3869        </invalid>
3870        <invalid>
3871          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">x:foo</doc>
3872        </invalid>
3873        <invalid>
3874          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> x:foo </doc>
3875        </invalid>
3876        <invalid>
3877          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:foo</doc>
3878        </invalid>
3879        <invalid>
3880          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">y:foo</doc>
3881        </invalid>
3882        <invalid>
3883          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">y:bar</doc>
3884        </invalid>
3885      </testCase>
3886      <testCase>
3887        <correct>
3888          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3889            <value xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com" type="QName">y:foo</value>
3890          </element>
3891        </correct>
3892        <invalid>
3893          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">foo</doc>
3894        </invalid>
3895        <invalid>
3896          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> foo</doc>
3897        </invalid>
3898        <invalid>
3899          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">x:foo</doc>
3900        </invalid>
3901        <invalid>
3902          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> x:foo </doc>
3903        </invalid>
3904        <invalid>
3905          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:foo</doc>
3906        </invalid>
3907        <invalid>
3908          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">x:bar</doc>
3909        </invalid>
3910        <invalid>
3911          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:bar</doc>
3912        </invalid>
3913        <invalid>
3914          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">y:bar</doc>
3915        </invalid>
3916      </testCase>
3917      <testCase>
3918        <correct>
3919          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3920            <value xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com" type="QName">y:bar</value>
3921          </element>
3922        </correct>
3923        <invalid>
3924          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">foo</doc>
3925        </invalid>
3926        <invalid>
3927          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> foo</doc>
3928        </invalid>
3929        <invalid>
3930          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">x:foo</doc>
3931        </invalid>
3932        <invalid>
3933          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com"> x:foo </doc>
3934        </invalid>
3935        <invalid>
3936          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:foo</doc>
3937        </invalid>
3938        <invalid>
3939          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">x:bar</doc>
3940        </invalid>
3941        <invalid>
3942          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">z:bar</doc>
3943        </invalid>
3944        <invalid>
3945          <doc xmlns:z="http://www.example.com" xmlns:y="http://www.example.com/" xmlns:x="http://www.example.com">y:foo</doc>
3946        </invalid>
3947      </testCase>
3948    </testSuite>
3949    <testSuite>
3950      <documentation>Datatype NOTATION</documentation>
3951      <testCase>
3952        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
3953        <correct>
3954          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3955            <data type="NOTATION"/>
3956          </element>
3957        </correct>
3958        <valid>
3959          <doc>foo</doc>
3960        </valid>
3961        <valid>
3962          <doc xmlns:x="http://www.example.com">x:foo</doc>
3963        </valid>
3964        <invalid>
3965          <doc>y:foo</doc>
3966        </invalid>
3967      </testCase>
3968    </testSuite>
3969    <testSuite>
3970      <documentation>Datatype decimal</documentation>
3971      <testCase>
3972        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
3973        <correct>
3974          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3975            <data type="decimal"/>
3976          </element>
3977        </correct>
3978        <valid>
3979          <doc>1.0</doc>
3980        </valid>
3981        <valid>
3982          <doc>1.</doc>
3983        </valid>
3984        <valid>
3985          <doc>.1</doc>
3986        </valid>
3987        <valid>
3988          <doc>+1.0</doc>
3989        </valid>
3990        <valid>
3991          <doc>-1.0</doc>
3992        </valid>
3993        <valid>
3994          <doc> 1 </doc>
3995        </valid>
3996        <valid>
3997          <doc>99999999999999999999999999999999999999999999999999999999999999999</doc>
3998        </valid>
3999        <valid>
4000          <doc>-99999999999999999999999999999999999999999999999999999999999999999</doc>
4001        </valid>
4002        <invalid>
4003          <doc>junk</doc>
4004        </invalid>
4005        <invalid>
4006          <doc>--1</doc>
4007        </invalid>
4008        <invalid>
4009          <doc>++1</doc>
4010        </invalid>
4011        <invalid>
4012          <doc>+-1</doc>
4013        </invalid>
4014        <invalid>
4015          <doc>1.2.</doc>
4016        </invalid>
4017        <invalid>
4018          <doc>..1</doc>
4019        </invalid>
4020        <invalid>
4021          <doc>1..</doc>
4022        </invalid>
4023        <invalid>
4024          <doc>1 .2</doc>
4025        </invalid>
4026        <invalid>
4027          <doc>1+</doc>
4028        </invalid>
4029        <invalid>
4030          <doc>+ 1</doc>
4031        </invalid>
4032      </testCase>
4033      <testCase>
4034        <correct>
4035          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4036            <data type="decimal">
4037              <param name="minExclusive">0</param>
4038            </data>
4039          </element>
4040        </correct>
4041        <valid>
4042          <doc>1</doc>
4043        </valid>
4044        <invalid>
4045          <doc>0</doc>
4046        </invalid>
4047      </testCase>
4048      <testCase>
4049        <correct>
4050          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4051            <data type="decimal">
4052              <param name="minExclusive">1</param>
4053            </data>
4054          </element>
4055        </correct>
4056        <invalid>
4057          <doc>0</doc>
4058        </invalid>
4059        <invalid>
4060          <doc>1</doc>
4061        </invalid>
4062      </testCase>
4063    </testSuite>
4064    <testSuite>
4065      <documentation>Datatype nonPositiveInteger</documentation>
4066      <testCase>
4067        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
4068        <correct>
4069          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4070            <data type="nonPositiveInteger"/>
4071          </element>
4072        </correct>
4073        <valid>
4074          <doc>-1</doc>
4075        </valid>
4076        <valid>
4077          <doc>0</doc>
4078        </valid>
4079        <valid>
4080          <doc>-0</doc>
4081        </valid>
4082        <invalid>
4083          <doc>1</doc>
4084        </invalid>
4085      </testCase>
4086    </testSuite>
4087    <testSuite>
4088      <documentation>Datatype nonNegativeInteger</documentation>
4089      <testCase>
4090        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
4091        <correct>
4092          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4093            <data type="nonNegativeInteger"/>
4094          </element>
4095        </correct>
4096        <valid>
4097          <doc>1</doc>
4098        </valid>
4099        <valid>
4100          <doc>0</doc>
4101        </valid>
4102        <valid>
4103          <doc>+1</doc>
4104        </valid>
4105        <valid>
4106          <doc>+0</doc>
4107        </valid>
4108        <invalid>
4109          <doc>-1</doc>
4110        </invalid>
4111      </testCase>
4112    </testSuite>
4113    <testSuite>
4114      <documentation>Datatype positiveInteger</documentation>
4115      <testCase>
4116        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
4117        <correct>
4118          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4119            <data type="positiveInteger"/>
4120          </element>
4121        </correct>
4122        <valid>
4123          <doc>+1</doc>
4124        </valid>
4125        <valid>
4126          <doc>1</doc>
4127        </valid>
4128        <invalid>
4129          <doc>0</doc>
4130        </invalid>
4131        <invalid>
4132          <doc>-1</doc>
4133        </invalid>
4134      </testCase>
4135    </testSuite>
4136    <testSuite>
4137      <documentation>Datatype negativeInteger</documentation>
4138      <testCase>
4139        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
4140        <correct>
4141          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4142            <data type="negativeInteger"/>
4143          </element>
4144        </correct>
4145        <valid>
4146          <doc>-1</doc>
4147        </valid>
4148        <invalid>
4149          <doc>+1</doc>
4150        </invalid>
4151        <invalid>
4152          <doc>0</doc>
4153        </invalid>
4154      </testCase>
4155    </testSuite>
4156    <testSuite>
4157      <documentation>Datatype long</documentation>
4158      <testCase>
4159        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
4160        <correct>
4161          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4162            <data type="long"/>
4163          </element>
4164        </correct>
4165        <valid>
4166          <doc>1</doc>
4167        </valid>
4168        <valid>
4169          <doc>+1</doc>
4170        </valid>
4171        <valid>
4172          <doc>0</doc>
4173        </valid>
4174        <valid>
4175          <doc> 0 </doc>
4176        </valid>
4177        <invalid>
4178          <doc>1 2</doc>
4179        </invalid>
4180        <invalid>
4181          <doc>9999999999999999999999999999999999999999999999999999999999999999999999999</doc>
4182        </invalid>
4183        <valid>
4184          <doc>9223372036854775807</doc>
4185        </valid>
4186        <valid>
4187          <doc>-9223372036854775808</doc>
4188        </valid>
4189        <invalid>
4190          <doc>9223372036854775808</doc>
4191        </invalid>
4192        <invalid>
4193          <doc>-9223372036854775809</doc>
4194        </invalid>
4195        <invalid>
4196          <doc></doc>
4197        </invalid>
4198      </testCase>
4199    </testSuite>
4200    <testSuite>
4201      <documentation>Datatype int</documentation>
4202      <testCase>
4203        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
4204        <correct>
4205          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4206            <data type="int"/>
4207          </element>
4208        </correct>
4209        <valid>
4210          <doc>1</doc>
4211        </valid>
4212        <valid>
4213          <doc>01</doc>
4214        </valid>
4215        <valid>
4216          <doc> 1 </doc>
4217        </valid>
4218        <valid>
4219          <doc>2147483647</doc>
4220        </valid>
4221        <valid>
4222          <doc>-2147483648</doc>
4223        </valid>
4224        <invalid>
4225          <doc>2147483648</doc>
4226        </invalid>
4227        <invalid>
4228          <doc>-2147483649</doc>
4229        </invalid>
4230        <invalid>
4231          <doc>9999999999999999999999999999999999999999999999999999999999999999999999999</doc>
4232        </invalid>
4233      </testCase>
4234      <testCase>
4235        <correct>
4236          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4237            <value type="int">1</value>
4238          </element>
4239        </correct>
4240        <valid>
4241          <doc>+1</doc>
4242        </valid>
4243        <valid>
4244          <doc> 1 </doc>
4245        </valid>
4246        <valid>
4247          <doc>001</doc>
4248        </valid>
4249        <invalid>
4250          <doc>-1</doc>
4251        </invalid>
4252        <invalid>
4253          <doc> -1 </doc>
4254        </invalid>
4255        <invalid>
4256          <doc>-001</doc>
4257        </invalid>
4258      </testCase>
4259      <testCase>
4260        <correct>
4261          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4262            <value type="int">-1</value>
4263          </element>
4264        </correct>
4265        <valid>
4266          <doc> -1 </doc>
4267        </valid>
4268        <valid>
4269          <doc>-001</doc>
4270        </valid>
4271        <invalid>
4272          <doc>1</doc>
4273        </invalid>
4274        <invalid>
4275          <doc>+1</doc>
4276        </invalid>
4277        <invalid>
4278          <doc> 1 </doc>
4279        </invalid>
4280        <invalid>
4281          <doc>001</doc>
4282        </invalid>
4283      </testCase>
4284    </testSuite>
4285    <testSuite>
4286      <documentation>Datatype short</documentation>
4287      <testCase>
4288        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
4289        <correct>
4290          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4291            <data type="short"/>
4292          </element>
4293        </correct>
4294        <valid>
4295          <doc>1</doc>
4296        </valid>
4297        <valid>
4298          <doc>32767</doc>
4299        </valid>
4300        <valid>
4301          <doc>-32768</doc>
4302        </valid>
4303        <invalid>
4304          <doc>32768</doc>
4305        </invalid>
4306        <invalid>
4307          <doc>-32769</doc>
4308        </invalid>
4309        <invalid>
4310          <doc>9999999999999999999999999999999999999999999999999999999999999999999999999</doc>
4311        </invalid>
4312      </testCase>
4313      <testCase>
4314        <correct>
4315          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4316            <value type="short">1</value>
4317          </element>
4318        </correct>
4319        <valid>
4320          <doc>+1</doc>
4321        </valid>
4322        <valid>
4323          <doc> 1 </doc>
4324        </valid>
4325        <valid>
4326          <doc>001</doc>
4327        </valid>
4328        <invalid>
4329          <doc>-1</doc>
4330        </invalid>
4331        <invalid>
4332          <doc> -1 </doc>
4333        </invalid>
4334        <invalid>
4335          <doc>-001</doc>
4336        </invalid>
4337      </testCase>
4338      <testCase>
4339        <correct>
4340          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4341            <value type="short">-1</value>
4342          </element>
4343        </correct>
4344        <valid>
4345          <doc> -1 </doc>
4346        </valid>
4347        <valid>
4348          <doc>-001</doc>
4349        </valid>
4350        <invalid>
4351          <doc>1</doc>
4352        </invalid>
4353        <invalid>
4354          <doc>+1</doc>
4355        </invalid>
4356        <invalid>
4357          <doc> 1 </doc>
4358        </invalid>
4359        <invalid>
4360          <doc>001</doc>
4361        </invalid>
4362      </testCase>
4363    </testSuite>
4364    <testSuite>
4365      <documentation>Datatype byte</documentation>
4366      <testCase>
4367        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
4368        <correct>
4369          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4370            <data type="byte"/>
4371          </element>
4372        </correct>
4373        <valid>
4374          <doc>1</doc>
4375        </valid>
4376        <valid>
4377          <doc>127</doc>
4378        </valid>
4379        <valid>
4380          <doc>-128</doc>
4381        </valid>
4382        <invalid>
4383          <doc>128</doc>
4384        </invalid>
4385        <invalid>
4386          <doc>-129</doc>
4387        </invalid>
4388      </testCase>
4389    </testSuite>
4390    <testSuite>
4391      <documentation>Datatype unsignedLong</documentation>
4392      <testCase>
4393        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
4394        <correct>
4395          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4396            <data type="unsignedLong"/>
4397          </element>
4398        </correct>
4399        <valid>
4400          <doc>1</doc>
4401        </valid>
4402        <valid>
4403          <doc>+1</doc>
4404        </valid>
4405        <invalid>
4406          <doc>-1</doc>
4407        </invalid>
4408        <valid>
4409          <doc>0</doc>
4410        </valid>
4411        <valid>
4412          <doc>18446744073709551615</doc>
4413        </valid>
4414        <invalid>
4415          <doc>18446744073709551616</doc>
4416        </invalid>
4417        <invalid>
4418          <doc>-1</doc>
4419        </invalid>
4420      </testCase>
4421    </testSuite>
4422    <testSuite>
4423      <documentation>Datatype unsignedInt</documentation>
4424      <testCase>
4425        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
4426        <correct>
4427          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4428            <data type="unsignedInt"/>
4429          </element>
4430        </correct>
4431        <valid>
4432          <doc>1</doc>
4433        </valid>
4434        <valid>
4435          <doc>+1</doc>
4436        </valid>
4437        <valid>
4438          <doc>0</doc>
4439        </valid>
4440        <valid>
4441          <doc>4294967295</doc>
4442        </valid>
4443        <invalid>
4444          <doc>4294967296</doc>
4445        </invalid>
4446        <invalid>
4447          <doc>-1</doc>
4448        </invalid>
4449      </testCase>
4450    </testSuite>
4451    <testSuite>
4452      <documentation>Datatype unsignedShort</documentation>
4453      <testCase>
4454        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
4455        <correct>
4456          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4457            <data type="unsignedShort"/>
4458          </element>
4459        </correct>
4460        <valid>
4461          <doc>1</doc>
4462        </valid>
4463        <valid>
4464          <doc>+1</doc>
4465        </valid>
4466        <valid>
4467          <doc>0</doc>
4468        </valid>
4469        <valid>
4470          <doc>65535</doc>
4471        </valid>
4472        <invalid>
4473          <doc>65536</doc>
4474        </invalid>
4475        <invalid>
4476          <doc>-1</doc>
4477        </invalid>
4478      </testCase>
4479    </testSuite>
4480    <testSuite>
4481      <documentation>Datatype unsignedByte</documentation>
4482      <testCase>
4483        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
4484        <correct>
4485          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4486            <data type="unsignedByte"/>
4487          </element>
4488        </correct>
4489        <valid>
4490          <doc>1</doc>
4491        </valid>
4492        <valid>
4493          <doc>+1</doc>
4494        </valid>
4495        <valid>
4496          <doc>0</doc>
4497        </valid>
4498        <valid>
4499          <doc>255</doc>
4500        </valid>
4501        <invalid>
4502          <doc>256</doc>
4503        </invalid>
4504        <invalid>
4505          <doc>-1</doc>
4506        </invalid>
4507      </testCase>
4508    </testSuite>
4509    <testSuite>
4510      <documentation>Datatype string</documentation>
4511      <testCase>
4512        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
4513        <correct>
4514          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4515            <data type="string"/>
4516          </element>
4517        </correct>
4518        <valid>
4519          <doc>any thing at all!</doc>
4520        </valid>
4521      </testCase>
4522    </testSuite>
4523    <testSuite>
4524      <documentation>Datatype normalizedString</documentation>
4525      <testCase>
4526        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
4527        <correct>
4528          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4529            <data type="normalizedString"/>
4530          </element>
4531        </correct>
4532        <valid>
4533          <doc>any thing at all!</doc>
4534        </valid>
4535      </testCase>
4536    </testSuite>
4537    <testSuite>
4538      <documentation>Datatype token</documentation>
4539      <testCase>
4540        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
4541        <correct>
4542          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4543            <data type="token"/>
4544          </element>
4545        </correct>
4546        <valid>
4547          <doc>any thing at all!</doc>
4548        </valid>
4549      </testCase>
4550      <testCase>
4551        <correct>
4552          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4553            <value type="token"></value>
4554          </element>
4555        </correct>
4556        <valid>
4557          <doc> </doc>
4558        </valid>
4559        <valid>
4560          <doc>	
4561  &#13; </doc>
4562        </valid>
4563        <invalid>
4564          <doc>x </doc>
4565        </invalid>
4566        <invalid>
4567          <doc>x
4568  </doc>
4569        </invalid>
4570        <invalid>
4571          <doc>x&#13;</doc>
4572        </invalid>
4573        <invalid>
4574          <doc>x	</doc>
4575        </invalid>
4576        <invalid>
4577          <doc> x</doc>
4578        </invalid>
4579        <invalid>
4580          <doc>
4581  x</doc>
4582        </invalid>
4583        <invalid>
4584          <doc>&#13;x</doc>
4585        </invalid>
4586        <invalid>
4587          <doc>	x</doc>
4588        </invalid>
4589        <invalid>
4590          <doc>	
4591  &#13; x	
4592  &#13; </doc>
4593        </invalid>
4594        <invalid>
4595          <doc>x y </doc>
4596        </invalid>
4597        <invalid>
4598          <doc>x y
4599  </doc>
4600        </invalid>
4601        <invalid>
4602          <doc>x y&#13;</doc>
4603        </invalid>
4604        <invalid>
4605          <doc>x y	</doc>
4606        </invalid>
4607        <invalid>
4608          <doc>x y</doc>
4609        </invalid>
4610        <invalid>
4611          <doc>x
4612  y</doc>
4613        </invalid>
4614        <invalid>
4615          <doc>x&#13;y</doc>
4616        </invalid>
4617        <invalid>
4618          <doc>x	y</doc>
4619        </invalid>
4620        <invalid>
4621          <doc> x y</doc>
4622        </invalid>
4623        <invalid>
4624          <doc>
4625  x y</doc>
4626        </invalid>
4627        <invalid>
4628          <doc>&#13;x y</doc>
4629        </invalid>
4630        <invalid>
4631          <doc>	x y</doc>
4632        </invalid>
4633        <invalid>
4634          <doc>	
4635  &#13; x	
4636  &#13; y	
4637  &#13; </doc>
4638        </invalid>
4639      </testCase>
4640      <testCase>
4641        <correct>
4642          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4643            <value type="token">x </value>
4644          </element>
4645        </correct>
4646        <valid>
4647          <doc>x
4648  </doc>
4649        </valid>
4650        <valid>
4651          <doc>x&#13;</doc>
4652        </valid>
4653        <valid>
4654          <doc>x	</doc>
4655        </valid>
4656        <valid>
4657          <doc> x</doc>
4658        </valid>
4659        <valid>
4660          <doc>
4661  x</doc>
4662        </valid>
4663        <valid>
4664          <doc>&#13;x</doc>
4665        </valid>
4666        <valid>
4667          <doc>	x</doc>
4668        </valid>
4669        <valid>
4670          <doc>	
4671  &#13; x	
4672  &#13; </doc>
4673        </valid>
4674        <invalid>
4675          <doc></doc>
4676        </invalid>
4677        <invalid>
4678          <doc> </doc>
4679        </invalid>
4680        <invalid>
4681          <doc>	
4682  &#13; </doc>
4683        </invalid>
4684        <invalid>
4685          <doc>x y </doc>
4686        </invalid>
4687        <invalid>
4688          <doc>x y
4689  </doc>
4690        </invalid>
4691        <invalid>
4692          <doc>x y&#13;</doc>
4693        </invalid>
4694        <invalid>
4695          <doc>x y	</doc>
4696        </invalid>
4697        <invalid>
4698          <doc>x y</doc>
4699        </invalid>
4700        <invalid>
4701          <doc>x
4702  y</doc>
4703        </invalid>
4704        <invalid>
4705          <doc>x&#13;y</doc>
4706        </invalid>
4707        <invalid>
4708          <doc>x	y</doc>
4709        </invalid>
4710        <invalid>
4711          <doc> x y</doc>
4712        </invalid>
4713        <invalid>
4714          <doc>
4715  x y</doc>
4716        </invalid>
4717        <invalid>
4718          <doc>&#13;x y</doc>
4719        </invalid>
4720        <invalid>
4721          <doc>	x y</doc>
4722        </invalid>
4723        <invalid>
4724          <doc>	
4725  &#13; x	
4726  &#13; y	
4727  &#13; </doc>
4728        </invalid>
4729      </testCase>
4730      <testCase>
4731        <correct>
4732          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4733            <value type="token">x y </value>
4734          </element>
4735        </correct>
4736        <valid>
4737          <doc>x y
4738  </doc>
4739        </valid>
4740        <valid>
4741          <doc>x y&#13;</doc>
4742        </valid>
4743        <valid>
4744          <doc>x y	</doc>
4745        </valid>
4746        <valid>
4747          <doc>x y</doc>
4748        </valid>
4749        <valid>
4750          <doc>x
4751  y</doc>
4752        </valid>
4753        <valid>
4754          <doc>x&#13;y</doc>
4755        </valid>
4756        <valid>
4757          <doc>x	y</doc>
4758        </valid>
4759        <valid>
4760          <doc> x y</doc>
4761        </valid>
4762        <valid>
4763          <doc>
4764  x y</doc>
4765        </valid>
4766        <valid>
4767          <doc>&#13;x y</doc>
4768        </valid>
4769        <valid>
4770          <doc>	x y</doc>
4771        </valid>
4772        <valid>
4773          <doc>	
4774  &#13; x	
4775  &#13; y	
4776  &#13; </doc>
4777        </valid>
4778        <invalid>
4779          <doc></doc>
4780        </invalid>
4781        <invalid>
4782          <doc> </doc>
4783        </invalid>
4784        <invalid>
4785          <doc>	
4786  &#13; </doc>
4787        </invalid>
4788        <invalid>
4789          <doc>x </doc>
4790        </invalid>
4791        <invalid>
4792          <doc>x
4793  </doc>
4794        </invalid>
4795        <invalid>
4796          <doc>x&#13;</doc>
4797        </invalid>
4798        <invalid>
4799          <doc>x	</doc>
4800        </invalid>
4801        <invalid>
4802          <doc> x</doc>
4803        </invalid>
4804        <invalid>
4805          <doc>
4806  x</doc>
4807        </invalid>
4808        <invalid>
4809          <doc>&#13;x</doc>
4810        </invalid>
4811        <invalid>
4812          <doc>	x</doc>
4813        </invalid>
4814        <invalid>
4815          <doc>	
4816  &#13; x	
4817  &#13; </doc>
4818        </invalid>
4819      </testCase>
4820      <testCase>
4821        <correct>
4822          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4823            <data type="token">
4824              <param name="length">0</param>
4825            </data>
4826          </element>
4827        </correct>
4828        <valid>
4829          <doc></doc>
4830        </valid>
4831      </testCase>
4832      <testCase>
4833        <correct>
4834          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4835            <data type="token">
4836              <param name="length">1</param>
4837            </data>
4838          </element>
4839        </correct>
4840        <invalid>
4841          <doc></doc>
4842        </invalid>
4843      </testCase>
4844      <testCase>
4845        <correct>
4846          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4847            <data type="token">
4848              <param name="length">1</param>
4849            </data>
4850          </element>
4851        </correct>
4852        <valid>
4853          <doc>x</doc>
4854        </valid>
4855      </testCase>
4856      <testCase>
4857        <correct>
4858          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4859            <data type="token">
4860              <param name="length">2</param>
4861            </data>
4862          </element>
4863        </correct>
4864        <invalid>
4865          <doc>x</doc>
4866        </invalid>
4867      </testCase>
4868      <testCase>
4869        <correct>
4870          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4871            <data type="token">
4872              <param name="length">0</param>
4873            </data>
4874          </element>
4875        </correct>
4876        <invalid>
4877          <doc>x</doc>
4878        </invalid>
4879      </testCase>
4880      <testCase>
4881        <correct>
4882          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4883            <data type="token">
4884              <param name="length">1</param>
4885            </data>
4886          </element>
4887        </correct>
4888        <valid>
4889          <doc> x </doc>
4890        </valid>
4891      </testCase>
4892      <testCase>
4893        <correct>
4894          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4895            <data type="token">
4896              <param name="length">2</param>
4897            </data>
4898          </element>
4899        </correct>
4900        <invalid>
4901          <doc> x </doc>
4902        </invalid>
4903      </testCase>
4904      <testCase>
4905        <correct>
4906          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4907            <data type="token">
4908              <param name="length">0</param>
4909            </data>
4910          </element>
4911        </correct>
4912        <invalid>
4913          <doc> x </doc>
4914        </invalid>
4915      </testCase>
4916      <testCase>
4917        <correct>
4918          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4919            <data type="token">
4920              <param name="length">1</param>
4921            </data>
4922          </element>
4923        </correct>
4924        <valid>
4925          <doc>𐠀</doc>
4926        </valid>
4927      </testCase>
4928      <testCase>
4929        <correct>
4930          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4931            <data type="token">
4932              <param name="length">2</param>
4933            </data>
4934          </element>
4935        </correct>
4936        <invalid>
4937          <doc>𐠀</doc>
4938        </invalid>
4939      </testCase>
4940      <testCase>
4941        <correct>
4942          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4943            <data type="token">
4944              <param name="length">0</param>
4945            </data>
4946          </element>
4947        </correct>
4948        <invalid>
4949          <doc>𐠀</doc>
4950        </invalid>
4951      </testCase>
4952    </testSuite>
4953    <testSuite>
4954      <documentation>Datatype language</documentation>
4955      <testCase>
4956        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
4957        <correct>
4958          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4959            <data type="language"/>
4960          </element>
4961        </correct>
4962        <valid>
4963          <doc>en</doc>
4964        </valid>
4965        <valid>
4966          <doc>en-UK</doc>
4967        </valid>
4968        <valid>
4969          <doc>i-cherokee</doc>
4970        </valid>
4971        <valid>
4972          <doc>x-klingon</doc>
4973        </valid>
4974        <valid>
4975          <doc>en-uk-scotland</doc>
4976        </valid>
4977        <invalid>
4978          <doc>en.UK</doc>
4979        </invalid>
4980      </testCase>
4981    </testSuite>
4982    <testSuite>
4983      <documentation>Datatype Name</documentation>
4984      <testCase>
4985        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
4986        <correct>
4987          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4988            <data type="Name"/>
4989          </element>
4990        </correct>
4991        <valid>
4992          <doc>foo</doc>
4993        </valid>
4994        <valid>
4995          <doc>_0123456789</doc>
4996        </valid>
4997        <invalid>
4998          <doc>.</doc>
4999        </invalid>
5000        <valid>
5001          <doc>:</doc>
5002        </valid>
5003        <invalid>
5004          <doc>-</doc>
5005        </invalid>
5006        <invalid>
5007          <doc>1234</doc>
5008        </invalid>
5009        <valid>
5010          <doc> foo </doc>
5011        </valid>
5012      </testCase>
5013    </testSuite>
5014    <testSuite>
5015      <documentation>Datatype NCName</documentation>
5016      <testCase>
5017        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
5018        <correct>
5019          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
5020            <data type="NCName"/>
5021          </element>
5022        </correct>
5023        <valid>
5024          <doc>foo</doc>
5025        </valid>
5026        <invalid>
5027          <doc>foo:bar</doc>
5028        </invalid>
5029        <invalid>
5030          <doc>0foo</doc>
5031        </invalid>
5032      </testCase>
5033      <testCase>
5034        <correct>
5035          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
5036            <value type="NCName">foo</value>
5037          </element>
5038        </correct>
5039        <valid>
5040          <doc> foo </doc>
5041        </valid>
5042        <invalid>
5043          <doc>FOO</doc>
5044        </invalid>
5045        <invalid>
5046          <doc> FOO </doc>
5047        </invalid>
5048      </testCase>
5049      <testCase>
5050        <correct>
5051          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
5052            <value type="NCName">FOO</value>
5053          </element>
5054        </correct>
5055        <valid>
5056          <doc> FOO </doc>
5057        </valid>
5058        <invalid>
5059          <doc>foo</doc>
5060        </invalid>
5061        <invalid>
5062          <doc> foo </doc>
5063        </invalid>
5064      </testCase>
5065    </testSuite>
5066    <testSuite>
5067      <documentation>Datatype NMTOKEN</documentation>
5068      <testCase>
5069        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
5070        <correct>
5071          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
5072            <data type="NMTOKEN"/>
5073          </element>
5074        </correct>
5075        <valid>
5076          <doc>foo</doc>
5077        </valid>
5078        <valid>
5079          <doc>_</doc>
5080        </valid>
5081        <valid>
5082          <doc>.</doc>
5083        </valid>
5084        <valid>
5085          <doc>:</doc>
5086        </valid>
5087        <valid>
5088          <doc>-</doc>
5089        </valid>
5090        <valid>
5091          <doc>1234</doc>
5092        </valid>
5093        <valid>
5094          <doc> foo </doc>
5095        </valid>
5096      </testCase>
5097      <testCase>
5098        <correct>
5099          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
5100            <data type="NMTOKEN">
5101              <param name="length">3</param>
5102            </data>
5103          </element>
5104        </correct>
5105        <valid>
5106          <doc> foo </doc>
5107        </valid>
5108      </testCase>
5109      <testCase>
5110        <correct>
5111          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
5112            <data type="NMTOKEN">
5113              <param name="length">4</param>
5114            </data>
5115          </element>
5116        </correct>
5117        <invalid>
5118          <doc> foo </doc>
5119        </invalid>
5120      </testCase>
5121      <testCase>
5122        <correct>
5123          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
5124            <data type="NMTOKEN">
5125              <param name="length">2</param>
5126            </data>
5127          </element>
5128        </correct>
5129        <invalid>
5130          <doc> foo </doc>
5131        </invalid>
5132      </testCase>
5133      <testCase>
5134        <correct>
5135          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
5136            <data type="NMTOKEN">
5137              <param name="length">2</param>
5138            </data>
5139          </element>
5140        </correct>
5141        <valid>
5142          <doc>fo</doc>
5143        </valid>
5144      </testCase>
5145      <testCase>
5146        <correct>
5147          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
5148            <data type="NMTOKEN">
5149              <param name="length">3</param>
5150            </data>
5151          </element>
5152        </correct>
5153        <invalid>
5154          <doc>fo</doc>
5155        </invalid>
5156      </testCase>
5157      <testCase>
5158        <correct>
5159          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
5160            <data type="NMTOKEN">
5161              <param name="length">1</param>
5162            </data>
5163          </element>
5164        </correct>
5165        <invalid>
5166          <doc>fo</doc>
5167        </invalid>
5168      </testCase>
5169      <testCase>
5170        <correct>
5171          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
5172            <data type="NMTOKEN">
5173              <param name="length">1</param>
5174            </data>
5175          </element>
5176        </correct>
5177        <valid>
5178          <doc>f</doc>
5179        </valid>
5180      </testCase>
5181      <testCase>
5182        <correct>
5183          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
5184            <data type="NMTOKEN">
5185              <param name="length">2</param>
5186            </data>
5187          </element>
5188        </correct>
5189        <invalid>
5190          <doc>f</doc>
5191        </invalid>
5192      </testCase>
5193      <testCase>
5194        <correct>
5195          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
5196            <data type="NMTOKEN">
5197              <param name="length">0</param>
5198            </data>
5199          </element>
5200        </correct>
5201        <invalid>
5202          <doc>f</doc>
5203        </invalid>
5204      </testCase>
5205    </testSuite>
5206    <testSuite>
5207      <documentation>Datatype NMTOKENS</documentation>
5208      <testCase>
5209        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
5210        <correct>
5211          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
5212            <data type="NMTOKENS"/>
5213          </element>
5214        </correct>
5215        <valid>
5216          <doc>foo bar</doc>
5217        </valid>
5218        <invalid>
5219          <doc></doc>
5220        </invalid>
5221        <valid>
5222          <doc>1 2 3 4</doc>
5223        </valid>
5224      </testCase>
5225    </testSuite>
5226    <testSuite>
5227      <documentation>Datatype ID</documentation>
5228      <testCase>
5229        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
5230        <correct>
5231          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
5232            <data type="ID"/>
5233          </element>
5234        </correct>
5235        <valid>
5236          <doc>foobar</doc>
5237        </valid>
5238        <invalid>
5239          <doc>foo:bar</doc>
5240        </invalid>
5241        <invalid>
5242          <doc>foo bar</doc>
5243        </invalid>
5244      </testCase>
5245    </testSuite>
5246    <testSuite>
5247      <documentation>Datatype ENTITY</documentation>
5248      <testCase>
5249        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
5250        <correct>
5251          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
5252            <data type="ENTITY"/>
5253          </element>
5254        </correct>
5255        <invalid>
5256          <doc></doc>
5257        </invalid>
5258        <invalid>
5259          <doc>foo</doc>
5260        </invalid>
5261        <valid dtd="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt;&#10;]&gt;">
5262          <doc>foo</doc>
5263        </valid>
5264      </testCase>
5265    </testSuite>
5266    <testSuite>
5267      <documentation>Datatype ENTITIES</documentation>
5268      <testCase>
5269        <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
5270        <correct>
5271          <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
5272            <data type="ENTITIES"/>
5273          </element>
5274        </correct>
5275        <invalid>
5276          <doc></doc>
5277        </invalid>
5278        <invalid>
5279          <doc>foo</doc>
5280        </invalid>
5281        <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;">
5282          <doc> foo bar </doc>
5283        </valid>
5284      </testCase>
5285    </testSuite>
5286  </testSuite>