/ libxml2 / test / relaxng / OASIS / spectest.xml
spectest.xml
   1  <!DOCTYPE testSuite [
   2  <!ENTITY dii "<&#xE14;&#xE35;/>">
   3  ]>
   4  <testSuite>
   5  <author>James Clark</author>
   6  <email>jjc@jclark.com</email>
   7  <documentation>For October 26 version of the spec.</documentation>
   8  <testSuite>
   9  <section>3</section>
  10  <testSuite>
  11  <documentation>Various possible syntax errors.</documentation>
  12  <testCase>
  13  <section>3</section>
  14  <incorrect>
  15  <thisIsJunk/>
  16  </incorrect>
  17  </testCase>
  18  <testCase>
  19  <section>3</section>
  20  <incorrect>
  21  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
  22    <element name="foo">
  23      <empty/>
  24    </element>
  25    <start>
  26      <element name="foo">
  27        <empty/>
  28      </element>
  29    </start>
  30  </grammar>
  31  </incorrect>
  32  </testCase>
  33  <testCase>
  34  <section>3</section>
  35  <incorrect>
  36  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
  37    <define name="bar">
  38      <text/>
  39    </define>
  40    <text/>
  41  </element>
  42  </incorrect>
  43  </testCase>
  44  <testCase>
  45  <section>3</section>
  46  <incorrect>
  47  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
  48    <name>foo</name>
  49    <empty/>
  50  </element>
  51  </incorrect>
  52  </testCase>
  53  <testCase>
  54  <section>3</section>
  55  <incorrect>
  56  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
  57    <group>
  58      <name>bar</name>
  59    </group>
  60  </element>
  61  </incorrect>
  62  </testCase>
  63  <testCase>
  64  <section>3</section>
  65  <incorrect>
  66  <element xmlns="http://relaxng.org/ns/structure/1.0">
  67    <anyName>
  68      <except>
  69        <name>foo</name>
  70      </except>
  71      <except>
  72        <name>bar</name>
  73      </except>
  74    </anyName>
  75    <empty/>
  76  </element>
  77  </incorrect>
  78  </testCase>
  79  <testCase>
  80  <section>3</section>
  81  <incorrect>
  82  <element xmlns="http://relaxng.org/ns/structure/1.0">
  83    <nsName>
  84      <except>
  85        <name>foo</name>
  86      </except>
  87      <except>
  88        <name>bar</name>
  89      </except>
  90    </nsName>
  91    <empty/>
  92  </element>
  93  </incorrect>
  94  </testCase>
  95  <testCase>
  96  <section>3</section>
  97  <incorrect>
  98  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
  99    <data type="token">
 100      <except>
 101        <value>foo</value>
 102      </except>
 103      <except>
 104        <value>bar</value>
 105      </except>
 106    </data>
 107  </element>
 108  </incorrect>
 109  </testCase>
 110  <testCase>
 111  <section>3</section>
 112  <incorrect>
 113  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
 114    <empty name="bar"/>
 115  </element>
 116  </incorrect>
 117  </testCase>
 118  <testCase>
 119  <section>3</section>
 120  <incorrect>
 121  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo" extra="bar">
 122    <empty/>
 123  </element>
 124  </incorrect>
 125  </testCase>
 126  <testCase>
 127  <section>3</section>
 128  <incorrect>
 129  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
 130    <empty>
 131      <empty/>
 132    </empty>
 133  </element>
 134  </incorrect>
 135  </testCase>
 136  <testCase>
 137  <section>3</section>
 138  <incorrect>
 139  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
 140    <text>
 141      <empty/>
 142    </text>
 143  </element>
 144  </incorrect>
 145  </testCase>
 146  <testCase>
 147  <section>3</section>
 148  <incorrect>
 149  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
 150    <choice>
 151      <text/>
 152      <notAllowed>
 153        <empty/>
 154      </notAllowed>
 155    </choice>
 156  </element>
 157  </incorrect>
 158  </testCase>
 159  <testCase>
 160  <section>3</section>
 161  <incorrect>
 162  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
 163    <start>
 164      <ref name="foo">
 165        <empty/>
 166      </ref>
 167    </start>
 168    <define name="foo">
 169      <element name="foo">
 170        <empty/>
 171      </element>
 172    </define>
 173  </grammar>
 174  </incorrect>
 175  </testCase>
 176  <testCase>
 177  <section>3</section>
 178  <incorrect>
 179  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
 180    <start>
 181      <grammar>
 182        <start>
 183          <parentRef name="foo">
 184            <empty/>
 185          </parentRef>
 186        </start>
 187      </grammar>
 188    </start>
 189    <define name="foo">
 190      <element name="foo">
 191        <empty/>
 192      </element>
 193    </define>
 194  </grammar>
 195  </incorrect>
 196  </testCase>
 197  </testSuite>
 198  <testSuite>
 199  <documentation>Tests for obsolete syntax</documentation>
 200  <testCase>
 201  <section>3</section>
 202  <incorrect>
 203  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
 204    <start name="foo">
 205      <element name="foo">
 206        <empty/>
 207      </element>
 208    </start>
 209  </grammar>
 210  </incorrect>
 211  </testCase>
 212  <testCase>
 213  <section>3</section>
 214  <incorrect>
 215  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo" ns="http://www.example.com">
 216    <attribute name="bar" global="true">
 217      <text/>
 218    </attribute>
 219  </element>
 220  </incorrect>
 221  </testCase>
 222  <testCase>
 223  <section>3</section>
 224  <incorrect>
 225  <element xmlns="http://relaxng.org/ns/structure/1.0">
 226    <not>
 227      <name>foo</name>
 228    </not>
 229    <empty/>
 230  </element>
 231  </incorrect>
 232  </testCase>
 233  <testCase>
 234  <section>3</section>
 235  <incorrect>
 236  <element xmlns="http://relaxng.org/ns/structure/1.0">
 237    <difference>
 238      <anyName/>
 239      <name>foo</name>
 240    </difference>
 241    <empty/>
 242  </element>
 243  </incorrect>
 244  </testCase>
 245  <testCase>
 246  <section>3</section>
 247  <incorrect>
 248  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
 249    <data type="token" key="foo"/>
 250  </element>
 251  </incorrect>
 252  </testCase>
 253  <testCase>
 254  <section>3</section>
 255  <incorrect>
 256  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
 257    <data type="token" keyRef="foo"/>
 258  </element>
 259  </incorrect>
 260  </testCase>
 261  <testCase>
 262  <section>3</section>
 263  <incorrect>
 264  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
 265    <keyRef name="foo">
 266      <data type="token"/>
 267    </keyRef>
 268  </element>
 269  </incorrect>
 270  </testCase>
 271  <testCase>
 272  <section>3</section>
 273  <incorrect>
 274  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
 275    <key name="foo">
 276      <data type="token"/>
 277    </key>
 278  </element>
 279  </incorrect>
 280  </testCase>
 281  </testSuite>
 282  <testSuite>
 283  <documentation>Tests for missing attributes and child elements</documentation>
 284  <testCase>
 285  <section>3</section>
 286  <incorrect>
 287  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 288  </element>
 289  </incorrect>
 290  </testCase>
 291  <testCase>
 292  <section>3</section>
 293  <incorrect>
 294  <element xmlns="http://relaxng.org/ns/structure/1.0">
 295    <name>foo</name>
 296  </element>
 297  </incorrect>
 298  </testCase>
 299  <testCase>
 300  <section>3</section>
 301  <incorrect>
 302  <element xmlns="http://relaxng.org/ns/structure/1.0">
 303  </element>
 304  </incorrect>
 305  </testCase>
 306  <testCase>
 307  <section>3</section>
 308  <incorrect>
 309  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 310    <attribute/>
 311  </element>
 312  </incorrect>
 313  </testCase>
 314  <testCase>
 315  <section>3</section>
 316  <incorrect>
 317  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 318    <group/>
 319  </element>
 320  </incorrect>
 321  </testCase>
 322  <testCase>
 323  <section>3</section>
 324  <incorrect>
 325  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 326    <interleave/>
 327  </element>
 328  </incorrect>
 329  </testCase>
 330  <testCase>
 331  <section>3</section>
 332  <incorrect>
 333  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 334    <choice/>
 335  </element>
 336  </incorrect>
 337  </testCase>
 338  <testCase>
 339  <section>3</section>
 340  <incorrect>
 341  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 342    <optional/>
 343  </element>
 344  </incorrect>
 345  </testCase>
 346  <testCase>
 347  <section>3</section>
 348  <incorrect>
 349  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 350    <zeroOrMore/>
 351  </element>
 352  </incorrect>
 353  </testCase>
 354  <testCase>
 355  <section>3</section>
 356  <incorrect>
 357  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 358    <oneOrMore/>
 359  </element>
 360  </incorrect>
 361  </testCase>
 362  <testCase>
 363  <section>3</section>
 364  <incorrect>
 365  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 366    <list/>
 367  </element>
 368  </incorrect>
 369  </testCase>
 370  <testCase>
 371  <section>3</section>
 372  <incorrect>
 373  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 374    <mixed/>
 375  </element>
 376  </incorrect>
 377  </testCase>
 378  <testCase>
 379  <section>3</section>
 380  <incorrect>
 381  <element xmlns="http://relaxng.org/ns/structure/1.0">
 382    <choice/>
 383    <empty/>
 384  </element>
 385  </incorrect>
 386  </testCase>
 387  <testCase>
 388  <section>3</section>
 389  <incorrect>
 390  <element xmlns="http://relaxng.org/ns/structure/1.0">
 391    <anyName>
 392      <except/>
 393    </anyName>
 394    <empty/>
 395  </element>
 396  </incorrect>
 397  </testCase>
 398  <testCase>
 399  <section>3</section>
 400  <incorrect>
 401  <element xmlns="http://relaxng.org/ns/structure/1.0">
 402    <nsName ns="">
 403      <except/>
 404    </nsName>
 405    <empty/>
 406  </element>
 407  </incorrect>
 408  </testCase>
 409  <testCase>
 410  <section>3</section>
 411  <incorrect>
 412  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 413    <data type="string">
 414      <except/>
 415    </data>
 416  </element>
 417  </incorrect>
 418  </testCase>
 419  <testCase>
 420  <section>3</section>
 421  <incorrect>
 422  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 423    <data/>
 424  </element>
 425  </incorrect>
 426  </testCase>
 427  <testCase>
 428  <section>3</section>
 429  <incorrect>
 430  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 431    <data type="string">
 432      <param/>
 433    </data>
 434  </element>
 435  </incorrect>
 436  </testCase>
 437  <testCase>
 438  <section>3</section>
 439  <incorrect>
 440  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 441    <grammar>
 442      <start/>
 443    </grammar>
 444  </element>
 445  </incorrect>
 446  </testCase>
 447  <testCase>
 448  <section>3</section>
 449  <incorrect>
 450  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
 451    <start>
 452      <element name="bar">
 453        <empty/>
 454      </element>
 455    </start>
 456    <define name="baz"/>
 457  </grammar>
 458  </incorrect>
 459  </testCase>
 460  <testCase>
 461  <section>3</section>
 462  <incorrect>
 463  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 464    <externalRef/>
 465  </element>
 466  </incorrect>
 467  </testCase>
 468  <testCase>
 469  <section>3</section>
 470  <incorrect>
 471  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
 472    <include/>
 473    <start>
 474      <element name="foo">
 475        <empty/>
 476      </element>
 477    </start>
 478  </grammar>
 479  </incorrect>
 480  </testCase>
 481  <testCase>
 482  <section>3</section>
 483  <incorrect>
 484  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
 485    <start>
 486      <element name="foo">
 487        <empty/>
 488      </element>
 489    </start>
 490    <define>
 491      <element name="bar">
 492        <empty/>
 493      </element>
 494    </define>
 495  </grammar>
 496  </incorrect>
 497  </testCase>
 498  <testCase>
 499  <section>3</section>
 500  <incorrect>
 501  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
 502    <start>
 503      <ref/>
 504    </start>
 505    <define name="foo">
 506      <element name="foo">
 507        <empty/>
 508      </element>
 509    </define>
 510  </grammar>
 511  </incorrect>
 512  </testCase>
 513  <testCase>
 514  <section>3</section>
 515  <incorrect>
 516  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
 517    <start>
 518      <grammar>
 519        <start>
 520          <parentRef/>
 521        </start>
 522      </grammar>
 523    </start>
 524    <define name="foo">
 525      <element name="foo">
 526        <empty/>
 527      </element>
 528    </define>
 529  </grammar>
 530  </incorrect>
 531  </testCase>
 532  </testSuite>
 533  <testSuite>
 534  <documentation>Checking of ns attribute</documentation>
 535  <testCase>
 536  <section>3</section>
 537  <correct>
 538  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" ns="">
 539    <empty/>
 540  </element>
 541  </correct>
 542  <valid>
 543  <foo/>
 544  </valid>
 545  </testCase>
 546  <testCase>
 547  <section>3</section>
 548  <documentation>No checking of ns attribute is performed</documentation>
 549  <correct>
 550  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" ns="DAV:">
 551    <empty/>
 552  </element>
 553  </correct>
 554  <valid>
 555  <foo xmlns="DAV:"/>
 556  </valid>
 557  </testCase>
 558  <testCase>
 559  <section>3</section>
 560  <documentation>No checking of ns attribute is performed</documentation>
 561  <correct>
 562  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" ns="xyzzy">
 563    <empty/>
 564  </element>
 565  </correct>
 566  </testCase>
 567  <testCase>
 568  <section>3</section>
 569  <documentation>No checking of ns attribute is performed</documentation>
 570  <correct>
 571  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" ns="bad_scheme://">
 572    <empty/>
 573  </element>
 574  </correct>
 575  </testCase>
 576  </testSuite>
 577  <testSuite>
 578  <documentation>Checking of datatypeLibrary attribute</documentation>
 579  <testCase>
 580  <section>3</section>
 581  <documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation>
 582  <incorrect>
 583  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="foo_bar:xyzzy">
 584    <empty/>
 585  </element>
 586  </incorrect>
 587  </testCase>
 588  <testCase>
 589  <section>3</section>
 590  <documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation>
 591  <correct>
 592  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="foobar:xyzzy">
 593    <empty/>
 594  </element>
 595  </correct>
 596  <valid>
 597  <foo/>
 598  </valid>
 599  </testCase>
 600  <testCase>
 601  <section>3</section>
 602  <documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation>
 603  <correct>
 604  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http:ok">
 605    <empty/>
 606  </element>
 607  </correct>
 608  <valid>
 609  <foo/>
 610  </valid>
 611  </testCase>
 612  <testCase>
 613  <section>3</section>
 614  <documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation>
 615  <incorrect>
 616  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="foo:">
 617    <empty/>
 618  </element>
 619  </incorrect>
 620  </testCase>
 621  <testCase>
 622  <section>3</section>
 623  <documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation>
 624  <incorrect>
 625  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.example.com/%">
 626    <empty/>
 627  </element>
 628  </incorrect>
 629  </testCase>
 630  <testCase>
 631  <section>3</section>
 632  <documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation>
 633  <incorrect>
 634  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.example.com/%xx">
 635    <empty/>
 636  </element>
 637  </incorrect>
 638  </testCase>
 639  <testCase>
 640  <section>3</section>
 641  <documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation>
 642  <correct>
 643  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.example.com/%Aa">
 644    <empty/>
 645  </element>
 646  </correct>
 647  <valid>
 648  <foo/>
 649  </valid>
 650  </testCase>
 651  <testCase>
 652  <section>3</section>
 653  <documentation>Value of datatypeLibrary attribute must not be relative</documentation>
 654  <incorrect>
 655  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="xyzzy">
 656    <empty/>
 657  </element>
 658  </incorrect>
 659  </testCase>
 660  <testCase>
 661  <section>3</section>
 662  <documentation>Value of datatypeLibrary attribute must not be relative</documentation>
 663  <incorrect>
 664  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="xyzzy#foo:bar">
 665    <empty/>
 666  </element>
 667  </incorrect>
 668  </testCase>
 669  <testCase>
 670  <section>3</section>
 671  <documentation>Value of datatypeLibrary attribute must not be relative</documentation>
 672  <incorrect>
 673  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="xyzzy?foo:bar">
 674    <empty/>
 675  </element>
 676  </incorrect>
 677  </testCase>
 678  <testCase>
 679  <section>3</section>
 680  <documentation>Value of datatypeLibrary attribute must not be relative</documentation>
 681  <incorrect>
 682  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="xyzzy/foo:bar">
 683    <empty/>
 684  </element>
 685  </incorrect>
 686  </testCase>
 687  <testCase>
 688  <section>3</section>
 689  <correct>
 690  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="foo:bar">
 691    <empty/>
 692  </element>
 693  </correct>
 694  <valid>
 695  <foo/>
 696  </valid>
 697  </testCase>
 698  <testCase>
 699  <section>3</section>
 700  <correct>
 701  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="">
 702    <empty/>
 703  </element>
 704  </correct>
 705  <valid>
 706  <foo/>
 707  </valid>
 708  </testCase>
 709  <testCase>
 710  <section>3</section>
 711  <correct>
 712  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 713    <data datatypeLibrary="" type="string"/>
 714  </element>
 715  </correct>
 716  <valid>
 717  <foo>x</foo>
 718  </valid>
 719  </testCase>
 720  <testCase>
 721  <section>3</section>
 722  <documentation>Value of datatypeLibrary attribute must not contain fragment identifier</documentation>
 723  <incorrect>
 724  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"
 725            datatypeLibrary="http://www.example.com#xyzzy">
 726    <empty/>
 727  </element>
 728  </incorrect>
 729  </testCase>
 730  <testCase>
 731  <section>3</section>
 732  <documentation>Value of datatypeLibrary attribute must not contain fragment identifier</documentation>
 733  <incorrect>
 734  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"
 735            datatypeLibrary="http://www.example.com#">
 736    <empty/>
 737  </element>
 738  </incorrect>
 739  </testCase>
 740  </testSuite>
 741  <testSuite>
 742  <documentation>Tests for QName and NCNames in schemas</documentation>
 743  <testCase>
 744  <section>3</section>
 745  <correct>
 746  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 747    <element name="&#xE14;&#xE35;">
 748      <empty/>
 749    </element>
 750  </element>
 751  </correct>
 752  <valid>
 753  <foo>&dii;</foo>
 754  </valid>
 755  </testCase>
 756  <testCase>
 757  <section>3</section>
 758  <incorrect>
 759  <element name="&#xE35;" xmlns="http://relaxng.org/ns/structure/1.0">
 760    <empty/>
 761  </element>
 762  </incorrect>
 763  </testCase>
 764  <testCase>
 765  <section>3</section>
 766  <incorrect>
 767  <element name="" xmlns="http://relaxng.org/ns/structure/1.0">
 768    <empty/>
 769  </element>
 770  </incorrect>
 771  </testCase>
 772  <testCase>
 773  <section>3</section>
 774  <incorrect>
 775  <element xmlns="http://relaxng.org/ns/structure/1.0">
 776    <name>&#xE35;</name>
 777    <empty/>
 778  </element>
 779  </incorrect>
 780  </testCase>
 781  <testCase>
 782  <section>3</section>
 783  <incorrect>
 784  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 785    <attribute name="&#xE35;"/>
 786    <empty/>
 787  </element>
 788  </incorrect>
 789  </testCase>
 790  <testCase>
 791  <section>3</section>
 792  <incorrect>
 793  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
 794    <start>
 795      <ref name="&#xE35;"/>
 796    </start>
 797    <define name="&#xE35;">
 798      <element name="foo">
 799        <empty/>
 800      </element>
 801    </define>
 802  </grammar>
 803  </incorrect>
 804  </testCase>
 805  <testCase>
 806  <section>3</section>
 807  <correct>
 808  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
 809    <start>
 810      <ref name="&#xE14;&#xE35;"/>
 811    </start>
 812    <define name="&#xE14;&#xE35;">
 813      <element name="foo">
 814        <empty/>
 815      </element>
 816    </define>
 817  </grammar>
 818  </correct>
 819  <valid>
 820  <foo/>
 821  </valid>
 822  </testCase>
 823  <testCase>
 824  <section>3</section>
 825  <incorrect>
 826  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
 827    <start>
 828      <ref name=""/>
 829    </start>
 830    <define name="">
 831      <element name="foo">
 832        <empty/>
 833      </element>
 834    </define>
 835  </grammar>
 836  </incorrect>
 837  </testCase>
 838  <testCase>
 839  <section>3</section>
 840  <incorrect>
 841  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
 842    <start>
 843      <ref name="x y"/>
 844    </start>
 845    <define name="x y">
 846      <element name="foo">
 847        <empty/>
 848      </element>
 849    </define>
 850  </grammar>
 851  </incorrect>
 852  </testCase>
 853  <testCase>
 854  <section>3</section>
 855  <incorrect>
 856  <grammar xmlns="http://relaxng.org/ns/structure/1.0"
 857           xmlns:x="http://www.example.com/x">
 858    <start>
 859      <ref name="x:y"/>
 860    </start>
 861    <define name="x:y">
 862      <element name="foo">
 863        <empty/>
 864      </element>
 865    </define>
 866  </grammar>
 867  </incorrect>
 868  </testCase>
 869  <testCase>
 870  <section>3</section>
 871  <incorrect>
 872  <element xmlns="http://relaxng.org/ns/structure/1.0"
 873           xmlns:x="http://www.example.com/x"
 874           name="x:&#xE35;">
 875    <empty/>
 876  </element>
 877  </incorrect>
 878  </testCase>
 879  <testCase>
 880  <section>3</section>
 881  <incorrect>
 882  <element xmlns="http://relaxng.org/ns/structure/1.0"
 883           xmlns:x="http://www.example.com/x"
 884           name="x:y:z">
 885    <empty/>
 886  </element>
 887  </incorrect>
 888  </testCase>
 889  <testCase>
 890  <section>3</section>
 891  <incorrect>
 892  <element xmlns="http://relaxng.org/ns/structure/1.0"
 893           xmlns:x="http://www.example.com/x"
 894           name="x:">
 895    <empty/>
 896  </element>
 897  </incorrect>
 898  </testCase>
 899  </testSuite>
 900  <testSuite>
 901  <documentation>Tests for elements that allow only a single pattern child.</documentation>
 902  <testCase>
 903  <section>3</section>
 904  <incorrect>
 905  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
 906    <start>
 907      <element name="foo">
 908        <empty/>
 909      </element>
 910      <empty/>
 911    </start>
 912  </grammar>
 913  </incorrect>
 914  </testCase>
 915  <testCase>
 916  <section>3</section>
 917  <incorrect>
 918  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
 919    <attribute name="bar">
 920      <text/>
 921      <empty/>
 922    </attribute>
 923  </element>
 924  </incorrect>
 925  </testCase>
 926  <testCase>
 927  <section>3</section>
 928  <incorrect>
 929  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
 930    <attribute>
 931      <name>bar</name>
 932      <text/>
 933      <empty/>
 934    </attribute>
 935  </element>
 936  </incorrect>
 937  </testCase>
 938  </testSuite>
 939  <testSuite>
 940  <documentation>Tests for foreign element and attribute handling.</documentation>
 941  <testCase>
 942  <section>3</section>
 943  <incorrect>
 944  <r:element name="foo" xmlns:r="http://relaxng.org/ns/structure/1.0" r:a="val">
 945    <r:empty/>
 946  </r:element>
 947  </incorrect>
 948  </testCase>
 949  <testCase>
 950  <section>3</section>
 951  <incorrect>
 952  <element xmlns="http://relaxng.org/ns/structure/1.0">
 953    <name>foo<eg:comment xmlns:eg="http://www.example.com"/></name>
 954    <empty/>
 955  </element>
 956  </incorrect>
 957  </testCase>
 958  <testCase>
 959  <section>3</section>
 960  <incorrect>
 961  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
 962    <value>foo<eg:comment xmlns:eg="http://www.example.com"/></value>
 963  </element>
 964  </incorrect>
 965  </testCase>
 966  <testCase>
 967  <section>3</section>
 968  <correct>
 969  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
 970    <data type="string"><eg:comment xmlns:eg="http://www.example.com"/></data>
 971  </element>
 972  </correct>
 973  <valid>
 974  <foo>X</foo>
 975  </valid>
 976  </testCase>
 977  <testCase>
 978  <section>3</section>
 979  <correct>
 980  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
 981    <empty>
 982      <ext xmlns="http://www.example.com">
 983        <element xmlns="http://relaxng.org/ns/structure/1.0"/>
 984      </ext>
 985    </empty>
 986  </element>
 987  </correct>
 988  <valid>
 989  <foo/>
 990  </valid>
 991  </testCase>
 992  <testCase>
 993  <section>3</section>
 994  <correct>
 995  <grammar xmlns="http://relaxng.org/ns/structure/1.0" xmlns:eg="http://www.example.com">
 996    <eg:comment/>
 997    <eg:comment/>
 998    <start>
 999      <eg:comment/>
1000      <element>
1001        <eg:comment/>
1002        <eg:comment/>
1003        <name>foo</name>
1004        <eg:comment/>
1005        <data type="string"/>
1006        <eg:comment/>
1007        <empty>
1008          <eg:comment/>
1009          <eg:comment/>
1010        </empty>
1011        <eg:comment/>
1012        <eg:comment/>
1013      </element>
1014      <eg:comment/>
1015    </start>
1016    <eg:comment/>
1017  </grammar>
1018  </correct>
1019  <valid>
1020  <foo>X</foo>
1021  </valid>
1022  </testCase>
1023  <testCase>
1024  <section>3</section>
1025  <correct>
1026  <grammar xmlns="http://relaxng.org/ns/structure/1.0"  xmlns:eg="http://www.example.com"
1027    eg:comment="">
1028    <start eg:comment="">
1029      <element eg:comment="">
1030        <name eg:comment="">foo</name>
1031        <data eg:comment="" type="string"/>
1032        <empty eg:comment=""/>
1033      </element>
1034    </start>
1035  </grammar>
1036  </correct>
1037  <valid>
1038  <foo>X</foo>
1039  </valid>
1040  </testCase>
1041  <testCase>
1042  <section>3</section>
1043  <correct>
1044  <rng:grammar xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns="http://www.example.com">
1045    <comment/>
1046    <comment/>
1047    <rng:start>
1048      <comment/>
1049      <rng:element>
1050        <comment/>
1051        <comment/>
1052        <rng:name>foo</rng:name>
1053        <comment/>
1054        <rng:data type="string"/>
1055        <comment/>
1056      </rng:element>
1057      <comment/>
1058    </rng:start>
1059    <comment/>
1060  </rng:grammar>
1061  </correct>
1062  <valid>
1063  <foo>X</foo>
1064  </valid>
1065  </testCase>
1066  <testCase>
1067  <section>3</section>
1068  <correct>
1069  <rng:grammar xmlns:rng="http://relaxng.org/ns/structure/1.0">
1070    <comment/>
1071    <comment/>
1072    <rng:start>
1073      <comment/>
1074      <rng:element>
1075        <comment/>
1076        <comment/>
1077        <rng:name>foo</rng:name>
1078        <comment/>
1079        <rng:data type="string"/>
1080        <comment/>
1081      </rng:element>
1082      <comment/>
1083    </rng:start>
1084    <comment/>
1085  </rng:grammar>
1086  </correct>
1087  <valid>
1088  <foo>X</foo>
1089  </valid>
1090  </testCase>
1091  </testSuite>
1092  </testSuite>
1093  <testSuite>
1094  <section>4</section>
1095  <testSuite>
1096  <section>4.2</section>
1097  <testCase>
1098  <section>4.2</section>
1099  <correct>
1100  <element name="&#xA;&#xD;&#x20;&#x9;foo&#xA;&#xD;&#x20;&#x9;" xmlns="http://relaxng.org/ns/structure/1.0">
1101    <attribute name="&#xA;&#xD;&#x20;&#x9;bar&#xA;&#xD;&#x20;&#x9;"/>
1102  </element>
1103  </correct>
1104  <valid>
1105  <foo bar=""/>
1106  </valid>
1107  </testCase>
1108  <testCase>
1109  <section>4.2</section>
1110  <correct>
1111  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
1112    <value type="&#xA;&#xD;&#x20;&#x9;string&#xA;&#xD;&#x20;&#x9;">bar</value>
1113  </element>
1114  </correct>
1115  <valid>
1116  <foo>bar</foo>
1117  </valid>
1118  <invalid>
1119  <foo>bar </foo>
1120  </invalid>
1121  </testCase>
1122  <testCase>
1123  <section>4.2</section>
1124  <correct>
1125  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
1126    <data type="&#xA;&#xD;&#x20;&#x9;string&#xA;&#xD;&#x20;&#x9;"/>
1127  </element>
1128  </correct>
1129  <valid>
1130  <foo>X</foo>
1131  </valid>
1132  </testCase>
1133  <testCase>
1134  <section>4.2</section>
1135  <correct>
1136  <element xmlns="http://relaxng.org/ns/structure/1.0">
1137    <name>&#xA;&#xD;&#x20;&#x9;foo&#xA;&#xD;&#x20;&#x9;</name>
1138    <attribute><name>&#xA;&#xD;&#x20;&#x9;bar&#xA;&#xD;&#x20;&#x9;</name></attribute>
1139  </element>
1140  </correct>
1141  <valid>
1142  <foo bar=""/>
1143  </valid>
1144  </testCase>
1145  <testCase>
1146  <section>4.2</section>
1147  <correct>
1148  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1149    <start combine="&#xA;&#xD;&#x20;&#x9;choice&#xA;&#xD;&#x20;&#x9;">
1150      <ref name="&#xA;&#xD;&#x20;&#x9;x&#xA;&#xD;&#x20;&#x9;"/>
1151    </start>
1152    <define name="x">
1153      <ref name="y"/>
1154    </define>
1155    <define name="&#xA;&#xD;&#x20;&#x9;y&#xA;&#xD;&#x20;&#x9;">
1156      <grammar>
1157        <start combine="&#xA;&#xD;&#x20;&#x9;interleave&#xA;&#xD;&#x20;&#x9;">
1158          <parentRef name="&#xA;&#xD;&#x20;&#x9;z&#xA;&#xD;&#x20;&#x9;"/>
1159        </start>
1160      </grammar>
1161    </define>
1162    <define name="z">
1163      <element name="foo">
1164        <empty/>
1165      </element>
1166    </define>
1167  </grammar>
1168  </correct>
1169  <valid>
1170  <foo/>
1171  </valid>
1172  </testCase>
1173  </testSuite>
1174  <testCase>
1175  <section>4.4</section>
1176  <correct>
1177  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
1178    <value datatypeLibrary="http://www.example.com/this-does-not-exist">bar</value>
1179  </element>
1180  </correct>
1181  <valid>
1182  <foo>bar</foo>
1183  </valid>
1184  <valid>
1185  <foo>
1186  	bar
1187  </foo>
1188  </valid>
1189  <valid>
1190  <foo> bar </foo>
1191  </valid>
1192  <invalid>
1193  <foo>baz</foo>
1194  </invalid>
1195  <invalid>
1196  <foo>ba r</foo>
1197  </invalid>
1198  </testCase>
1199  <testSuite>
1200  <section>4.5</section>
1201  <testCase>
1202  <section>4.5</section>
1203  <dir name="sub">
1204  <resource name="x">
1205  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
1206    <empty/>
1207  </element>
1208  </resource>
1209  </dir>
1210  <correct>
1211  <externalRef xmlns="http://relaxng.org/ns/structure/1.0"
1212               xml:base="sub/y" href="x"/>
1213  </correct>
1214  <valid>
1215  <foo/>
1216  </valid>
1217  <invalid>
1218  <bar/>
1219  </invalid>
1220  </testCase>
1221  <testCase>
1222  <section>4.5</section>
1223  <resource name="x">
1224  <element xmlns="http://relaxng.org/ns/structure/1.0" name="bar">
1225    <empty/>
1226  </element>
1227  </resource>
1228  <dir name="sub1">
1229  <resource name="x">
1230  <element xmlns="http://relaxng.org/ns/structure/1.0" name="bar">
1231    <empty/>
1232  </element>
1233  </resource>
1234  <dir name="sub3">
1235  <resource name="x">
1236  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
1237    <empty/>
1238  </element>
1239  </resource>
1240  </dir>
1241  </dir>
1242  <correct>
1243  <group xmlns="http://relaxng.org/ns/structure/1.0" xml:base="sub1/">
1244    <group>
1245      <group xml:base="sub2">
1246        <group>
1247           <group xml:base="sub3/y">
1248             <externalRef href="x"/>
1249           </group>
1250        </group>
1251      </group>
1252    </group>
1253  </group>
1254  </correct>
1255  <valid>
1256  <foo/>
1257  </valid>
1258  <invalid>
1259  <bar/>
1260  </invalid>
1261  </testCase>
1262  <testCase>
1263  <section>4.5</section>
1264  <resource name="x">
1265  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
1266    <empty/>
1267  </element>
1268  </resource>
1269  <incorrect>
1270  <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x#foo"/>
1271  </incorrect>
1272  </testCase>
1273  </testSuite>
1274  <testSuite>
1275  <section>4.6</section>
1276  <testCase>
1277  <section>4.6</section>
1278  <resource name="x">
1279  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
1280    <empty/>
1281  </element>
1282  </resource>
1283  <correct>
1284  <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x"/>
1285  </correct>
1286  <valid>
1287  <foo/>
1288  </valid>
1289  <invalid>
1290  <bar/>
1291  </invalid>
1292  </testCase>
1293  <testCase>
1294  <section>4.6</section>
1295  <resource name="x">
1296  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
1297    <empty/>
1298  </element>
1299  </resource>
1300  <correct>
1301  <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x" ns="http://www.example.com"/>
1302  </correct>
1303  <valid>
1304  <foo xmlns="http://www.example.com"/>
1305  </valid>
1306  <invalid>
1307  <foo/>
1308  </invalid>
1309  </testCase>
1310  <testCase>
1311  <section>4.6</section>
1312  <resource name="x">
1313  <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x"/>
1314  </resource>
1315  <incorrect>
1316  <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x"/>
1317  </incorrect>
1318  </testCase>
1319  <testCase>
1320  <section>4.6</section>
1321  <resource name="x">
1322  <start xmlns="http://relaxng.org/ns/structure/1.0">
1323    <element name="foo">
1324      <empty/>
1325    </element>
1326  </start>
1327  </resource>
1328  <incorrect>
1329  <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x"/>
1330  </incorrect>
1331  </testCase>
1332  <testCase>
1333  <section>4.6</section>
1334  <resource name="x">
1335  <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="y"/>
1336  </resource>
1337  <resource name="y">
1338  <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x"/>
1339  </resource>
1340  <incorrect>
1341  <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x"/>
1342  </incorrect>
1343  </testCase>
1344  <testCase>
1345  <section>4.6</section>
1346  <documentation>Same value of href before resolution, but not a loop.</documentation>
1347  <dir name="sub">
1348  <resource name="x">
1349  <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="sub/x"/>
1350  </resource>
1351  <dir name="sub">
1352  <resource name="x">
1353  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
1354    <empty/>
1355  </element>
1356  </resource>
1357  </dir>
1358  </dir>
1359  <correct>
1360  <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="sub/x"/>
1361  </correct>
1362  <valid>
1363  <foo/>
1364  </valid>
1365  <invalid>
1366  <bar/>
1367  </invalid>
1368  </testCase>
1369  </testSuite>
1370  <testSuite>
1371  <section>4.7</section>
1372  <testCase>
1373  <section>4.7</section>
1374  <resource name="x">
1375  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1376    <start>
1377      <element name="foo">
1378        <empty/>
1379      </element>
1380    </start>
1381  </grammar>
1382  </resource>
1383  <correct>
1384  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1385    <include href="x"/>
1386  </grammar>
1387  </correct>
1388  <valid>
1389  <foo/>
1390  </valid>
1391  <invalid>
1392  <bar/>
1393  </invalid>
1394  </testCase>
1395  <testCase>
1396  <section>4.7</section>
1397  <resource name="x">
1398  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1399    <start>
1400      <element name="foo">
1401        <empty/>
1402      </element>
1403    </start>
1404  </grammar>
1405  </resource>
1406  <correct>
1407  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1408    <include href="x" ns="http://www.example.com"/>
1409  </grammar>
1410  </correct>
1411  <valid>
1412  <foo xmlns="http://www.example.com"/>
1413  </valid>
1414  <invalid>
1415  <foo/>
1416  </invalid>
1417  </testCase>
1418  <testCase>
1419  <section>4.7</section>
1420  <resource name="x">
1421  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1422    <include href="y"/>
1423  </grammar>
1424  </resource>
1425  <resource name="y">
1426  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1427    <start>
1428      <element name="foo">
1429        <empty/>
1430      </element>
1431    </start>
1432  </grammar>
1433  </resource>
1434  <correct>
1435  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1436    <include href="x"/>
1437  </grammar>
1438  </correct>
1439  <valid>
1440  <foo/>
1441  </valid>
1442  <invalid>
1443  <bar/>
1444  </invalid>
1445  </testCase>
1446  <testCase>
1447  <section>4.7</section>
1448  <resource name="x">
1449  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
1450    <empty/>
1451  </element>
1452  </resource>
1453  <incorrect>
1454  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1455    <include href="x"/>
1456  </grammar>
1457  </incorrect>
1458  </testCase>
1459  <testCase>
1460  <section>4.7</section>
1461  <resource name="x">
1462  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1463    <include href="x"/>
1464  </grammar>
1465  </resource>
1466  <incorrect>
1467  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1468    <include href="x"/>
1469  </grammar>
1470  </incorrect>
1471  </testCase>
1472  <testCase>
1473  <section>4.7</section>
1474  <resource name="x">
1475  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1476    <include href="y"/>
1477  </grammar>
1478  </resource>
1479  <resource name="y">
1480  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1481    <include href="x"/>
1482  </grammar>
1483  </resource>
1484  <incorrect>
1485  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1486    <include href="x"/>
1487  </grammar>
1488  </incorrect>
1489  </testCase>
1490  <testCase>
1491  <section>4.7</section>
1492  <dir name="sub">
1493  <resource name="x">
1494  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1495    <include href="sub/x"/>
1496  </grammar>
1497  </resource>
1498  <dir name="sub">
1499  <resource name="x">
1500  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1501    <start>
1502      <element name="foo">
1503        <empty/>
1504      </element>
1505    </start>
1506  </grammar>
1507  </resource>
1508  </dir>
1509  </dir>
1510  <correct>
1511  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1512    <include href="sub/x"/>
1513  </grammar>
1514  </correct>
1515  <valid>
1516  <foo/>
1517  </valid>
1518  <invalid>
1519  <bar/>
1520  </invalid>
1521  </testCase>
1522  <testCase>
1523  <section>4.7</section>
1524  <resource name="x">
1525  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1526    <define name="foo">
1527      <element name="foo">
1528        <empty/>
1529      </element>
1530    </define>
1531  </grammar>
1532  </resource>
1533  <incorrect>
1534  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1535    <include href="x">
1536      <start>
1537        <ref name="foo"/>
1538      </start>
1539    </include>
1540  </grammar>
1541  </incorrect>
1542  </testCase>
1543  <testCase>
1544  <section>4.7</section>
1545  <resource name="x">
1546  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1547    <define name="foo">
1548      <element name="foo">
1549        <empty/>
1550      </element>
1551    </define>
1552  </grammar>
1553  </resource>
1554  <correct>
1555  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1556    <include href="x"/>
1557    <start>
1558      <ref name="foo"/>
1559    </start>
1560  </grammar>
1561  </correct>
1562  <valid><foo/></valid>
1563  <invalid><bar/></invalid>
1564  </testCase>
1565  <testCase>
1566  <section>4.7</section>
1567  <resource name="x">
1568  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1569    <start>
1570      <ref name="foo"/>
1571    </start>
1572  </grammar>
1573  </resource>
1574  <incorrect>
1575  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1576    <include href="x">
1577      <define name="foo">
1578        <element name="foo">
1579          <empty/>
1580        </element>
1581      </define>
1582    </include>
1583  </grammar>
1584  </incorrect>
1585  </testCase>
1586  <testCase>
1587  <section>4.7</section>
1588  <resource name="x">
1589  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1590    <start>
1591      <ref name="foo"/>
1592    </start>
1593  </grammar>
1594  </resource>
1595  <correct>
1596  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1597    <include href="x"/>
1598    <define name="foo">
1599      <element name="foo">
1600        <empty/>
1601      </element>
1602    </define>
1603  </grammar>
1604  </correct>
1605  <valid><foo/></valid>
1606  <invalid><bar/></invalid>
1607  </testCase>
1608  <testCase>
1609  <section>4.7</section>
1610  <resource name="x">
1611  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1612    <define name="foo" combine="choice">
1613      <element name="foo3">
1614        <empty/>
1615      </element>
1616    </define>
1617  </grammar>
1618  </resource>
1619  <correct>
1620  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1621    <start>
1622      <ref name="foo"/>
1623    </start>
1624    <include href="x">
1625      <define name="foo" combine="choice">
1626        <element name="foo1">
1627  	<empty/>
1628        </element>
1629      </define>
1630    </include>
1631    <define name="foo">
1632      <element name="foo2">
1633        <empty/>
1634      </element>
1635    </define>
1636  </grammar>
1637  </correct>
1638  <valid><foo1/></valid>
1639  <valid><foo2/></valid>
1640  <invalid><foo3/></invalid>
1641  </testCase>
1642  <testCase>
1643  <section>4.7</section>
1644  <resource name="level1.rng">
1645  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1646  <include href="level2.rng">
1647    <define name="foo">
1648      <element name="bar">
1649        <empty/>
1650      </element>
1651    </define>
1652  </include>
1653  </grammar>
1654  </resource>
1655  <resource name="level2.rng">
1656  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1657    <define name="bar">
1658      <element name="bar">
1659        <empty/>
1660      </element>
1661    </define>
1662  </grammar>
1663  </resource>
1664  <incorrect>
1665  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1666  <start>
1667    <ref name="foo"/>
1668  </start>
1669  <include href="level1.rng">
1670    <define name="foo">
1671      <element name="foo">
1672        <empty/>
1673      </element>
1674    </define>
1675  </include>
1676  </grammar>
1677  </incorrect>
1678  </testCase>
1679  </testSuite>
1680  <testSuite>
1681  <section>4.8</section>
1682  <testCase>
1683  <section>4.8</section>
1684  <correct>
1685  <element xmlns="http://relaxng.org/ns/structure/1.0" ns="http://www.example.com" name="foo">
1686    <attribute name="bar" ns="http://www.example.com"/>
1687  </element>
1688  </correct>
1689  <valid>
1690  <eg:foo eg:bar="x" xmlns:eg="http://www.example.com"/>
1691  </valid>
1692  <invalid>
1693  <eg:foo xmlns:eg="http://www.example.com" bar="x"/>
1694  </invalid>
1695  </testCase>
1696  <testCase>
1697  <section>4.8</section>
1698  <correct>
1699  <element xmlns="http://relaxng.org/ns/structure/1.0" ns="http://www.example.com" name="foo">
1700    <attribute name="bar"/>
1701  </element>
1702  </correct>
1703  <invalid>
1704  <eg:foo xmlns:eg="http://www.example.com" eg:bar="x"/>
1705  </invalid>
1706  <valid>
1707  <eg:foo xmlns:eg="http://www.example.com" bar="x"/>
1708  </valid>
1709  </testCase>
1710  </testSuite>
1711  <testSuite>
1712  <section>4.9</section>
1713  <testCase>
1714  <section>4.9</section>
1715  <correct>
1716  <element xmlns="http://relaxng.org/ns/structure/1.0" ns="http://www.example.com" name="foo">
1717    <attribute>
1718      <name>bar</name>
1719    </attribute>
1720  </element>
1721  </correct>
1722  <valid>
1723  <eg:foo xmlns:eg="http://www.example.com" eg:bar="x"/>
1724  </valid>
1725  <invalid>
1726  <eg:foo xmlns:eg="http://www.example.com" bar="x"/>
1727  </invalid>
1728  </testCase>
1729  <testCase>
1730  <section>4.6</section>
1731  <section>4.9</section>
1732  <resource name="x">
1733  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
1734    <empty/>
1735  </element>
1736  </resource>
1737  <correct>
1738  <group ns="http://www.example.com" xmlns="http://relaxng.org/ns/structure/1.0" >
1739  <externalRef href="x"/>
1740  </group>
1741  </correct>
1742  <valid>
1743  <foo xmlns="http://www.example.com"/>
1744  </valid>
1745  <invalid>
1746  <foo/>
1747  </invalid>
1748  </testCase>
1749  <testCase>
1750  <correct>
1751  <group xmlns="http://relaxng.org/ns/structure/1.0">
1752    <element ns="http://www.example.com">
1753      <name>foo</name>
1754      <empty/>
1755    </element>
1756  </group>
1757  </correct>
1758  <valid><foo xmlns="http://www.example.com"/></valid>
1759  <invalid><foo/></invalid>
1760  </testCase>
1761  <testCase>
1762  <correct>
1763  <element ns="http://www.example.com" xmlns="http://relaxng.org/ns/structure/1.0">
1764    <name>foo</name>
1765    <empty/>
1766  </element>
1767  </correct>
1768  <valid><foo xmlns="http://www.example.com"/></valid>
1769  <invalid><foo/></invalid>
1770  </testCase>
1771  <testCase>
1772  <correct>
1773  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
1774    <attribute ns="http://www.example.com">
1775      <name>bar</name>
1776      <text/>
1777    </attribute>
1778  </element>
1779  </correct>
1780  <valid><foo xmlns:x="http://www.example.com" x:bar="whatever"/></valid>
1781  <invalid><foo bar="whatever"/></invalid>
1782  </testCase>
1783  </testSuite>
1784  <testSuite>
1785  <section>4.10</section>
1786  <testCase>
1787  <section>4.10</section>
1788  <incorrect>
1789  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo:bar">
1790    <empty/>
1791  </element>
1792  </incorrect>
1793  </testCase>
1794  <testCase>
1795  <section>4.10</section>
1796  <correct>
1797  <element xmlns="http://relaxng.org/ns/structure/1.0" name="eg:foo" xmlns:eg="http://www.example.com">
1798    <empty/>
1799  </element>
1800  </correct>
1801  <valid>
1802  <foo xmlns="http://www.example.com"/>
1803  </valid>
1804  <invalid>
1805  <foo xmlns="http://www.example.com/"/>
1806  </invalid>
1807  </testCase>
1808  <testCase>
1809  <section>4.10</section>
1810  <correct>
1811  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo" xmlns:eg="http://www.example.com">
1812    <attribute name="eg:bar"/>
1813  </element>
1814  </correct>
1815  <valid>
1816  <foo xmlns:ex="http://www.example.com" ex:bar="x"/>
1817  </valid>
1818  <invalid>
1819  <foo xmlns:ex="http://www.example.com/" ex:bar="x"/>
1820  </invalid>
1821  </testCase>
1822  <testCase>
1823  <section>4.10</section>
1824  <correct>
1825  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
1826    <attribute name="xml:lang"/>
1827  </element>
1828  </correct>
1829  <valid>
1830  <foo xml:lang="en"/>
1831  </valid>
1832  <invalid>
1833  <foo lang="en"/>
1834  </invalid>
1835  </testCase>
1836  </testSuite>
1837  <testSuite>
1838  <section>4.11</section>
1839  <testCase>
1840  <section>4.11</section>
1841  <correct>
1842  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1843    <div ns="http://www.example.com">
1844      <div>
1845        <start>
1846          <ref name="foo"/>
1847        </start>
1848      </div>
1849      <define name="foo">
1850        <element name="foo">
1851          <empty/>
1852        </element>
1853      </define>
1854    </div>
1855    <div/>
1856  </grammar>
1857  </correct>
1858  <valid>
1859  <foo xmlns="http://www.example.com"/>
1860  </valid>
1861  <invalid>
1862  <foo/>
1863  </invalid>
1864  </testCase>
1865  </testSuite>
1866  <testSuite>
1867  <testCase>
1868  <section>4.12</section>
1869  <correct>
1870  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1871  
1872  <start>
1873    <element name="foo">
1874      <ref name="bars"/>
1875    </element>
1876  </start>
1877  
1878  <define name="bars">
1879    <element name="bar">
1880      <empty/>
1881    </element>
1882    <element name="bar">
1883      <empty/>
1884    </element>
1885    <element name="bar">
1886      <empty/>
1887    </element>
1888  </define>
1889  
1890  </grammar>
1891  </correct>
1892  <valid>
1893  <foo><bar/><bar/><bar/></foo>
1894  </valid>
1895  <invalid>
1896  <foo><bar/><bar/><bar/><bar/><bar/><bar/></foo>
1897  </invalid>
1898  <invalid>
1899  <foo><bar/><bar/></foo>
1900  </invalid>
1901  <invalid>
1902  <foo><bar/></foo>
1903  </invalid>
1904  <invalid>
1905  <foo></foo>
1906  </invalid>
1907  <invalid>
1908  <foo>X</foo>
1909  </invalid>
1910  <invalid>
1911  <foo><bar/>X<bar/><bar/></foo>
1912  </invalid>
1913  <invalid>
1914  <foo><bar/><bar/><bar/><bar/></foo>
1915  </invalid>
1916  </testCase>
1917  <testCase>
1918  <section>4.12</section>
1919  <correct>
1920  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
1921    <oneOrMore>
1922      <element name="bar">
1923        <empty/>
1924      </element>
1925      <element name="bar">
1926        <empty/>
1927      </element>
1928      <element name="bar">
1929        <empty/>
1930      </element>
1931    </oneOrMore>
1932  </element>
1933  </correct>
1934  <valid>
1935  <foo><bar/><bar/><bar/></foo>
1936  </valid>
1937  <valid>
1938  <foo><bar/><bar/><bar/><bar/><bar/><bar/></foo>
1939  </valid>
1940  <invalid>
1941  <foo><bar/><bar/></foo>
1942  </invalid>
1943  <invalid>
1944  <foo><bar/></foo>
1945  </invalid>
1946  <invalid>
1947  <foo></foo>
1948  </invalid>
1949  <invalid>
1950  <foo>X</foo>
1951  </invalid>
1952  <invalid>
1953  <foo><bar/>X<bar/><bar/></foo>
1954  </invalid>
1955  <invalid>
1956  <foo><bar/><bar/><bar/><bar/></foo>
1957  </invalid>
1958  </testCase>
1959  <testCase>
1960  <section>4.12</section>
1961  <section>4.15</section>
1962  <correct>
1963  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
1964    <zeroOrMore>
1965      <element name="bar">
1966        <empty/>
1967      </element>
1968      <element name="bar">
1969        <empty/>
1970      </element>
1971      <element name="bar">
1972        <empty/>
1973      </element>
1974    </zeroOrMore>
1975  </element>
1976  </correct>
1977  <valid>
1978  <foo><bar/><bar/><bar/></foo>
1979  </valid>
1980  <valid>
1981  <foo><bar/><bar/><bar/><bar/><bar/><bar/></foo>
1982  </valid>
1983  <invalid>
1984  <foo><bar/><bar/></foo>
1985  </invalid>
1986  <invalid>
1987  <foo><bar/></foo>
1988  </invalid>
1989  <valid>
1990  <foo></foo>
1991  </valid>
1992  <invalid>
1993  <foo>X</foo>
1994  </invalid>
1995  <invalid>
1996  <foo><bar/>X<bar/><bar/></foo>
1997  </invalid>
1998  <invalid>
1999  <foo><bar/><bar/><bar/><bar/></foo>
2000  </invalid>
2001  </testCase>
2002  <testCase>
2003  <section>4.12</section>
2004  <section>4.14</section>
2005  <correct>
2006  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2007    <optional>
2008      <element name="bar">
2009        <empty/>
2010      </element>
2011      <element name="bar">
2012        <empty/>
2013      </element>
2014      <element name="bar">
2015        <empty/>
2016      </element>
2017    </optional>
2018  </element>
2019  </correct>
2020  <valid>
2021  <foo><bar/><bar/><bar/></foo>
2022  </valid>
2023  <invalid>
2024  <foo><bar/><bar/><bar/><bar/><bar/><bar/></foo>
2025  </invalid>
2026  <invalid>
2027  <foo><bar/><bar/></foo>
2028  </invalid>
2029  <invalid>
2030  <foo><bar/></foo>
2031  </invalid>
2032  <valid>
2033  <foo></foo>
2034  </valid>
2035  <invalid>
2036  <foo>X</foo>
2037  </invalid>
2038  <invalid>
2039  <foo><bar/>X<bar/><bar/></foo>
2040  </invalid>
2041  <invalid>
2042  <foo><bar/><bar/><bar/><bar/></foo>
2043  </invalid>
2044  </testCase>
2045  <testCase>
2046  <section>4.12</section>
2047  <correct>
2048  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2049    <list>
2050      <value>x</value>
2051      <value>y</value>
2052      <value>z</value>
2053    </list>
2054  </element>
2055  </correct>
2056  <valid>
2057  <foo>x y z</foo>
2058  </valid>
2059  <invalid>
2060  <foo>x</foo>
2061  </invalid>
2062  </testCase>
2063  <testCase>
2064  <section>4.12</section>
2065  <section>4.13</section>
2066  <correct>
2067  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2068    <mixed>
2069      <element name="bar">
2070        <empty/>
2071      </element>
2072      <element name="bar">
2073        <empty/>
2074      </element>
2075      <element name="bar">
2076        <empty/>
2077      </element>
2078    </mixed>
2079  </element>
2080  </correct>
2081  <valid>
2082  <foo><bar/><bar/><bar/></foo>
2083  </valid>
2084  <invalid>
2085  <foo><bar/><bar/><bar/><bar/><bar/><bar/></foo>
2086  </invalid>
2087  <invalid>
2088  <foo><bar/><bar/></foo>
2089  </invalid>
2090  <invalid>
2091  <foo><bar/></foo>
2092  </invalid>
2093  <invalid>
2094  <foo></foo>
2095  </invalid>
2096  <valid>
2097  <foo><bar/>X<bar/><bar/></foo>
2098  </valid>
2099  <invalid>
2100  <foo>X</foo>
2101  </invalid>
2102  <invalid>
2103  <foo><bar/><bar/><bar/><bar/></foo>
2104  </invalid>
2105  </testCase>
2106  <testCase>
2107  <section>4.12</section>
2108  <correct>
2109  <element xmlns="http://relaxng.org/ns/structure/1.0">
2110    <name>foo</name>
2111    <element name="bar">
2112      <empty/>
2113    </element>
2114    <element name="bar">
2115      <empty/>
2116    </element>
2117    <element name="bar">
2118      <empty/>
2119    </element>
2120  </element>
2121  </correct>
2122  <valid>
2123  <foo><bar/><bar/><bar/></foo>
2124  </valid>
2125  <invalid>
2126  <foo><bar/><bar/><bar/><bar/><bar/><bar/></foo>
2127  </invalid>
2128  <invalid>
2129  <foo><bar/><bar/></foo>
2130  </invalid>
2131  <invalid>
2132  <foo><bar/></foo>
2133  </invalid>
2134  <invalid>
2135  <foo></foo>
2136  </invalid>
2137  <invalid>
2138  <foo>X</foo>
2139  </invalid>
2140  <invalid>
2141  <foo><bar/>X<bar/><bar/></foo>
2142  </invalid>
2143  <invalid>
2144  <foo><bar/><bar/><bar/><bar/></foo>
2145  </invalid>
2146  </testCase>
2147  <testCase>
2148  <section>4.12</section>
2149  <correct>
2150  <element xmlns="http://relaxng.org/ns/structure/1.0">
2151    <anyName>
2152      <except>
2153        <name>foo</name>
2154        <name>bar</name>
2155        <name>baz</name>
2156      </except>
2157    </anyName>
2158    <empty/>
2159  </element>
2160  </correct>
2161  <valid><xyzzy/></valid>
2162  <invalid><foo/></invalid>
2163  <invalid><bar/></invalid>
2164  <invalid><baz/></invalid>
2165  </testCase>
2166  <testCase>
2167  <section>4.12</section>
2168  <correct>
2169  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2170    <data type="token">
2171      <except>
2172        <value>x</value>
2173        <value>y</value>
2174        <value>z</value>
2175      </except>
2176    </data>
2177  </element>
2178  </correct>
2179  <valid><foo/></valid>
2180  <valid><foo>xyz</foo></valid>
2181  <invalid><foo>x</foo></invalid>
2182  <invalid><foo>y</foo></invalid>
2183  <invalid><foo>y</foo></invalid>
2184  </testCase>
2185  <testCase>
2186  <section>4.12</section>
2187  <correct>
2188  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2189    <attribute name="bar"/>
2190  </element>
2191  </correct>
2192  <valid>
2193  <foo bar=""/>
2194  </valid>
2195  <valid>
2196  <foo bar="x"/>
2197  </valid>
2198  <invalid>
2199  <foo/>
2200  </invalid>
2201  </testCase>
2202  <testCase>
2203  <section>4.12</section>
2204  <correct>
2205  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2206    <attribute>
2207      <name>bar</name>
2208    </attribute>
2209  </element>
2210  </correct>
2211  <valid>
2212  <foo bar=""/>
2213  </valid>
2214  <valid>
2215  <foo bar="x"/>
2216  </valid>
2217  <invalid>
2218  <foo/>
2219  </invalid>
2220  </testCase>
2221  <testCase>
2222  <section>4.12</section>
2223  <correct>
2224  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2225    <group>
2226      <element name="bar">
2227        <empty/>
2228      </element>
2229      <element name="bar">
2230        <empty/>
2231      </element>
2232      <element name="bar">
2233        <empty/>
2234      </element>
2235    </group>
2236  </element>
2237  </correct>
2238  <valid>
2239  <foo><bar/><bar/><bar/></foo>
2240  </valid>
2241  <invalid>
2242  <foo><bar/><bar/><bar/><bar/><bar/><bar/></foo>
2243  </invalid>
2244  <invalid>
2245  <foo><bar/><bar/></foo>
2246  </invalid>
2247  <invalid>
2248  <foo><bar/></foo>
2249  </invalid>
2250  <invalid>
2251  <foo></foo>
2252  </invalid>
2253  <invalid>
2254  <foo>X</foo>
2255  </invalid>
2256  <invalid>
2257  <foo><bar/>X<bar/><bar/></foo>
2258  </invalid>
2259  <invalid>
2260  <foo><bar/><bar/><bar/><bar/></foo>
2261  </invalid>
2262  </testCase>
2263  <testCase>
2264  <section>4.12</section>
2265  <correct>
2266  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2267    <choice>
2268      <element name="bar1">
2269        <empty/>
2270      </element>
2271      <element name="bar2">
2272        <empty/>
2273      </element>
2274      <element name="bar3">
2275        <empty/>
2276      </element>
2277    </choice>
2278  </element>
2279  </correct>
2280  <valid><foo><bar1/></foo></valid>
2281  <valid><foo><bar2/></foo></valid>
2282  <valid><foo><bar3/></foo></valid>
2283  <invalid><foo/></invalid>
2284  </testCase>
2285  <testCase>
2286  <section>4.12</section>
2287  <correct>
2288  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2289    <interleave>
2290      <element name="bar1">
2291        <empty/>
2292      </element>
2293      <element name="bar2">
2294        <empty/>
2295      </element>
2296      <element name="bar3">
2297        <empty/>
2298      </element>
2299    </interleave>
2300  </element>
2301  </correct>
2302  <valid><foo><bar1/><bar2/><bar3/></foo></valid>
2303  <valid><foo><bar1/><bar3/><bar2/></foo></valid>
2304  <valid><foo><bar2/><bar1/><bar3/></foo></valid>
2305  <valid><foo><bar2/><bar3/><bar1/></foo></valid>
2306  <valid><foo><bar3/><bar1/><bar2/></foo></valid>
2307  <valid><foo><bar3/><bar2/><bar1/></foo></valid>
2308  <invalid><foo><bar2/><bar1/></foo></invalid>
2309  <invalid><foo><bar1/><bar3/><bar2/><bar1/></foo></invalid>
2310  </testCase>
2311  <testCase>
2312  <section>4.12</section>
2313  <correct>
2314  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2315    <group>
2316      <element name="bar">
2317        <empty/>
2318      </element>
2319    </group>
2320  </element>
2321  </correct>
2322  <valid><foo><bar/></foo></valid>
2323  <invalid><foo/></invalid>
2324  </testCase>
2325  <testCase>
2326  <section>4.12</section>
2327  <correct>
2328  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2329    <interleave>
2330      <element name="bar">
2331        <empty/>
2332      </element>
2333    </interleave>
2334  </element>
2335  </correct>
2336  <valid><foo><bar/></foo></valid>
2337  <invalid><foo/></invalid>
2338  </testCase>
2339  <testCase>
2340  <section>4.12</section>
2341  <correct>
2342  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2343    <choice>
2344      <element name="bar">
2345        <empty/>
2346      </element>
2347    </choice>
2348  </element>
2349  </correct>
2350  <valid><foo><bar/></foo></valid>
2351  <invalid><foo/></invalid>
2352  </testCase>
2353  </testSuite>
2354  <testSuite>
2355  <section>4.13</section>
2356  <testCase>
2357  <section>4.13</section>
2358  <correct>
2359  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2360    <mixed>
2361      <element name="bar">
2362        <empty/>
2363      </element>
2364    </mixed>
2365  </element>
2366  </correct>
2367  <valid><foo>x<bar/></foo></valid>
2368  <valid><foo><bar/></foo></valid>
2369  <valid><foo><bar/>x</foo></valid>
2370  <valid><foo>x<bar/>y</foo></valid>
2371  <invalid><foo/></invalid>
2372  <invalid><foo><bar/><bar/></foo></invalid>
2373  </testCase>
2374  </testSuite>
2375  <testSuite>
2376  <section>4.14</section>
2377  <testCase>
2378  <section>4.14</section>
2379  <correct>
2380  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2381    <optional>
2382      <element name="bar">
2383        <empty/>
2384      </element>
2385    </optional>
2386  </element>
2387  </correct>
2388  <valid><foo><bar/></foo></valid>
2389  <valid><foo/></valid>
2390  <invalid><foo>x<bar/></foo></invalid>
2391  <invalid><foo><bar/><bar/></foo></invalid>
2392  </testCase>
2393  </testSuite>
2394  <testSuite>
2395  <section>4.15</section>
2396  <testCase>
2397  <section>4.15</section>
2398  <correct>
2399  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2400    <zeroOrMore>
2401      <element name="bar">
2402        <empty/>
2403      </element>
2404    </zeroOrMore>
2405  </element>
2406  </correct>
2407  <valid><foo><bar/></foo></valid>
2408  <valid><foo/></valid>
2409  <invalid><foo>x<bar/></foo></invalid>
2410  <invalid><foo><baz/></foo></invalid>
2411  <valid><foo><bar/><bar/></foo></valid>
2412  </testCase>
2413  </testSuite>
2414  <testSuite>
2415  <section>4.16</section>
2416  <testCase>
2417  <section>4.16</section>
2418  <incorrect>
2419  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2420  <start>
2421    <element>
2422      <anyName>
2423        <except>
2424          <anyName/>
2425        </except>
2426      </anyName>
2427      <empty/>
2428    </element>
2429  </start>
2430  </grammar>
2431  </incorrect>
2432  </testCase>
2433  <testCase>
2434  <section>4.16</section>
2435  <incorrect>
2436  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2437  <start>
2438    <element>
2439      <anyName>
2440        <except>
2441          <choice>
2442            <anyName/>
2443            <name>foo</name>
2444          </choice>
2445        </except>
2446      </anyName>
2447      <empty/>
2448    </element>
2449  </start>
2450  </grammar>
2451  </incorrect>
2452  </testCase>
2453  <testCase>
2454  <section>4.16</section>
2455  <incorrect>
2456  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2457  <start>
2458    <element>
2459      <nsName ns="">
2460        <except>
2461          <nsName ns=""/>
2462        </except>
2463      </nsName>
2464      <empty/>
2465    </element>
2466  </start>
2467  </grammar>
2468  </incorrect>
2469  </testCase>
2470  <testCase>
2471  <section>4.16</section>
2472  <incorrect>
2473  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2474  <start>
2475    <element>
2476      <nsName ns="">
2477        <except>
2478          <choice>
2479            <nsName ns=""/>
2480            <name>foo</name>
2481          </choice>
2482        </except>
2483      </nsName>
2484      <empty/>
2485    </element>
2486  </start>
2487  </grammar>
2488  </incorrect>
2489  </testCase>
2490  <testCase>
2491  <section>4.16</section>
2492  <incorrect>
2493  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2494  <start>
2495    <element>
2496      <nsName ns="">
2497        <except>
2498          <anyName/>
2499        </except>
2500      </nsName>
2501      <empty/>
2502    </element>
2503  </start>
2504  </grammar>
2505  </incorrect>
2506  </testCase>
2507  <testCase>
2508  <section>4.16</section>
2509  <incorrect>
2510  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2511  <start>
2512    <element>
2513      <nsName ns="">
2514        <except>
2515          <choice>
2516            <anyName/>
2517            <name>foo</name>
2518          </choice>
2519        </except>
2520      </nsName>
2521      <empty/>
2522    </element>
2523  </start>
2524  </grammar>
2525  </incorrect>
2526  </testCase>
2527  <testCase>
2528  <section>4.16</section>
2529  <documentation>Tests that 4.16 is before 4.20.</documentation>
2530  <incorrect>
2531  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2532  <start>
2533    <element name="foo">
2534      <zeroOrMore>
2535        <attribute>
2536  	<anyName>
2537  	  <except>
2538  	    <anyName/>
2539  	  </except>
2540  	</anyName>
2541  	<text/>
2542        </attribute>
2543        <notAllowed/>
2544      </zeroOrMore>
2545    </element>
2546  </start>
2547  </grammar>
2548  </incorrect>
2549  </testCase>
2550  <testCase>
2551  <section>4.16</section>
2552  <documentation>Tests that 4.16 is before removal of unreachable definitions.</documentation>
2553  <incorrect>
2554  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2555  <start>
2556    <element name="foo">
2557      <empty/>
2558    </element>
2559  </start>
2560  <define name="bar">
2561    <element>
2562      <anyName>
2563        <except>
2564  	<anyName/>
2565        </except>
2566      </anyName>
2567      <empty/>
2568    </element>
2569  </define>
2570  </grammar>
2571  </incorrect>
2572  </testCase>
2573  <testCase>
2574  <section>4.16</section>
2575  <incorrect>
2576  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2577    <attribute name="xmlns">
2578      <text/>
2579    </attribute>
2580  </element>
2581  </incorrect>
2582  </testCase>
2583  <testCase>
2584  <section>4.16</section>
2585  <correct>
2586  <element name="xmlns" xmlns="http://relaxng.org/ns/structure/1.0">
2587    <empty/>
2588  </element>
2589  </correct>
2590  <valid><xmlns/></valid>
2591  </testCase>
2592  <testCase>
2593  <section>4.16</section>
2594  <incorrect>
2595  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2596    <attribute name=" xmlns">
2597      <text/>
2598    </attribute>
2599  </element>
2600  </incorrect>
2601  </testCase>
2602  <testCase>
2603  <section>4.16</section>
2604  <incorrect>
2605  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2606    <optional>
2607      <notAllowed/>
2608      <attribute name="xmlns">
2609        <text/>
2610      </attribute>
2611    </optional>
2612  </element>
2613  </incorrect>
2614  </testCase>
2615  <testCase>
2616  <section>4.16</section>
2617  <incorrect>
2618  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2619    <start>
2620      <element name="foo">
2621        <empty/>
2622      </element>
2623    </start>
2624    <define name="foo">
2625      <attribute name="xmlns">
2626        <text/>
2627      </attribute>
2628    </define>
2629  </grammar>
2630  </incorrect>
2631  </testCase>
2632  <testCase>
2633  <section>4.16</section>
2634  <incorrect>
2635  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2636    <attribute name="xmlns" ns="">
2637      <text/>
2638    </attribute>
2639  </element>
2640  </incorrect>
2641  </testCase>
2642  <testCase>
2643  <section>4.16</section>
2644  <incorrect>
2645  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2646    <attribute>
2647      <choice>
2648        <name ns="">xmlns</name>
2649        <name>foo</name>
2650      </choice>
2651      <text/>
2652    </attribute>
2653  </element>
2654  </incorrect>
2655  </testCase>
2656  <testCase>
2657  <section>4.16</section>
2658  <incorrect>
2659  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2660    <attribute>
2661      <name ns="">xmlns</name>
2662      <text/>
2663    </attribute>
2664  </element>
2665  </incorrect>
2666  </testCase>
2667  <testCase>
2668  <section>4.16</section>
2669  <incorrect>
2670  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2671    <attribute>
2672      <name>xmlns</name>
2673      <text/>
2674    </attribute>
2675  </element>
2676  </incorrect>
2677  </testCase>
2678  <testCase>
2679  <section>4.16</section>
2680  <incorrect>
2681  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2682    <attribute>
2683      <name>
2684        xmlns
2685      </name>
2686      <text/>
2687    </attribute>
2688  </element>
2689  </incorrect>
2690  </testCase>
2691  <testCase>
2692  <section>4.16</section>
2693  <incorrect>
2694  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2695    <attribute>
2696      <choice>
2697        <name>foo</name>
2698        <name ns="">xmlns</name>
2699      </choice>
2700      <text/>
2701    </attribute>
2702  </element>
2703  </incorrect>
2704  </testCase>
2705  <testCase>
2706  <section>4.16</section>
2707  <incorrect>
2708  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2709    <oneOrMore>
2710      <attribute>
2711        <anyName>
2712  	<except>
2713  	  <name>xmlns</name>
2714  	</except>
2715        </anyName>
2716        <text/>
2717      </attribute>
2718    </oneOrMore>
2719  </element>
2720  </incorrect>
2721  </testCase>
2722  <testCase>
2723  <section>4.16</section>
2724  <incorrect>
2725  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2726    <oneOrMore>
2727      <attribute>
2728        <nsName ns="">
2729  	<except>
2730  	  <name>xmlns</name>
2731  	</except>
2732        </nsName>
2733        <text/>
2734      </attribute>
2735    </oneOrMore>
2736  </element>
2737  </incorrect>
2738  </testCase>
2739  <testCase>
2740  <section>4.16</section>
2741  <incorrect>
2742  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2743    <attribute ns="http://www.w3.org/2000/xmlns" name="bar">
2744      <text/>
2745    </attribute>
2746  </element>
2747  </incorrect>
2748  </testCase>
2749  <testCase>
2750  <section>4.16</section>
2751  <correct>
2752  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" ns="http://www.w3.org/2000/xmlns">
2753    <empty/>
2754  </element>
2755  </correct>
2756  <valid><foo xmlns="http://www.w3.org/2000/xmlns"/></valid>
2757  </testCase>
2758  <testCase>
2759  <section>4.16</section>
2760  <incorrect>
2761  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2762    <data type="token">
2763      <param name="minLength">2</param>
2764    </data>
2765  </element>
2766  </incorrect>
2767  </testCase>
2768  <testCase>
2769  <section>4.16</section>
2770  <incorrect>
2771  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2772    <data type="tok"/>
2773  </element>
2774  </incorrect>
2775  </testCase>
2776  <testCase>
2777  <section>4.16</section>
2778  <incorrect>
2779  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2780    <value type="tok"/>
2781  </element>
2782  </incorrect>
2783  </testCase>
2784  <testCase>
2785  <section>4.16</section>
2786  <incorrect>
2787  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2788    <optional>
2789      <notAllowed/>
2790      <data type="token">
2791        <param name="minLength">2</param>
2792      </data>
2793    </optional>
2794  </element>
2795  </incorrect>
2796  </testCase>
2797  <testCase>
2798  <section>4.16</section>
2799  <incorrect>
2800  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2801    <optional>
2802      <notAllowed/>
2803      <data type="tok"/>
2804    </optional>
2805  </element>
2806  </incorrect>
2807  </testCase>
2808  <testCase>
2809  <section>4.16</section>
2810  <incorrect>
2811  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2812    <optional>
2813      <notAllowed/>
2814      <value type="tok"/>
2815    </optional>
2816  </element>
2817  </incorrect>
2818  </testCase>
2819  <testCase>
2820  <section>4.16</section>
2821  <incorrect>
2822  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2823  <start>
2824    <element name="foo">
2825      <empty/>
2826    </element>
2827  </start>
2828  <define name="foo">
2829    <data type="token">
2830      <param name="minLength">2</param>
2831    </data>
2832  </define>
2833  </grammar>
2834  </incorrect>
2835  </testCase>
2836  <testCase>
2837  <section>4.16</section>
2838  <incorrect>
2839  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2840  <start>
2841    <element name="foo">
2842      <empty/>
2843    </element>
2844  </start>
2845  <define name="foo">
2846    <data type="tok"/>
2847  </define>
2848  </grammar>
2849  </incorrect>
2850  </testCase>
2851  <testCase>
2852  <section>4.16</section>
2853  <incorrect>
2854  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2855  <start>
2856    <element name="foo">
2857      <empty/>
2858    </element>
2859  </start>
2860  <define name="foo">
2861    <value type="tok"/>
2862  </define>
2863  </grammar>
2864  </incorrect>
2865  </testCase>
2866  </testSuite>
2867  <testSuite>
2868  <section>4.17</section>
2869  <testCase>
2870  <section>4.17</section>
2871  <incorrect>
2872  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2873  <start>
2874    <ref name="x"/>
2875  </start>
2876  <define name="x">
2877    <element name="foo1">
2878      <empty/>
2879    </element>
2880  </define>
2881  <define name="x" combine="choice">
2882    <element name="foo2">
2883      <empty/>
2884    </element>
2885  </define>
2886  <define name="x">
2887    <element name="foo3">
2888      <empty/>
2889    </element>
2890  </define>
2891  </grammar>
2892  </incorrect>
2893  </testCase>
2894  <testCase>
2895  <section>4.17</section>
2896  <incorrect>
2897  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2898  <start name="x">
2899    <element name="foo1">
2900      <empty/>
2901    </element>
2902  </start>
2903  <start name="x" combine="choice">
2904    <element name="foo2">
2905      <empty/>
2906    </element>
2907  </start>
2908  <start name="x">
2909    <element name="foo3">
2910      <empty/>
2911    </element>
2912  </start>
2913  </grammar>
2914  </incorrect>
2915  </testCase>
2916  <testCase>
2917  <section>4.17</section>
2918  <incorrect>
2919  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2920  <start>
2921    <ref name="x"/>
2922  </start>
2923  <define name="x">
2924    <element name="foo1">
2925      <empty/>
2926    </element>
2927  </define>
2928  <define name="x">
2929    <element name="foo2">
2930      <empty/>
2931    </element>
2932  </define>
2933  </grammar>
2934  </incorrect>
2935  </testCase>
2936  <testCase>
2937  <section>4.17</section>
2938  <incorrect>
2939  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2940  <start name="x">
2941    <element name="foo1">
2942      <empty/>
2943    </element>
2944  </start>
2945  <start name="x">
2946    <element name="foo2">
2947      <empty/>
2948    </element>
2949  </start>
2950  </grammar>
2951  </incorrect>
2952  </testCase>
2953  <testCase>
2954  <section>4.17</section>
2955  <correct>
2956  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2957  <start>
2958    <ref name="x"/>
2959  </start>
2960  <define name="x" combine="choice">
2961    <element name="foo1">
2962      <empty/>
2963    </element>
2964  </define>
2965  <define name="x" combine="choice">
2966    <element name="foo2">
2967      <empty/>
2968    </element>
2969  </define>
2970  <define name="x">
2971    <element name="foo3">
2972      <empty/>
2973    </element>
2974  </define>
2975  </grammar>
2976  </correct>
2977  <valid>
2978  <foo1/>
2979  </valid>
2980  <valid>
2981  <foo2/>
2982  </valid>
2983  <valid>
2984  <foo3/>
2985  </valid>
2986  <invalid>
2987  <foo4/>
2988  </invalid>
2989  </testCase>
2990  <testCase>
2991  <section>4.17</section>
2992  <correct>
2993  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2994  <start combine="choice">
2995    <element name="foo1">
2996      <empty/>
2997    </element>
2998  </start>
2999  <start combine="choice">
3000    <element name="foo2">
3001      <empty/>
3002    </element>
3003  </start>
3004  <start>
3005    <element name="foo3">
3006      <empty/>
3007    </element>
3008  </start>
3009  </grammar>
3010  </correct>
3011  <valid>
3012  <foo1/>
3013  </valid>
3014  <valid>
3015  <foo2/>
3016  </valid>
3017  <valid>
3018  <foo3/>
3019  </valid>
3020  <invalid>
3021  <foo4/>
3022  </invalid>
3023  </testCase>
3024  <testCase>
3025  <section>4.17</section>
3026  <incorrect>
3027  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3028  <start>
3029    <element name="foo">
3030      <ref name="x"/>
3031    </element>
3032  </start>
3033  <define name="x" combine="choice">
3034    <element name="bar1">
3035      <empty/>
3036    </element>
3037  </define>
3038  <define name="x">
3039    <element name="bar2">
3040      <empty/>
3041    </element>
3042  </define>
3043  <define name="x" combine="interleave">
3044    <element name="bar3">
3045      <empty/>
3046    </element>
3047  </define>
3048  </grammar>
3049  </incorrect>
3050  </testCase>
3051  <testCase>
3052  <section>4.17</section>
3053  <incorrect>
3054  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
3055  <grammar>
3056  <start name="x" combine="choice">
3057    <element name="bar1">
3058      <empty/>
3059    </element>
3060  </start>
3061  <start name="x">
3062    <element name="bar2">
3063      <empty/>
3064    </element>
3065  </start>
3066  <start name="x" combine="interleave">
3067    <element name="bar3">
3068      <empty/>
3069    </element>
3070  </start>
3071  </grammar>
3072  </element>
3073  </incorrect>
3074  </testCase>
3075  <testCase>
3076  <section>4.17</section>
3077  <correct>
3078  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3079  <start>
3080    <element name="foo">
3081      <ref name="x"/>
3082    </element>
3083  </start>
3084  <define name="x" combine="interleave">
3085    <element name="bar1">
3086      <empty/>
3087    </element>
3088  </define>
3089  <define name="x" combine="interleave">
3090    <element name="bar2">
3091      <empty/>
3092    </element>
3093  </define>
3094  <define name="x">
3095    <element name="bar3">
3096      <empty/>
3097    </element>
3098  </define>
3099  </grammar>
3100  </correct>
3101  <valid>
3102  <foo><bar1/><bar2/><bar3/></foo>
3103  </valid>
3104  <valid>
3105  <foo><bar1/><bar3/><bar2/></foo>
3106  </valid>
3107  <valid>
3108  <foo><bar2/><bar3/><bar1/></foo>
3109  </valid>
3110  <invalid>
3111  <foo><bar2/><bar3/><bar1/><bar2/></foo>
3112  </invalid>
3113  </testCase>
3114  <testCase>
3115  <section>4.17</section>
3116  <correct>
3117  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
3118  <grammar>
3119  <start combine="interleave">
3120    <element name="bar1">
3121      <empty/>
3122    </element>
3123  </start>
3124  <start>
3125    <element name="bar2">
3126      <empty/>
3127    </element>
3128  </start>
3129  <start combine="interleave">
3130    <element name="bar3">
3131      <empty/>
3132    </element>
3133  </start>
3134  </grammar>
3135  </element>
3136  </correct>
3137  <valid>
3138  <foo><bar1/><bar2/><bar3/></foo>
3139  </valid>
3140  <valid>
3141  <foo><bar1/><bar3/><bar2/></foo>
3142  </valid>
3143  <valid>
3144  <foo><bar2/><bar3/><bar1/></foo>
3145  </valid>
3146  <invalid>
3147  <foo><bar2/><bar3/><bar1/><bar2/></foo>
3148  </invalid>
3149  </testCase>
3150  <testCase>
3151  <section>4.17</section>
3152  <incorrect>
3153  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3154  <start>
3155    <element name="foo">
3156      <ref name="x"/>
3157    </element>
3158  </start>
3159  <define name="x">
3160    <element name="bar1">
3161      <empty/>
3162    </element>
3163  </define>
3164  <define name="x" combine="interleave">
3165    <element name="bar2">
3166      <empty/>
3167    </element>
3168  </define>
3169  <define name="x">
3170    <element name="bar3">
3171      <empty/>
3172    </element>
3173  </define>
3174  </grammar>
3175  </incorrect>
3176  </testCase>
3177  <testCase>
3178  <section>4.17</section>
3179  <incorrect>
3180  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> 
3181  <grammar>
3182  <start name="x">
3183    <element name="bar1">
3184      <empty/>
3185    </element>
3186  </start>
3187  <start name="x" combine="interleave">
3188    <element name="bar2">
3189      <empty/>
3190    </element>
3191  </start>
3192  <start name="x">
3193    <element name="bar3">
3194      <empty/>
3195    </element>
3196  </start>
3197  </grammar>
3198  </element>
3199  </incorrect>
3200  </testCase>
3201  </testSuite>
3202  <testSuite>
3203  <section>4.18</section>
3204  <testCase>
3205  <section>4.18</section>
3206  <documentation>grammar must have a start</documentation>
3207  <incorrect>
3208  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3209    <define name="foo">
3210      <element name="foo">
3211        <empty/>
3212      </element>
3213    </define>
3214  </grammar>   
3215  </incorrect>
3216  </testCase>
3217  <testCase>
3218  <section>4.18</section>
3219  <documentation>4.17 is before 4.18</documentation>
3220  <incorrect>
3221  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3222    <start>
3223      <element name="foo">
3224        <empty/>
3225      </element>
3226    </start>
3227    <define name="bar">
3228      <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3229        <define name="foo">
3230  	<element name="foo">
3231  	  <empty/>
3232  	</element>
3233        </define>
3234      </grammar>   
3235    </define>
3236  </grammar>
3237  </incorrect>
3238  </testCase>
3239  <testCase>
3240  <section>4.18</section>
3241  <documentation>4.17 is before 4.19</documentation>
3242  <incorrect>
3243  <choice xmlns="http://relaxng.org/ns/structure/1.0">
3244    <element name="foo">
3245      <empty/>
3246    </element>
3247    <group>
3248      <notAllowed/>
3249      <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3250        <define name="foo">
3251  	<element name="foo">
3252  	  <empty/>
3253  	</element>
3254        </define>
3255      </grammar>   
3256    </group>
3257  </choice>
3258  </incorrect>
3259  </testCase>
3260  <testCase>
3261  <section>4.18</section>
3262  <documentation>every ref must have a def</documentation>
3263  <incorrect>
3264  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3265    <start>
3266      <ref name="foo"/>
3267    </start>
3268  </grammar>
3269  </incorrect>
3270  </testCase>
3271  <testCase>
3272  <section>4.18</section>
3273  <documentation>4.17 is before 4.18</documentation>
3274  <incorrect>
3275  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3276    <start>
3277      <element name="foo">
3278        <empty/>
3279      </element>
3280    </start>
3281    <define name="foo">
3282      <ref name="bar"/>
3283    </define>
3284  </grammar>
3285  </incorrect>
3286  </testCase>
3287  <testCase>
3288  <section>4.18</section>
3289  <documentation>4.17 is before 4.19</documentation>
3290  <incorrect>
3291  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3292    <start>
3293      <choice>
3294        <element name="foo">
3295  	<empty/>
3296        </element>
3297        <group>
3298          <notAllowed/>
3299          <ref name="foo"/>
3300        </group>
3301      </choice>
3302    </start>
3303  </grammar>
3304  </incorrect>
3305  </testCase>
3306  <testCase>
3307  <section>4.18</section>
3308  <documentation>every parentRef must have a def</documentation>
3309  <incorrect>
3310  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3311    <start>
3312      <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3313        <start>
3314  	<parentRef name="foo"/>
3315        </start>
3316        <define name="foo">
3317          <element name="foo">
3318            <empty/>
3319          </element>
3320        </define>
3321      </grammar>
3322    </start>
3323  </grammar>
3324  </incorrect>
3325  </testCase>
3326  <testCase>
3327  <section>4.18</section>
3328  <documentation>4.17 is before 4.18</documentation>
3329  <incorrect>
3330  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3331    <start>
3332      <element name="foo">
3333        <empty/>
3334      </element>
3335    </start>
3336    <define name="bar">
3337      <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3338        <start>
3339  	<parentRef name="foo"/>
3340        </start>
3341        <define name="foo">
3342          <element name="foo">
3343            <empty/>
3344          </element>
3345        </define>
3346      </grammar>
3347    </define>
3348  </grammar>
3349  </incorrect>
3350  </testCase>
3351  <testCase>
3352  <section>4.18</section>
3353  <documentation>4.17 is before 4.19</documentation>
3354  <incorrect>
3355  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3356    <start>
3357      <choice>
3358        <element name="foo">
3359  	<empty/>
3360        </element>
3361        <group>
3362  	<notAllowed/>
3363  	<grammar xmlns="http://relaxng.org/ns/structure/1.0">
3364  	  <start>
3365  	    <parentRef name="foo"/>
3366  	  </start>
3367  	  <define name="foo">
3368  	    <element name="foo">
3369  	      <empty/>
3370  	    </element>
3371  	  </define>
3372  	</grammar>
3373        </group>
3374      </choice>
3375    </start>
3376  </grammar>
3377  </incorrect>
3378  </testCase>
3379  <testCase>
3380  <section>4.18</section>
3381  <incorrect>
3382  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3383    <start>
3384      <ref name="foo"/>
3385    </start>
3386    <define name="foo">
3387      <choice>
3388        <element name="foo">
3389          <empty/>
3390        </element>
3391        <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3392          <start>
3393  	  <parentRef name="foo"/>
3394          </start>
3395        </grammar>
3396      </choice>
3397    </define>
3398  </grammar>
3399  </incorrect>
3400  </testCase>
3401  <testCase>
3402  <section>4.18</section>
3403  <correct>
3404  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3405    <start>
3406      <ref name="foo"/>
3407    </start>
3408    <define name="foo">
3409      <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3410        <start>
3411  	<ref name="foo"/>
3412        </start>
3413        <define name="foo">
3414  	<element name="foo">
3415  	  <empty/>
3416  	</element>
3417        </define>
3418      </grammar>
3419    </define>
3420  </grammar>
3421  </correct>
3422  <valid><foo/></valid>
3423  </testCase>
3424  <testCase>
3425  <section>4.18</section>
3426  <correct>
3427  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3428    <start>
3429      <grammar>
3430        <start>
3431          <ref name="foo"/>
3432        </start>
3433        <define name="foo">
3434          <element name="innerFoo">
3435             <parentRef name="foo"/>
3436          </element>
3437        </define>
3438      </grammar>
3439    </start>
3440    <define name="foo">
3441      <element name="outerFoo">
3442        <empty/>
3443      </element>
3444    </define>
3445  </grammar>
3446  </correct>
3447  <valid><innerFoo><outerFoo/></innerFoo></valid>
3448  <invalid><outerFoo/></invalid>
3449  </testCase>
3450  <testCase>
3451  <section>4.18</section>
3452  <correct>
3453  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3454    <start>
3455      <ref name="foo"/>
3456    </start>
3457    <define name="foo">
3458      <element name="outerFoo">
3459        <grammar>
3460  	<start>
3461  	  <ref name="foo"/>
3462  	</start>
3463  	<define name="foo">
3464  	  <element name="innerFoo">
3465  	     <empty/>
3466  	  </element>
3467  	</define>
3468        </grammar>
3469      </element>
3470    </define>
3471  </grammar>
3472  </correct>
3473  <valid><outerFoo><innerFoo/></outerFoo></valid>
3474  <invalid><innerFoo/></invalid>
3475  </testCase>
3476  </testSuite>
3477  <testSuite>
3478  <section>4.19</section>
3479  <testCase>
3480  <section>4.19</section>
3481  <incorrect>
3482  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3483    <start>
3484      <element name="foo">
3485        <ref name="bar"/>
3486      </element>
3487    </start>
3488    <define name="bar">
3489      <optional>
3490        <element name="bar">
3491          <empty/>
3492        </element>
3493        <ref name="bar"/>
3494      </optional>
3495    </define>
3496  </grammar>
3497  </incorrect>
3498  </testCase>
3499  <testCase>
3500  <section>4.19</section>
3501  <correct>
3502  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3503    <start>
3504      <element name="foo">
3505        <ref name="bar"/>
3506      </element>
3507    </start>
3508    <define name="bar">
3509      <element name="bar">
3510        <optional>
3511          <ref name="bar"/>
3512        </optional>
3513      </element>
3514    </define>
3515  </grammar>
3516  </correct>
3517  <valid>
3518  <foo><bar/></foo>
3519  </valid>
3520  <valid>
3521  <foo><bar><bar/></bar></foo>
3522  </valid>
3523  <invalid>
3524  <foo/>
3525  </invalid>
3526  </testCase>
3527  <testCase>
3528  <section>4.19</section>
3529  <correct>
3530  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3531    <start>
3532      <element name="foo">
3533        <empty/>
3534      </element>
3535    </start>
3536    <define name="bar">
3537      <ref name="bar"/>
3538    </define>
3539  </grammar>
3540  </correct>
3541  <valid><foo/></valid>
3542  </testCase>
3543  <testCase>
3544  <section>4.19</section>
3545  <section>4.20</section>
3546  <documentation>Tests that recursion detection happens before
3547  normalization of notAllowed.</documentation>
3548  <incorrect>
3549  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3550    <start>
3551      <choice>
3552        <element name="foo">
3553          <empty/>
3554        </element>
3555        <group>
3556          <notAllowed/>
3557          <ref name="bar"/>
3558        </group>
3559      </choice>
3560    </start>
3561    <define name="bar">
3562      <element name="bar">
3563        <empty/>
3564      </element>
3565      <optional>
3566        <ref name="bar"/>
3567      </optional>
3568    </define>
3569  </grammar>
3570  </incorrect>
3571  </testCase>
3572  </testSuite>
3573  </testSuite>
3574  <testSuite>
3575  <section>6</section>
3576  <testSuite>
3577  <section>6.1</section>
3578  <testCase>
3579  <section>6.1</section>
3580  <correct>
3581  <element xmlns="http://relaxng.org/ns/structure/1.0">
3582    <anyName/>
3583    <empty/>
3584  </element>
3585  </correct>
3586  <valid>
3587  <foo/>
3588  </valid>
3589  <valid>
3590  <foo xmlns="http://www.example.com"/>
3591  </valid>
3592  </testCase>
3593  <testCase>
3594  <section>6.1</section>
3595  <correct>
3596  <element xmlns="http://relaxng.org/ns/structure/1.0">
3597    <anyName>
3598      <except>
3599        <name ns="">foo</name>
3600      </except>
3601    </anyName>
3602    <empty/>
3603  </element>
3604  </correct>
3605  <invalid>
3606  <foo/>
3607  </invalid>
3608  <valid>
3609  <foo xmlns="http://www.example.com"/>
3610  </valid>
3611  <valid>
3612  <bar/>
3613  </valid>
3614  </testCase>
3615  <testCase>
3616  <section>6.1</section>
3617  <correct>
3618  <element xmlns="http://relaxng.org/ns/structure/1.0">
3619    <anyName>
3620      <except>
3621        <nsName ns=""/>
3622      </except>
3623    </anyName>
3624    <empty/>
3625  </element>
3626  </correct>
3627  <invalid>
3628  <foo/>
3629  </invalid>
3630  <valid>
3631  <foo xmlns="http://www.example.com"/>
3632  </valid>
3633  </testCase>
3634  <testCase>
3635  <section>6.1</section>
3636  <correct>
3637  <element xmlns="http://relaxng.org/ns/structure/1.0">
3638    <nsName ns=""/>
3639    <empty/>
3640  </element>
3641  </correct>
3642  <valid>
3643  <foo/>
3644  </valid>
3645  <invalid>
3646  <foo xmlns="http://www.example.com"/>
3647  </invalid>
3648  </testCase>
3649  <testCase>
3650  <section>6.1</section>
3651  <correct>
3652  <element xmlns="http://relaxng.org/ns/structure/1.0">
3653    <nsName ns="http://www.example.com"/>
3654    <empty/>
3655  </element>
3656  </correct>
3657  <invalid>
3658  <foo/>
3659  </invalid>
3660  <invalid>
3661  <foo xmlns="HTTP://www.example.com"/>
3662  </invalid>
3663  <invalid>
3664  <foo xmlns="http://www.example.com/"/>
3665  </invalid>
3666  <valid>
3667  <foo xmlns="http://www.example.com"/>
3668  </valid>
3669  </testCase>
3670  <testCase>
3671  <section>6.1</section>
3672  <correct>
3673  <element xmlns="http://relaxng.org/ns/structure/1.0">
3674    <nsName ns="http://www.example.com">
3675      <except>
3676        <name ns="http://www.example.com">foo</name>
3677      </except>
3678    </nsName>
3679    <empty/>
3680  </element>
3681  </correct>
3682  <invalid>
3683  <foo/>
3684  </invalid>
3685  <invalid>
3686  <foo xmlns="http://www.example.com"/>
3687  </invalid>
3688  <valid>
3689  <bar xmlns="http://www.example.com"/>
3690  </valid>
3691  </testCase>
3692  <testCase>
3693  <section>6.1</section>
3694  <correct>
3695  <element xmlns="http://relaxng.org/ns/structure/1.0">
3696    <nsName ns="http://www.example.com">
3697      <except>
3698        <name ns="">foo</name>
3699      </except>
3700    </nsName>
3701    <empty/>
3702  </element>
3703  </correct>
3704  <invalid>
3705  <bar/>
3706  </invalid>
3707  <invalid>
3708  <foo/>
3709  </invalid>
3710  <valid>
3711  <foo xmlns="http://www.example.com"/>
3712  </valid>
3713  <valid>
3714  <bar xmlns="http://www.example.com"/>
3715  </valid>
3716  </testCase>
3717  <testCase>
3718  <section>6.1</section>
3719  <correct>
3720  <element xmlns="http://relaxng.org/ns/structure/1.0">
3721    <name ns="http://www.example.com">foo</name>
3722    <empty/>
3723  </element>
3724  </correct>
3725  <valid>
3726  <foo xmlns="http://www.example.com"/>
3727  </valid>
3728  <invalid>
3729  <foo/>
3730  </invalid>
3731  <invalid>
3732  <bar xmlns="http://www.example.com"/>
3733  </invalid>
3734  <invalid>
3735  <foo xmlns="http://www.example.org"/>
3736  </invalid>
3737  </testCase>
3738  <testCase>
3739  <section>6.1</section>
3740  <correct>
3741  <element xmlns="http://relaxng.org/ns/structure/1.0">
3742    <name ns="">foo</name>
3743    <empty/>
3744  </element>
3745  </correct>
3746  <invalid>
3747  <foo xmlns="http://www.example.com"/>
3748  </invalid>
3749  <valid>
3750  <foo/>
3751  </valid>
3752  <invalid>
3753  <bar xmlns="http://www.example.com"/>
3754  </invalid>
3755  <invalid>
3756  <bar/>
3757  </invalid>
3758  </testCase>
3759  <testCase>
3760  <section>6.1</section>
3761  <correct>
3762  <element xmlns="http://relaxng.org/ns/structure/1.0">
3763    <choice>
3764      <name ns="">foo</name>
3765      <name ns="">bar</name>
3766    </choice>
3767    <empty/>
3768  </element>
3769  </correct>
3770  <invalid>
3771  <baz/>
3772  </invalid>
3773  <valid>
3774  <foo/>
3775  </valid>
3776  <valid>
3777  <bar/>
3778  </valid>
3779  </testCase>
3780  </testSuite>
3781  <testSuite>
3782  <section>6.2</section>
3783  <testSuite>
3784  <section>6.2.1</section>
3785  <testCase>
3786  <section>6.2.1</section>
3787  <correct>
3788  <choice xmlns="http://relaxng.org/ns/structure/1.0">
3789    <element name="foo">
3790      <empty/>
3791    </element>
3792    <element name="bar">
3793      <empty/>
3794    </element>
3795  </choice>
3796  </correct>
3797  <valid>
3798  <foo/>
3799  </valid>
3800  <valid>
3801  <bar/>
3802  </valid>
3803  <invalid>
3804  <baz/>
3805  </invalid>
3806  </testCase>
3807  <testCase>
3808  <section>6.2.1</section>
3809  <correct>
3810  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
3811    <choice>
3812      <group>
3813        <element name="bar1">
3814          <empty/>
3815        </element>
3816        <element name="bar2">
3817          <empty/>
3818        </element>
3819      </group>
3820      <group>
3821        <element name="bar1">
3822          <empty/>
3823        </element>
3824        <element name="bar3">
3825          <empty/>
3826        </element>
3827      </group>
3828    </choice>
3829  </element>
3830  </correct>
3831  <valid>
3832  <foo><bar1/><bar2/></foo>
3833  </valid>
3834  <valid>
3835  <foo><bar1/><bar3/></foo>
3836  </valid>
3837  <invalid>
3838  <foo><bar1/></foo>
3839  </invalid>
3840  <invalid>
3841  <foo/>
3842  </invalid>
3843  <invalid>
3844  <foo><bar2/></foo>
3845  </invalid>
3846  <invalid>
3847  <foo><bar3/></foo>
3848  </invalid>
3849  <invalid>
3850  <foo><bar1/><bar2/><bar3/></foo>
3851  </invalid>
3852  </testCase>
3853  <testCase>
3854  <section>6.2.1</section>
3855  <correct>
3856  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
3857    <choice>
3858      <group>
3859        <attribute name="bar1">
3860          <text/>
3861        </attribute>
3862        <attribute name="bar2">
3863          <text/>
3864        </attribute>
3865      </group>
3866      <group>
3867        <attribute name="bar1">
3868          <text/>
3869        </attribute>
3870        <attribute name="bar3">
3871          <text/>
3872        </attribute>
3873      </group>
3874    </choice>
3875  </element>
3876  </correct>
3877  <valid>
3878  <foo bar1="x" bar2="x"/>
3879  </valid>
3880  <valid>
3881  <foo bar1="x" bar3="x"/>
3882  </valid>
3883  <invalid>
3884  <foo/>
3885  </invalid>
3886  <invalid>
3887  <foo bar1="x"/>
3888  </invalid>
3889  <invalid>
3890  <foo bar2="x"/>
3891  </invalid>
3892  <invalid>
3893  <foo bar3="x"/>
3894  </invalid>
3895  <invalid>
3896  <foo bar1="x" bar2="x" bar3="x"/>
3897  </invalid>
3898  </testCase>
3899  <testCase>
3900  <section>6.2.1</section>
3901  <correct>
3902  <choice xmlns="http://relaxng.org/ns/structure/1.0">
3903    <element name="foo">
3904      <element name="bar">
3905        <empty/>
3906      </element>
3907    </element>
3908    <element name="foo">
3909      <element name="baz">
3910        <empty/>
3911      </element>
3912    </element>
3913  </choice>
3914  </correct>
3915  <valid>
3916  <foo><bar/></foo>
3917  </valid>
3918  <valid>
3919  <foo><baz/></foo>
3920  </valid>
3921  <invalid>
3922  <foo/>
3923  </invalid>
3924  <invalid>
3925  <foo><bar/><bar/></foo>
3926  </invalid>
3927  <invalid>
3928  <foo><foo/></foo>
3929  </invalid>
3930  <invalid>
3931  <bar/>
3932  </invalid>
3933  <invalid>
3934  <fobaz/>
3935  </invalid>
3936  </testCase>
3937  </testSuite>
3938  <testSuite>
3939  <section>6.2.2</section>
3940  <testCase>
3941  <section>6.2.2</section>
3942  <correct>
3943  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
3944    <group>
3945      <element name="bar">
3946        <empty/>
3947      </element>
3948      <element name="baz">
3949        <empty/>
3950      </element>
3951    </group>
3952  </element>
3953  </correct>
3954  <valid>
3955  <foo><bar/><baz/></foo>
3956  </valid>
3957  <invalid>
3958  <foo><baz/><bar/></foo>
3959  </invalid>
3960  <invalid>
3961  <foo><bar/><baz/><bar/><baz/></foo>
3962  </invalid>
3963  <invalid>
3964  <foo/>
3965  </invalid>
3966  <invalid>
3967  <foo><bar/></foo>
3968  </invalid>
3969  <invalid>
3970  <foo><baz/></foo>
3971  </invalid>
3972  </testCase>
3973  <testCase>
3974  <section>6.2.2</section>
3975  <correct>
3976  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
3977    <group>
3978      <attribute name="bar">
3979        <text/>
3980      </attribute>
3981      <attribute name="baz">
3982        <text/>
3983      </attribute>
3984    </group>
3985  </element>
3986  </correct>
3987  <valid>
3988  <foo bar="x" baz="x"/>
3989  </valid>
3990  <invalid>
3991  <foo/>
3992  </invalid>
3993  </testCase>
3994  <testCase>
3995  <section>6.2.2</section>
3996  <correct>
3997  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
3998    <group>
3999      <attribute name="bar">
4000        <text/>
4001      </attribute>
4002      <attribute name="baz">
4003        <text/>
4004      </attribute>
4005    </group>
4006  </element>
4007  </correct>
4008  <valid>
4009  <foo bar="x" baz="x"/>
4010  </valid>
4011  <invalid>
4012  <foo/>
4013  </invalid>
4014  <invalid>
4015  <foo bar="x"/>
4016  </invalid>
4017  <invalid>
4018  <foo baz="x"/>
4019  </invalid>
4020  </testCase>
4021  <testCase>
4022  <section>6.2.2</section>
4023  <correct>
4024  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4025    <group>
4026      <attribute name="baz">
4027        <text/>
4028      </attribute>
4029      <attribute name="bar">
4030        <text/>
4031      </attribute>
4032    </group>
4033  </element>
4034  </correct>
4035  <valid>
4036  <foo bar="x" baz="x"/>
4037  </valid>
4038  <invalid>
4039  <foo/>
4040  </invalid>
4041  <invalid>
4042  <foo bar="x"/>
4043  </invalid>
4044  <invalid>
4045  <foo baz="x"/>
4046  </invalid>
4047  </testCase>
4048  <testCase>
4049  <section>6.2.2</section>
4050  <correct>
4051  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4052    <group>
4053      <attribute name="bar">
4054        <text/>
4055      </attribute>
4056      <element name="baz">
4057        <empty/>
4058      </element>
4059    </group>
4060  </element>
4061  </correct>
4062  <valid>
4063  <foo bar="x"><baz/></foo>
4064  </valid>
4065  <invalid>
4066  <foo><baz/></foo>
4067  </invalid>
4068  <invalid>
4069  <foo bar="x"/>
4070  </invalid>
4071  <invalid>
4072  <foo baz="x"><bar/></foo>
4073  </invalid>
4074  </testCase>
4075  <testCase>
4076  <section>6.2.2</section>
4077  <correct>
4078  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4079    <group>
4080      <element name="baz">
4081        <empty/>
4082      </element>
4083      <attribute name="bar">
4084        <text/>
4085      </attribute>
4086    </group>
4087  </element>
4088  </correct>
4089  <valid>
4090  <foo bar="x"><baz/></foo>
4091  </valid>
4092  <invalid>
4093  <foo><baz/></foo>
4094  </invalid>
4095  <invalid>
4096  <foo bar="x"/>
4097  </invalid>
4098  <invalid>
4099  <foo baz="x"><bar/></foo>
4100  </invalid>
4101  </testCase>
4102  </testSuite>
4103  <testSuite>
4104  <section>6.2.3</section>
4105  <testCase>
4106  <section>6.2.3</section>
4107  <correct>
4108  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4109    <empty/>
4110  </element>
4111  </correct>
4112  <valid>
4113  <foo/>
4114  </valid>
4115  <valid>
4116  <foo> </foo>
4117  </valid>
4118  <valid>
4119  <foo>
4120  
4121  
4122  </foo>
4123  </valid>
4124  <valid>
4125  <foo>
4126  <?target data?>
4127  <?target data?>
4128  <?target data?>
4129  <?target data?>
4130  </foo>
4131  </valid>
4132  <invalid>
4133  <foo>x</foo>
4134  </invalid>
4135  <invalid>
4136  <foo><bar/></foo>
4137  </invalid>
4138  <invalid>
4139  <foo bar="x"/>
4140  </invalid>
4141  </testCase>
4142  <testCase>
4143  <section>6.2.3</section>
4144  <correct>
4145  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4146    <attribute name="bar">
4147      <empty/>
4148    </attribute>
4149  </element>
4150  </correct>
4151  <valid><foo bar=""/></valid>
4152  <valid><foo bar=" "/></valid>
4153  <invalid><foo bar="x"/></invalid>
4154  </testCase>
4155  <testCase>
4156  <section>6.2.3</section>
4157  <correct>
4158  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4159    <list>
4160      <empty/>
4161    </list>
4162  </element>
4163  </correct>
4164  <valid><foo/></valid>
4165  <valid><foo> </foo></valid>
4166  <invalid><foo>x</foo></invalid>
4167  <invalid><foo><bar/></foo></invalid>
4168  <invalid><foo bar=""/></invalid>
4169  </testCase>
4170  <testCase>
4171  <section>6.2.3</section>
4172  <correct>
4173  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4174    <attribute name="bar">
4175      <list>
4176        <empty/>
4177      </list>
4178    </attribute>
4179  </element>
4180  </correct>
4181  <valid><foo bar=""/></valid>
4182  <valid><foo bar=" "/></valid>
4183  <invalid><foo bar="x"/></invalid>
4184  </testCase>
4185  <testCase>
4186  <section>6.2.3</section>
4187  <correct>
4188  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4189    <group>
4190      <element name="bar">
4191        <empty/>
4192      </element>
4193      <choice>
4194        <empty/>
4195        <element name="baz">
4196          <empty/>
4197        </element>
4198      </choice>
4199    </group>
4200  </element>
4201  </correct>
4202  <valid>
4203  <foo><bar/><baz/></foo>
4204  </valid>
4205  <valid>
4206  <foo><bar/></foo>
4207  </valid>
4208  <invalid>
4209  <foo></foo>
4210  </invalid>
4211  <invalid>
4212  <foo><bar/><baz/><baz/></foo>
4213  </invalid>
4214  </testCase>
4215  <testCase>
4216  <correct>
4217  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4218    <choice>
4219      <empty/>
4220      <attribute name="bar">
4221        <text/>
4222      </attribute>
4223    </choice>
4224  </element>
4225  </correct>
4226  <valid>
4227  <foo bar="x"/>
4228  </valid>
4229  <valid>
4230  <foo/>
4231  </valid>
4232  <invalid>
4233  <foo baz="x"/>
4234  </invalid>
4235  <invalid>
4236  <foo><bar/></foo>
4237  </invalid>
4238  </testCase>
4239  </testSuite>
4240  <testSuite>
4241  <section>6.2.4</section>
4242  <testCase>
4243  <section>6.2.4</section>
4244  <correct>
4245  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4246    <text/>
4247  </element>
4248  </correct>
4249  <valid>
4250  <foo/>
4251  </valid>
4252  <valid>
4253  <foo> </foo>
4254  </valid>
4255  <valid>
4256  <foo>x</foo>
4257  </valid>
4258  <valid>
4259  <foo>
4260  x
4261  <?target data?>
4262  y
4263  </foo>
4264  </valid>
4265  <invalid>
4266  <foo><bar/></foo>
4267  </invalid>
4268  </testCase>
4269  <testCase>
4270  <section>6.2.4</section>
4271  <correct>
4272  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4273    <group>
4274      <text/>
4275      <element name="bar">
4276        <empty/>
4277      </element>
4278    </group>
4279  </element>
4280  </correct>
4281  <valid>
4282  <foo><bar/></foo>
4283  </valid>
4284  <valid>
4285  <foo>
4286  <bar/>
4287  </foo>
4288  </valid>
4289  <valid>
4290  <foo>
4291  x
4292  <bar/>
4293  </foo>
4294  </valid>
4295  <valid>
4296  <foo>
4297  x
4298  <?target data?>
4299  y
4300  <bar/></foo>
4301  </valid>
4302  <invalid>
4303  <foo/>
4304  </invalid>
4305  <invalid>
4306  <foo><bar/>x</foo>
4307  </invalid>
4308  </testCase>
4309  <testCase>
4310  <section>6.2.4</section>
4311  <correct>
4312  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4313    <group>
4314      <element name="bar">
4315        <empty/>
4316      </element>
4317      <text/>
4318    </group>
4319  </element>
4320  </correct>
4321  <valid>
4322  <foo><bar/></foo>
4323  </valid>
4324  <valid>
4325  <foo>
4326  <bar/>
4327  </foo>
4328  </valid>
4329  <invalid>
4330  <foo>
4331  x
4332  <bar/>
4333  </foo>
4334  </invalid>
4335  <valid>
4336  <foo>
4337  <bar/>
4338  x
4339  <?target data?>
4340  y
4341  </foo>
4342  </valid>
4343  <invalid>
4344  <foo/>
4345  </invalid>
4346  <valid>
4347  <foo><bar/>x</foo>
4348  </valid>
4349  </testCase>
4350  <testCase>
4351  <section>6.2.4</section>
4352  <correct>
4353  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4354    <interleave>
4355      <element name="bar">
4356        <empty/>
4357      </element>
4358      <text/>
4359    </interleave>
4360  </element>
4361  </correct>
4362  <valid>
4363  <foo><bar/></foo>
4364  </valid>
4365  <valid>
4366  <foo>
4367  <bar/>
4368  </foo>
4369  </valid>
4370  <valid>
4371  <foo>
4372  x
4373  <bar/>
4374  </foo>
4375  </valid>
4376  <valid>
4377  <foo>
4378  <bar/>
4379  x
4380  <?target data?>
4381  y
4382  </foo>
4383  </valid>
4384  <invalid>
4385  <foo/>
4386  </invalid>
4387  <valid>
4388  <foo><bar/>x</foo>
4389  </valid>
4390  <valid>
4391  <foo>x<bar/>x</foo>
4392  </valid>
4393  <invalid>
4394  <foo>x<bar/>x<bar/></foo>
4395  </invalid>
4396  </testCase>
4397  <testCase>
4398  <section>6.2.4</section>
4399  <correct>
4400  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4401    <attribute name="bar">
4402      <text/>
4403    </attribute>
4404  </element>
4405  </correct>
4406  <valid>
4407  <foo bar=""/>
4408  </valid>
4409  <valid>
4410  <foo bar="x"/>
4411  </valid>
4412  <valid>
4413  <foo bar=" "/>
4414  </valid>
4415  <invalid>
4416  <foo/>
4417  </invalid>
4418  <invalid>
4419  <foo><bar/>x<bar/></foo>
4420  </invalid>
4421  </testCase>
4422  </testSuite>
4423  <testSuite>
4424  <section>6.2.5</section>
4425  <testCase>
4426  <section>6.2.5</section>
4427  <correct>
4428  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4429    <oneOrMore>
4430      <element name="bar">
4431        <empty/>
4432      </element>
4433    </oneOrMore>
4434  </element>
4435  </correct>
4436  <valid>
4437  <foo><bar/></foo>
4438  </valid>
4439  <valid>
4440  <foo><bar/><bar/></foo>
4441  </valid>
4442  <valid>
4443  <foo><bar/><bar/><bar/></foo>
4444  </valid>
4445  <invalid>
4446  <foo/>
4447  </invalid>
4448  </testCase>
4449  <testCase>
4450  <section>6.2.5</section>
4451  <correct>
4452  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4453    <oneOrMore>
4454      <group>
4455        <element name="bar">
4456  	<empty/>
4457        </element>
4458        <element name="bar">
4459  	<empty/>
4460        </element>
4461      </group>
4462    </oneOrMore>
4463  </element>
4464  </correct>
4465  <valid>
4466  <foo><bar/><bar/></foo>
4467  </valid>
4468  <valid>
4469  <foo><bar/><bar/><bar/><bar/></foo>
4470  </valid>
4471  <valid>
4472  <foo><bar/><bar/><bar/><bar/><bar/><bar/></foo>
4473  </valid>
4474  <invalid>
4475  <foo><bar/></foo>
4476  </invalid>
4477  <invalid>
4478  <foo/>
4479  </invalid>
4480  <invalid>
4481  <foo><bar/><bar/><bar/></foo>
4482  </invalid>
4483  </testCase>
4484  <testCase>
4485  <section>6.2.5</section>
4486  <correct>
4487  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4488    <oneOrMore>
4489      <attribute>
4490        <nsName ns=""/>
4491        <text/>
4492      </attribute>
4493    </oneOrMore>
4494  </element>
4495  </correct>
4496  <valid>
4497  <foo x=""/>
4498  </valid>
4499  <valid>
4500  <foo x="" y=""/>
4501  </valid>
4502  <valid>
4503  <foo x="" y="" z=""/>
4504  </valid>
4505  <invalid>
4506  <foo/>
4507  </invalid>
4508  <invalid>
4509  <foo xmlns:ns="http://www.example.com" ns:x=""/>
4510  </invalid>
4511  <invalid>
4512  <foo x="" xmlns:ns="http://www.example.com" ns:x=""/>
4513  </invalid>
4514  </testCase>
4515  <testCase>
4516  <section>6.2.5</section>
4517  <correct>
4518  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4519    <oneOrMore>
4520      <choice>
4521        <attribute name="bar">
4522          <text/>
4523        </attribute>
4524        <element name="bar">
4525          <text/>
4526        </element>
4527      </choice>
4528    </oneOrMore>
4529  </element>
4530  </correct>
4531  <valid>
4532  <foo bar=""><bar/><bar/></foo>
4533  </valid>
4534  <valid>
4535  <foo><bar/></foo>
4536  </valid>
4537  <valid>
4538  <foo bar=""/>
4539  </valid>
4540  <invalid>
4541  <foo/>
4542  </invalid>
4543  </testCase>
4544  </testSuite>
4545  <testSuite>
4546  <section>6.2.6</section>
4547  <testCase>
4548  <section>6.2.6</section>
4549  <correct>
4550  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4551    <interleave>
4552      <element name="bar">
4553        <empty/>
4554      </element>
4555      <element name="baz">
4556        <empty/>
4557      </element>
4558    </interleave>
4559  </element>
4560  </correct>
4561  <valid>
4562  <foo><bar/><baz/></foo>
4563  </valid>
4564  <valid>
4565  <foo><baz/><bar/></foo>
4566  </valid>
4567  <invalid>
4568  <foo><bar/></foo>
4569  </invalid>
4570  <invalid>
4571  <foo><baz/></foo>
4572  </invalid>
4573  <invalid>
4574  <foo><bar/><bar/></foo>
4575  </invalid>
4576  <invalid>
4577  <foo/>
4578  </invalid>
4579  </testCase>
4580  <testCase>
4581  <section>6.2.6</section>
4582  <correct>
4583  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4584    <interleave>
4585      <group>
4586        <element name="bar1">
4587          <empty/>
4588        </element>
4589        <element name="bar2">
4590          <empty/>
4591        </element>
4592      </group>
4593      <element name="baz">
4594        <empty/>
4595      </element>
4596    </interleave>
4597  </element>
4598  </correct>
4599  <valid>
4600  <foo><baz/><bar1/><bar2/></foo>
4601  </valid>
4602  <valid>
4603  <foo><bar1/><baz/><bar2/></foo>
4604  </valid>
4605  <valid>
4606  <foo><bar1/><bar2/><baz/></foo>
4607  </valid>
4608  <invalid>
4609  <foo><baz/><bar2/><bar1/></foo>
4610  </invalid>
4611  <invalid>
4612  <foo><bar2/><bar1/></foo>
4613  </invalid>
4614  <invalid>
4615  <foo><baz/><bar2/><bar1/></foo>
4616  </invalid>
4617  <invalid>
4618  <foo><baz/><bar1/></foo>
4619  </invalid>
4620  <invalid>
4621  <foo><baz/><bar2/></foo>
4622  </invalid>
4623  </testCase>
4624  <testCase>
4625  <section>6.2.6</section>
4626  <correct>
4627  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4628    <interleave>
4629      <attribute name="bar">
4630        <text/>
4631      </attribute>
4632      <attribute name="baz">
4633        <text/>
4634      </attribute>
4635    </interleave>
4636  </element>
4637  </correct>
4638  <valid>
4639  <foo bar="" baz=""/>
4640  </valid>
4641  <invalid>
4642  <foo/>
4643  </invalid>
4644  <invalid>
4645  <foo/>
4646  </invalid>
4647  <invalid>
4648  <foo bar=""/>
4649  </invalid>
4650  <invalid>
4651  <foo baz=""/>
4652  </invalid>
4653  </testCase>
4654  <testCase>
4655  <section>6.2.6</section>
4656  <correct>
4657  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4658    <interleave>
4659      <element name="bar">
4660        <empty/>
4661      </element>
4662      <attribute name="baz">
4663        <text/>
4664      </attribute>
4665    </interleave>
4666  </element>
4667  </correct>
4668  <valid>
4669  <foo baz=""><bar/></foo>
4670  </valid>
4671  <invalid>
4672  <foo/>
4673  </invalid>
4674  <invalid>
4675  <foo bar=""/>
4676  </invalid>
4677  <invalid>
4678  <foo bar=""><baz/><baz/></foo>
4679  </invalid>
4680  <invalid>
4681  <foo><baz/><baz/></foo>
4682  </invalid>
4683  </testCase>
4684  </testSuite>
4685  <testSuite>
4686  <section>6.2.7</section>
4687  <testCase>
4688  <section>6.2.7</section>
4689  <correct>
4690  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4691    <attribute>
4692      <name ns="">bar</name>
4693      <value type="string" datatypeLibrary="">baz</value>
4694    </attribute>
4695  </element>
4696  </correct>
4697  <valid>
4698  <foo bar="baz"/>
4699  </valid>
4700  <invalid>
4701  <foo bar=" baz"/>
4702  </invalid>
4703  <invalid>
4704  <foo bar="b"/>
4705  </invalid>
4706  <invalid>
4707  <foo bar=""/>
4708  </invalid>
4709  <invalid>
4710  <foo bar=" "/>
4711  </invalid>
4712  <invalid>
4713  <foo><bar>baz</bar></foo>
4714  </invalid>
4715  </testCase>
4716  <testCase>
4717  <section>6.2.7</section>
4718  <correct>
4719  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4720    <attribute>
4721      <name ns="">bar</name>
4722      <choice>
4723        <value type="string" datatypeLibrary="">baz</value>
4724        <empty/>
4725      </choice>
4726    </attribute>
4727  </element>
4728  </correct>
4729  <valid>
4730  <foo bar="baz"/>
4731  </valid>
4732  <valid>
4733  <foo bar=""/>
4734  </valid>
4735  <invalid>
4736  <foo bar=" baz"/>
4737  </invalid>
4738  <invalid>
4739  <foo bar="b"/>
4740  </invalid>
4741  <invalid>
4742  <foo><bar>baz</bar></foo>
4743  </invalid>
4744  <invalid>
4745  <foo><bar/></foo>
4746  </invalid>
4747  <invalid>
4748  <foo/>
4749  </invalid>
4750  </testCase>
4751  <testCase>
4752  <section>6.2.7</section>
4753  <correct>
4754  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4755    <attribute>
4756      <name ns="">bar</name>
4757      <value type="string"/>
4758    </attribute>
4759  </element>
4760  </correct>
4761  <valid>
4762  <foo bar=""/>
4763  </valid>
4764  <invalid>
4765  <foo bar=" "/>
4766  </invalid>
4767  <invalid>
4768  <foo bar="x"/>
4769  </invalid>
4770  </testCase>
4771  <testCase>
4772  <section>6.2.7</section>
4773  <correct>
4774  <element xmlns="http://relaxng.org/ns/structure/1.0">
4775    <name ns="">foo</name>
4776    <group>
4777      <element>
4778        <name ns="">bar</name>
4779        <empty/>
4780      </element>
4781      <element>
4782        <name ns="">baz</name>
4783        <empty/>
4784      </element>
4785    </group>
4786  </element>
4787  </correct>
4788  <valid>
4789  <foo><bar/><baz/></foo>
4790  </valid>
4791  <valid>
4792  <foo>
4793  <bar/>
4794  <baz/>
4795  </foo>
4796  </valid>
4797  <valid>
4798  <foo>
4799  <bar/>
4800  &#xD;
4801  <baz/>
4802  </foo>
4803  </valid>
4804  <invalid>
4805  <foo/>
4806  </invalid>
4807  <invalid>
4808  <bar><bar/><baz/></bar>
4809  </invalid>
4810  </testCase>
4811  <testCase>
4812  <section>6.2.7</section>
4813  <section>6.2.8</section>
4814  <correct>
4815  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4816    <value type="string"/>
4817  </element>
4818  </correct>
4819  <valid><foo/></valid>
4820  <invalid><foo> </foo></invalid>
4821  <invalid><foo>x</foo></invalid>
4822  </testCase>
4823  <testCase>
4824  <section>6.2.7</section>
4825  <section>6.2.8</section>
4826  <correct>
4827  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4828    <choice>
4829      <value type="string"/>
4830      <empty/>
4831    </choice>
4832  </element>
4833  </correct>
4834  <valid><foo/></valid>
4835  <valid><foo> </foo></valid>
4836  <invalid><foo>x</foo></invalid>
4837  </testCase>
4838  <testCase>
4839  <section>6.2.7</section>
4840  <section>6.2.8</section>
4841  <section>6.2.10</section>
4842  <correct>
4843  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4844    <list>
4845      <data type="token"/>
4846    </list>
4847  </element>
4848  </correct>
4849  <invalid><foo/></invalid>
4850  <invalid><foo> </foo></invalid>
4851  <valid><foo>x</foo></valid>
4852  <valid><foo> x </foo></valid>
4853  <invalid><foo>x y</foo></invalid>
4854  </testCase>
4855  <testCase>
4856  <section>6.2.7</section>
4857  <section>6.2.8</section>
4858  <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
4859  <correct>
4860  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4861   <data type="string"
4862         datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4863     <param name="minLength">2</param>
4864   </data>
4865  </element>
4866  </correct>
4867  <valid><foo>xx</foo></valid>
4868  <valid><foo>xxx</foo></valid>
4869  <valid><foo>  </foo></valid>
4870  <valid><foo>   </foo></valid>
4871  <invalid><foo>x</foo></invalid>
4872  <invalid><foo> </foo></invalid>
4873  <invalid><foo/></invalid>
4874  </testCase>
4875  <testCase>
4876  <section>6.2.7</section>
4877  <section>6.2.8</section>
4878  <correct>
4879  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4880    <choice>
4881      <value>x</value>
4882      <element name="bar">
4883        <empty/>
4884      </element>
4885    </choice>
4886  </element>
4887  </correct>
4888  <valid><foo> x </foo></valid>
4889  <valid><foo>x</foo></valid>
4890  <invalid><foo>y</foo></invalid>
4891  <valid><foo><bar/></foo></valid>
4892  <valid>
4893  <foo>
4894  <bar/>
4895  </foo>
4896  </valid>
4897  <invalid><foo>x<bar/></foo></invalid>
4898  <invalid><foo/></invalid>
4899  <invalid><foo><bar/>x</foo></invalid>
4900  </testCase>
4901  <testCase>
4902  <section>6.2.7</section>
4903  <section>6.2.8</section>
4904  <correct>
4905  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4906    <choice>
4907      <value>x</value>
4908      <mixed>
4909        <element name="bar">
4910          <empty/>
4911        </element>
4912      </mixed>
4913    </choice>
4914  </element>
4915  </correct>
4916  <valid><foo> x </foo></valid>
4917  <valid><foo>x</foo></valid>
4918  <invalid><foo>y</foo></invalid>
4919  <valid><foo><bar/></foo></valid>
4920  <valid>
4921  <foo>
4922  <bar/>
4923  </foo>
4924  </valid>
4925  <valid><foo>x<bar/></foo></valid>
4926  <invalid><foo/></invalid>
4927  <valid><foo><bar/>x</foo></valid>
4928  </testCase>
4929  </testSuite>
4930  <testSuite>
4931  <section>6.2.8</section>
4932  <testCase>
4933  <section>6.2.8</section>
4934  <correct>
4935  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4936    <data type="string">
4937      <except>
4938        <choice>
4939          <value>x</value>
4940          <value>y</value>
4941        </choice>
4942      </except>
4943    </data>
4944  </element>
4945  </correct>
4946  <valid>
4947  <foo>xyzzy</foo>
4948  </valid>
4949  <invalid>
4950  <foo>x</foo>
4951  </invalid>
4952  <invalid>
4953  <foo>y</foo>
4954  </invalid>
4955  <invalid>
4956  <foo> x</foo>
4957  </invalid>
4958  </testCase>
4959  <testCase>
4960  <section>6.2.8</section>
4961  <correct>
4962  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4963    <data type="string"/>
4964  </element>
4965  </correct>
4966  <valid>
4967  <foo/>
4968  </valid>
4969  </testCase>
4970  <testCase>
4971  <section>6.2.8</section>
4972  <correct>
4973  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4974    <value/>
4975  </element>
4976  </correct>
4977  <valid>
4978  <foo/>
4979  </valid>
4980  </testCase>
4981  <testCase>
4982  <section>6.2.8</section>
4983  <correct>
4984  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4985    <data type="string">
4986      <except>
4987        <value/>
4988      </except>
4989    </data>
4990  </element>
4991  </correct>
4992  <invalid>
4993  <foo/>
4994  </invalid>
4995  <valid>
4996  <foo>x</foo>
4997  </valid>
4998  </testCase>
4999  </testSuite>
5000  <testSuite>
5001  <section>6.2.9</section>
5002  <testCase>
5003  <section>6.2.9</section>
5004  <correct>
5005  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5006    <data type="string" datatypeLibrary=""/>
5007  </element>
5008  </correct>
5009  <valid>
5010  <foo>xyzzy</foo>
5011  </valid>
5012  <valid>
5013  <foo>
5014  x
5015  <?target data?>
5016  y
5017  <?target data?>
5018  z
5019  </foo>
5020  </valid>
5021  <valid>
5022  <foo></foo>
5023  </valid>
5024  <valid>
5025  <foo>
5026  </foo>
5027  </valid>
5028  <invalid>
5029  <foo><bar/></foo>
5030  </invalid>
5031  <invalid>
5032  <foo bar=""/>
5033  </invalid>
5034  </testCase>
5035  <testCase>
5036  <section>6.2.9</section>
5037  <correct>
5038  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5039    <data type="token" datatypeLibrary=""/>
5040  </element>
5041  </correct>
5042  <valid>
5043  <foo>xyzzy</foo>
5044  </valid>
5045  <valid>
5046  <foo>
5047  x
5048  <?target data?>
5049  y
5050  <?target data?>
5051  z
5052  </foo>
5053  </valid>
5054  <valid>
5055  <foo></foo>
5056  </valid>
5057  <valid>
5058  <foo>
5059  </foo>
5060  </valid>
5061  <invalid>
5062  <foo><bar/></foo>
5063  </invalid>
5064  <invalid>
5065  <foo bar=""/>
5066  </invalid>
5067  </testCase>
5068  <testCase>
5069  <section>6.2.9</section>
5070  <correct>
5071  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5072    <value type="string" datatypeLibrary="">x</value>
5073  </element>
5074  </correct>
5075  <valid><foo>x</foo></valid>
5076  <invalid><foo>xy</foo></invalid>
5077  <invalid><foo> x</foo></invalid>
5078  <invalid><foo/></invalid>
5079  </testCase>
5080  <testCase>
5081  <section>6.2.9</section>
5082  <correct>
5083  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5084    <value type="string" datatypeLibrary=""> x</value>
5085  </element>
5086  </correct>
5087  <valid><foo> x</foo></valid>
5088  <invalid><foo> xy</foo></invalid>
5089  <invalid><foo>x</foo></invalid>
5090  <invalid><foo/></invalid>
5091  </testCase>
5092  <testCase>
5093  <section>6.2.9</section>
5094  <correct>
5095  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5096    <value type="token" datatypeLibrary="">x</value>
5097  </element>
5098  </correct>
5099  <valid><foo>x</foo></valid>
5100  <valid><foo> x</foo></valid>
5101  <valid><foo>x </foo></valid>
5102  <valid><foo>&#xA;&#xD;&#x9;&#x20;x&#xA;&#xD;&#x9;&#x20;</foo></valid>
5103  <invalid><foo/></invalid>
5104  <invalid><foo>xy</foo></invalid>
5105  </testCase>
5106  <testCase>
5107  <section>6.2.9</section>
5108  <correct>
5109  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5110    <value type="token" datatypeLibrary="">x y</value>
5111  </element>
5112  </correct>
5113  <valid><foo>x y</foo></valid>
5114  <valid><foo> x   y </foo></valid>
5115  <valid><foo>x&#xA;&#xD;&#x9;&#x20;y</foo></valid>
5116  <invalid><foo>xy</foo></invalid>
5117  </testCase>
5118  <testCase>
5119  <section>6.2.9</section>
5120  <correct>
5121  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5122    <value type="token" datatypeLibrary="">&#xA;&#xD;&#x9;&#x20;x&#xA;&#xD;&#x9;&#x20;</value>
5123  </element>
5124  </correct>
5125  <valid><foo>x</foo></valid>
5126  <valid><foo> x</foo></valid>
5127  <valid><foo>x </foo></valid>
5128  <valid><foo>&#xD;&#x9;x&#x20;&#xA;</foo></valid>
5129  <invalid><foo/></invalid>
5130  <invalid><foo>xy</foo></invalid>
5131  </testCase>
5132  <testCase>
5133  <section>6.2.9</section>
5134  <correct>
5135  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5136    <value type="token" datatypeLibrary="">x&#xA;&#xD;&#x9;&#x20;y</value>
5137  </element>
5138  </correct>
5139  <valid><foo>x y</foo></valid>
5140  <valid><foo>x  y</foo></valid>
5141  <valid><foo> x y </foo></valid>
5142  <valid><foo>x&#xD;&#x9;y</foo></valid>
5143  <valid><foo>x&#x20;&#xA;y</foo></valid>
5144  <invalid><foo/></invalid>
5145  <invalid><foo>xy</foo></invalid>
5146  </testCase>
5147  <testCase>
5148  <section>6.2.9</section>
5149  <incorrect>
5150  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5151    <data type="decimal" datatypeLibrary=""/>
5152  </element>
5153  </incorrect>
5154  </testCase>
5155  <testCase>
5156  <section>6.2.9</section>
5157  <incorrect>
5158  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5159    <value type="decimal" datatypeLibrary=""/>
5160  </element>
5161  </incorrect>
5162  </testCase>
5163  <testCase>
5164  <section>6.2.9</section>
5165  <incorrect>
5166  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5167    <data type="string" datatypeLibrary="">
5168      <param name="length">2</param>
5169    </data>
5170  </element>
5171  </incorrect>
5172  </testCase>
5173  <testCase>
5174  <section>6.2.9</section>
5175  <incorrect>
5176  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5177    <data type="token" datatypeLibrary="">
5178      <param name="length">2</param>
5179    </data>
5180  </element>
5181  </incorrect>
5182  </testCase>
5183  </testSuite>
5184  <testSuite>
5185  <section>6.2.10</section>
5186  <testCase>
5187  <section>6.2.10</section>
5188  <correct>
5189  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5190    <list>
5191      <value type="string">x</value>
5192    </list>
5193  </element>
5194  </correct>
5195  <valid>
5196  <foo>x</foo>
5197  </valid>
5198  <valid>
5199  <foo> x </foo>
5200  </valid>
5201  <invalid>
5202  <foo>x x</foo>
5203  </invalid>
5204  </testCase>
5205  <testCase>
5206  <section>6.2.10</section>
5207  <correct>
5208  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5209    <list>
5210      <oneOrMore>
5211        <value type="string">x</value>
5212      </oneOrMore>
5213    </list>
5214  </element>
5215  </correct>
5216  <valid>
5217  <foo>x</foo>
5218  </valid>
5219  <valid>
5220  <foo> x x x x </foo>
5221  </valid>
5222  <invalid>
5223  <foo/>
5224  </invalid>
5225  <invalid>
5226  <foo>x y</foo>
5227  </invalid>
5228  </testCase>
5229  <testCase>
5230  <section>6.2.10</section>
5231  <correct>
5232  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5233    <list>
5234      <group>
5235        <value type="string">x</value>
5236        <value type="string">y</value>
5237      </group>
5238    </list>
5239  </element>
5240  </correct>
5241  <valid>
5242  <foo>x y</foo>
5243  </valid>
5244  <valid>
5245  <foo>x  y</foo>
5246  </valid>
5247  <valid>
5248  <foo>&#xD;x&#xA;y&#x9;</foo>
5249  </valid>
5250  <invalid>
5251  <foo>x</foo>
5252  </invalid>
5253  </testCase>
5254  <testCase>
5255  <section>6.2.10</section>
5256  <correct>
5257  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5258    <list>
5259      <group>
5260        <data type="token"/>
5261        <data type="token"/>
5262      </group>
5263    </list>
5264  </element>
5265  </correct>
5266  <valid>
5267  <foo>x y</foo>
5268  </valid>
5269  <invalid>
5270  <foo/>
5271  </invalid>
5272  <invalid>
5273  <foo>x y z</foo>
5274  </invalid>
5275  </testCase>
5276  <testCase>
5277  <section>6.2.10</section>
5278  <correct>
5279  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5280    <list>
5281      <value>x y</value>
5282    </list>
5283  </element>
5284  </correct>
5285  <invalid>
5286  <foo>x y</foo>
5287  </invalid>
5288  </testCase>
5289  </testSuite>
5290  </testSuite>
5291  </testSuite>
5292  <testSuite>
5293  <section>7</section>
5294  <testSuite>
5295  <section>7.1</section>
5296  <testCase>
5297  <section>7.1.1</section>
5298  <incorrect>
5299  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5300  <start>
5301    <element name="foo">
5302      <attribute name="bar">
5303        <element name="baz">
5304          <empty/>
5305        </element>
5306      </attribute>
5307    </element>
5308  </start>
5309  </grammar>
5310  </incorrect>
5311  </testCase>
5312  <testCase>
5313  <section>7.1.1</section>
5314  <incorrect>
5315  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5316  <start>
5317    <element name="foo">
5318      <attribute name="bar">
5319        <choice>
5320          <element name="baz">
5321            <empty/>
5322          </element>
5323          <text/>
5324        </choice>
5325      </attribute>
5326    </element>
5327  </start>
5328  </grammar>
5329  </incorrect>
5330  </testCase>
5331  <testCase>
5332  <section>7.1.1</section>
5333  <incorrect>
5334  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5335  <start>
5336    <element name="foo">
5337      <attribute name="bar">
5338        <attribute name="baz"/>
5339      </attribute>
5340    </element>
5341  </start>
5342  </grammar>
5343  </incorrect>
5344  </testCase>
5345  <testCase>
5346  <section>7.1.1</section>
5347  <incorrect>
5348  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5349  <start>
5350    <element name="foo">
5351      <attribute name="bar">
5352        <choice>
5353          <attribute name="baz"/>
5354          <text/>
5355        </choice>
5356      </attribute>
5357    </element>
5358  </start>
5359  </grammar>
5360  </incorrect>
5361  </testCase>
5362  <testCase>
5363  <section>7.1.2</section>
5364  <incorrect>
5365  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5366  <start>
5367    <element name="foo">
5368      <oneOrMore>
5369        <group>
5370          <attribute name="bar"/>
5371          <attribute name="baz"/>
5372        </group>
5373      </oneOrMore>
5374    </element>
5375  </start>
5376  </grammar>
5377  </incorrect>
5378  </testCase>
5379  <testCase>
5380  <section>7.1.2</section>
5381  <incorrect>
5382  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5383  <start>
5384    <element name="foo">
5385      <oneOrMore>
5386        <group>
5387          <attribute>
5388            <anyName/>
5389          </attribute>
5390          <attribute>
5391            <anyName/>
5392          </attribute>
5393        </group>
5394      </oneOrMore>
5395    </element>
5396  </start>
5397  </grammar>
5398  </incorrect>
5399  </testCase>
5400  <testCase>
5401  <section>7.1.2</section>
5402  <incorrect>
5403  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5404  <start>
5405    <element name="foo">
5406      <oneOrMore>
5407        <choice>
5408          <group>
5409            <choice>
5410              <attribute name="bar"/>
5411              <attribute name="baz"/>
5412            </choice>
5413            <choice>
5414              <attribute name="bar"/>
5415              <attribute name="baz"/>
5416            </choice>
5417          </group>
5418          <attribute name="bar"/>
5419        </choice>
5420      </oneOrMore>
5421    </element>
5422  </start>
5423  </grammar>
5424  </incorrect>
5425  </testCase>
5426  <testCase>
5427  <section>7.1.2</section>
5428  <incorrect>
5429  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5430  <start>
5431    <element name="foo">
5432      <oneOrMore>
5433        <interleave>
5434          <attribute name="bar"/>
5435          <attribute name="baz"/>
5436        </interleave>
5437      </oneOrMore>
5438    </element>
5439  </start>
5440  </grammar>
5441  </incorrect>
5442  </testCase>
5443  <testCase>
5444  <section>7.1.2</section>
5445  <incorrect>
5446  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5447  <start>
5448    <element name="foo">
5449      <oneOrMore>
5450        <interleave>
5451          <attribute>
5452            <anyName/>
5453          </attribute>
5454          <attribute>
5455            <anyName/>
5456          </attribute>
5457        </interleave>
5458      </oneOrMore>
5459    </element>
5460  </start>
5461  </grammar>
5462  </incorrect>
5463  </testCase>
5464  <testCase>
5465  <section>7.1.2</section>
5466  <incorrect>
5467  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5468  <start>
5469    <element name="foo">
5470      <oneOrMore>
5471        <choice>
5472          <interleave>
5473            <choice>
5474              <attribute name="bar"/>
5475              <attribute name="baz"/>
5476            </choice>
5477            <choice>
5478              <attribute name="bar"/>
5479              <attribute name="baz"/>
5480            </choice>
5481          </interleave>
5482          <attribute name="bar"/>
5483        </choice>
5484      </oneOrMore>
5485    </element>
5486  </start>
5487  </grammar>
5488  </incorrect>
5489  </testCase>
5490  <testCase>
5491  <section>7.1.3</section>
5492  <incorrect>
5493  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5494  <start>
5495    <element name="foo">
5496      <list>
5497        <list>
5498          <data type="token"/>
5499        </list>
5500      </list>
5501    </element>
5502  </start>
5503  </grammar>
5504  </incorrect>
5505  </testCase>
5506  <testCase>
5507  <section>7.1.3</section>
5508  <incorrect>
5509  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5510  <start>
5511    <element name="foo">
5512      <list>
5513        <choice>
5514          <list>
5515            <data type="token"/>
5516          </list>
5517          <data type="token"/>
5518        </choice>
5519      </list>
5520    </element>
5521  </start>
5522  </grammar>
5523  </incorrect>
5524  </testCase>
5525  <testCase>
5526  <section>7.1.3</section>
5527  <incorrect>
5528  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5529  <start>
5530    <element name="foo">
5531      <list>
5532        <element name="bar">
5533          <empty/>
5534        </element>
5535      </list>
5536    </element>
5537  </start>
5538  </grammar>
5539  </incorrect>
5540  </testCase>
5541  <testCase>
5542  <section>7.1.3</section>
5543  <incorrect>
5544  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5545  <start>
5546    <element name="foo">
5547      <list>
5548        <choice>
5549          <data type="token"/>
5550          <element name="bar">
5551            <empty/>
5552          </element>
5553        </choice>
5554      </list>
5555    </element>
5556  </start>
5557  </grammar>
5558  </incorrect>
5559  </testCase>
5560  <testCase>
5561  <section>7.1.3</section>
5562  <incorrect>
5563  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5564  <start>
5565    <element name="foo">
5566      <list>
5567        <attribute name="bar">
5568          <empty/>
5569        </attribute>
5570      </list>
5571    </element>
5572  </start>
5573  </grammar>
5574  </incorrect>
5575  </testCase>
5576  <testCase>
5577  <section>7.1.3</section>
5578  <incorrect>
5579  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5580  <start>
5581    <element name="foo">
5582      <list>
5583        <choice>
5584          <attribute name="bar">
5585            <empty/>
5586          </attribute>
5587          <data type="token"/>
5588        </choice>
5589      </list>
5590    </element>
5591  </start>
5592  </grammar>
5593  </incorrect>
5594  </testCase>
5595  <testCase>
5596  <section>7.1.3</section>
5597  <incorrect>
5598  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5599  <start>
5600    <element name="foo">
5601      <list>
5602        <choice>
5603          <text/>
5604          <data type="token"/>
5605        </choice>
5606      </list>
5607    </element>
5608  </start>
5609  </grammar>
5610  </incorrect>
5611  </testCase>
5612  <testCase>
5613  <section>7.1.3</section>
5614  <incorrect>
5615  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5616  <start>
5617    <element name="foo">
5618      <list>
5619        <interleave>
5620          <value>x</value>
5621          <value>y</value>
5622        </interleave>
5623      </list>
5624    </element>
5625  </start>
5626  </grammar>
5627  </incorrect>
5628  </testCase>
5629  <testCase>
5630  <section>7.1.3</section>
5631  <incorrect>
5632  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5633  <start>
5634    <element name="foo">
5635      <list>
5636        <choice>
5637  	<interleave>
5638  	  <value>x</value>
5639  	  <value>y</value>
5640  	</interleave>
5641          <value>z</value>
5642        </choice>
5643      </list>
5644    </element>
5645  </start>
5646  </grammar>
5647  </incorrect>
5648  </testCase>
5649  <testCase>
5650  <section>7.1.4</section>
5651  <incorrect>
5652  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5653  <start>
5654    <element name="foo">
5655      <data type="string">
5656        <except>
5657          <attribute name="bar"/>
5658        </except>
5659      </data>
5660    </element>
5661  </start>
5662  </grammar>
5663  </incorrect>
5664  </testCase>
5665  <testCase>
5666  <section>7.1.4</section>
5667  <incorrect>
5668  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5669  <start>
5670    <element name="foo">
5671      <data type="string">
5672        <except>
5673          <element name="bar">
5674            <empty/>
5675          </element>
5676        </except>
5677      </data>
5678    </element>
5679  </start>
5680  </grammar>
5681  </incorrect>
5682  </testCase>
5683  <testCase>
5684  <section>7.1.4</section>
5685  <incorrect>
5686  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5687  <start>
5688    <element name="foo">
5689      <data type="string">
5690        <except>
5691          <text/>
5692        </except>
5693      </data>
5694    </element>
5695  </start>
5696  </grammar>
5697  </incorrect>
5698  </testCase>
5699  <testCase>
5700  <section>7.1.4</section>
5701  <incorrect>
5702  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5703  <start>
5704    <element name="foo">
5705      <data type="string">
5706        <except>
5707          <list>
5708            <data type="token"/>
5709          </list>
5710        </except>
5711      </data>
5712    </element>
5713  </start>
5714  </grammar>
5715  </incorrect>
5716  </testCase>
5717  <testCase>
5718  <section>7.1.4</section>
5719  <incorrect>
5720  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5721  <start>
5722    <element name="foo">
5723      <data type="string">
5724        <except>
5725          <group>
5726            <data type="token"/>
5727            <data type="token"/>
5728          </group>
5729        </except>
5730      </data>
5731    </element>
5732  </start>
5733  </grammar>
5734  </incorrect>
5735  </testCase>
5736  <testCase>
5737  <section>7.1.4</section>
5738  <incorrect>
5739  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5740  <start>
5741    <element name="foo">
5742      <data type="string">
5743        <except>
5744          <interleave>
5745            <data type="token"/>
5746            <data type="token"/>
5747          </interleave>
5748        </except>
5749      </data>
5750    </element>
5751  </start>
5752  </grammar>
5753  </incorrect>
5754  </testCase>
5755  <testCase>
5756  <section>7.1.4</section>
5757  <incorrect>
5758  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5759  <start>
5760    <element name="foo">
5761      <data type="string">
5762        <except>
5763          <oneOrMore>
5764            <data type="token"/>
5765          </oneOrMore>
5766        </except>
5767      </data>
5768    </element>
5769  </start>
5770  </grammar>
5771  </incorrect>
5772  </testCase>
5773  <testCase>
5774  <section>7.1.4</section>
5775  <incorrect>
5776  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5777  <start>
5778    <element name="foo">
5779      <data type="string">
5780        <except>
5781          <empty/>
5782        </except>
5783      </data>
5784    </element>
5785  </start>
5786  </grammar>
5787  </incorrect>
5788  </testCase>
5789  <testCase>
5790  <section>7.1.5</section>
5791  <incorrect>
5792  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5793  <start>
5794    <attribute name="foo"/>
5795  </start>
5796  </grammar>
5797  </incorrect>
5798  </testCase>
5799  <testCase>
5800  <section>7.1.5</section>
5801  <incorrect>
5802  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5803  <start>
5804    <data type="string"/>
5805  </start>
5806  </grammar>
5807  </incorrect>
5808  </testCase>
5809  <testCase>
5810  <section>7.1.5</section>
5811  <incorrect>
5812  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5813  <start>
5814    <choice>
5815      <data type="string"/>
5816      <element name="foo">
5817        <empty/>
5818      </element>
5819    </choice>
5820  </start>
5821  </grammar>
5822  </incorrect>
5823  </testCase>
5824  <testCase>
5825  <section>7.1.5</section>
5826  <incorrect>
5827  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5828  <start>
5829    <choice>
5830      <value>foo</value>
5831      <element name="foo">
5832        <empty/>
5833      </element>
5834    </choice>
5835  </start>
5836  </grammar>
5837  </incorrect>
5838  </testCase>
5839  <testCase>
5840  <section>7.1.5</section>
5841  <incorrect>
5842  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5843  <start>
5844    <text/>
5845  </start>
5846  </grammar>
5847  </incorrect>
5848  </testCase>
5849  <testCase>
5850  <section>7.1.5</section>
5851  <incorrect>
5852  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5853  <start>
5854    <choice>
5855      <text/>
5856      <element name="foo">
5857        <empty/>
5858      </element>
5859    </choice>
5860  </start>
5861  </grammar>
5862  </incorrect>
5863  </testCase>
5864  <testCase>
5865  <section>7.1.5</section>
5866  <incorrect>
5867  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5868  <start>
5869    <list>
5870      <data type="token"/>
5871    </list>
5872  </start>
5873  </grammar>
5874  </incorrect>
5875  </testCase>
5876  <testCase>
5877  <section>7.1.5</section>
5878  <incorrect>
5879  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5880  <start>
5881    <choice>
5882      <element name="foo">
5883        <empty/>
5884      </element>
5885      <list>
5886        <data type="token"/>
5887      </list>
5888    </choice>
5889  </start>
5890  </grammar>
5891  </incorrect>
5892  </testCase>
5893  <testCase>
5894  <section>7.1.5</section>
5895  <incorrect>
5896  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5897  <start>
5898    <group>
5899      <element name="foo">
5900        <empty/>
5901      </element>
5902      <element name="foo">
5903        <empty/>
5904      </element>
5905    </group>
5906  </start>
5907  </grammar>
5908  </incorrect>
5909  </testCase>
5910  <testCase>
5911  <section>7.1.5</section>
5912  <incorrect>
5913  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5914  <start>
5915    <choice>
5916      <element name="foo">
5917        <empty/>
5918      </element>
5919      <group>
5920        <element name="foo">
5921  	<empty/>
5922        </element>
5923        <element name="foo">
5924  	<empty/>
5925        </element>
5926      </group>
5927    </choice>
5928  </start>
5929  </grammar>
5930  </incorrect>
5931  </testCase>
5932  <testCase>
5933  <section>7.1.5</section>
5934  <incorrect>
5935  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5936  <start>
5937    <interleave>
5938      <element name="foo">
5939        <empty/>
5940      </element>
5941      <element name="foo">
5942        <empty/>
5943      </element>
5944    </interleave>
5945  </start>
5946  </grammar>
5947  </incorrect>
5948  </testCase>
5949  <testCase>
5950  <section>7.1.5</section>
5951  <incorrect>
5952  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5953  <start>
5954    <choice>
5955      <element name="foo">
5956        <empty/>
5957      </element>
5958      <interleave>
5959        <element name="foo">
5960  	<empty/>
5961        </element>
5962        <element name="foo">
5963  	<empty/>
5964        </element>
5965      </interleave>
5966    </choice>
5967  </start>
5968  </grammar>
5969  </incorrect>
5970  </testCase>
5971  <testCase>
5972  <section>7.1.5</section>
5973  <incorrect>
5974  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5975  <start>
5976    <oneOrMore>
5977      <element name="foo">
5978        <empty/>
5979      </element>
5980    </oneOrMore>
5981  </start>
5982  </grammar>
5983  </incorrect>
5984  </testCase>
5985  <testCase>
5986  <section>7.1.5</section>
5987  <incorrect>
5988  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5989  <start>
5990    <choice>
5991      <oneOrMore>
5992        <element name="foo">
5993  	<empty/>
5994        </element>
5995      </oneOrMore>
5996      <element name="foo">
5997        <empty/>
5998      </element>
5999    </choice>
6000  </start>
6001  </grammar>
6002  </incorrect>
6003  </testCase>
6004  <testCase>
6005  <section>7.1.5</section>
6006  <incorrect>
6007  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
6008  <start>
6009    <empty/>
6010  </start>
6011  </grammar>
6012  </incorrect>
6013  </testCase>
6014  <testCase>
6015  <section>7.1.5</section>
6016  <incorrect>
6017  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
6018  <start>
6019    <choice>
6020      <element name="foo">
6021        <empty/>
6022      </element>
6023      <empty/>
6024    </choice>
6025  </start>
6026  </grammar>
6027  </incorrect>
6028  </testCase>
6029  <testCase>
6030  <section>7.1.5</section>
6031  <section>7</section>
6032  <section>4.18</section>
6033  <documentation>Tests that constraints are post-normalization</documentation>
6034  <correct>
6035  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
6036    <grammar>
6037      <start>
6038        <text/>
6039      </start>
6040    </grammar>
6041  </element>
6042  </correct>
6043  <valid>
6044  <foo>text</foo>
6045  </valid>
6046  </testCase>
6047  <testCase>
6048  <section>7.1.5</section>
6049  <section>7</section>
6050  <section>4.18</section>
6051  <incorrect>
6052  <text xmlns="http://relaxng.org/ns/structure/1.0"/>
6053  </incorrect>
6054  </testCase>
6055  <testCase>
6056  <section>7.1.1</section>
6057  <section>7</section>
6058  <section>4.20</section>
6059  <correct>
6060  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
6061    <optional>
6062      <attribute name="bar">
6063        <group>
6064          <notAllowed/>
6065          <attribute name="baz"/>
6066        </group>
6067      </attribute>
6068    </optional>
6069  </element>
6070  </correct>
6071  <valid>
6072  <foo/>
6073  </valid>
6074  </testCase>
6075  <testCase>
6076  <section>7.1.1</section>
6077  <section>7</section>
6078  <section>4.20</section>
6079  <documentation>The nested attribute element is normalized out because
6080  of the not allowed.</documentation>
6081  <correct>
6082  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
6083    <attribute name="bar">
6084      <choice>
6085        <text/>
6086        <group>
6087          <notAllowed/>
6088          <attribute name="baz"/>
6089        </group>
6090      </choice>
6091    </attribute>
6092  </element>
6093  </correct>
6094  <valid>
6095  <foo bar="baz"/>
6096  </valid>
6097  </testCase>
6098  <testCase>
6099  <section>7.1.2</section>
6100  <section>7</section>
6101  <section>4.12</section>
6102  <documentation>The group element is normalized out.</documentation>
6103  <correct>
6104  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
6105  <start>
6106    <element name="foo">
6107      <oneOrMore>
6108        <group>
6109          <attribute>
6110            <anyName/>
6111          </attribute>
6112        </group>
6113      </oneOrMore>
6114    </element>
6115  </start>
6116  </grammar>
6117  </correct>
6118  <valid>
6119  <foo xyzzy1="val1" xyzzy2="val2"/>
6120  </valid>
6121  </testCase>
6122  <testCase>
6123  <section>7.1.2</section>
6124  <section>7</section>
6125  <section>4.21</section>
6126  <documentation>The group element is normalized out.</documentation>
6127  <correct>
6128  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
6129  <start>
6130    <element name="foo">
6131      <oneOrMore>
6132        <group>
6133          <attribute>
6134            <anyName/>
6135          </attribute>
6136          <empty/>
6137        </group>
6138      </oneOrMore>
6139    </element>
6140  </start>
6141  </grammar>
6142  </correct>
6143  <valid>
6144  <foo xyzzy1="val1" xyzzy2="val2"/>
6145  </valid>
6146  </testCase>
6147  <testCase>
6148  <section>7.1.2</section>
6149  <section>7</section>
6150  <section>4.20</section>
6151  <documentation>The attribute elements are all normalized out.</documentation>
6152  <correct>
6153  <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
6154    <optional>
6155      <attribute name="a1">
6156        <attribute name="a2">
6157          <attribute name="a3">
6158            <notAllowed/>
6159          </attribute>
6160        </attribute>
6161      </attribute>
6162    </optional>
6163  </element>
6164  </correct>
6165  <valid>
6166  <foo/>
6167  </valid>
6168  </testCase>
6169  </testSuite>
6170  <testSuite>
6171  <section>7.2</section>
6172  <testCase>
6173  <section>7.2</section>
6174  <incorrect>
6175  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
6176    <start>
6177      <element name="foo">
6178        <group>
6179          <data type="token"/>
6180          <data type="token"/>
6181        </group>
6182      </element>
6183    </start>
6184  </grammar>
6185  </incorrect>
6186  </testCase>
6187  <testCase>
6188  <documentation>Checks that normalization of notAllowed happens
6189  before string sequence checking.</documentation>
6190  <section>7.2</section>
6191  <section>4.20</section>
6192  <correct>
6193  <choice xmlns="http://relaxng.org/ns/structure/1.0">
6194    <element name="foo">
6195      <empty/>
6196    </element>
6197    <group>
6198      <notAllowed/>
6199      <element name="bar">
6200        <group>
6201  	<data type="token"/>
6202  	<data type="token"/>
6203        </group>
6204      </element>
6205    </group>
6206  </choice>
6207  </correct>
6208  <valid>
6209  <foo/>
6210  </valid>
6211  </testCase>
6212  <testCase>
6213  <section>4.20</section>
6214  <section>7.2</section>
6215  <documentation>notAllowed in an element is not normalized</documentation>
6216  <incorrect>
6217  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6218    <choice>
6219      <group>
6220        <element name="bar">
6221          <notAllowed/>
6222        </element>
6223        <data type="token"/>
6224        <data type="token"/>
6225      </group>
6226      <element name="baz">
6227        <empty/>
6228      </element>
6229    </choice>
6230  </element>
6231  </incorrect>
6232  </testCase>
6233  </testSuite>
6234  <testSuite>
6235  <section>7.3</section>
6236  <testCase>
6237  <section>7.3</section>
6238  <incorrect>
6239  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6240    <attribute name="bar"/>
6241    <attribute name="bar"/>
6242  </element>
6243  </incorrect>
6244  </testCase>
6245  <testCase>
6246  <section>7.3</section>
6247  <incorrect>
6248  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6249    <attribute name="bar"/>
6250    <zeroOrMore>
6251      <attribute name="bar"/>
6252    </zeroOrMore>
6253  </element>
6254  </incorrect>
6255  </testCase>
6256  <testCase>
6257  <section>7.3</section>
6258  <correct>
6259  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6260    <oneOrMore>
6261      <attribute name="bar"/>
6262    </oneOrMore>
6263  </element>
6264  </correct>
6265  <valid>
6266  <foo bar="xx"/>
6267  </valid>
6268  </testCase>
6269  <testCase>
6270  <section>7.3</section>
6271  <incorrect>
6272  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6273    <interleave>
6274      <attribute name="bar"/>
6275      <attribute name="bar"/>
6276    </interleave>
6277  </element>
6278  </incorrect>
6279  </testCase>
6280  <testCase>
6281  <section>7.3</section>
6282  <incorrect>
6283  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6284    <optional>
6285      <attribute name="bar"/>
6286    </optional>
6287    <optional>
6288      <attribute name="bar"/>
6289    </optional>
6290  </element>
6291  </incorrect>
6292  </testCase>
6293  <testCase>
6294  <section>7.3</section>
6295  <incorrect>
6296  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6297    <attribute name="bar"/>
6298    <oneOrMore>
6299      <attribute>
6300        <anyName/>
6301      </attribute>
6302    </oneOrMore>
6303  </element>
6304  </incorrect>
6305  </testCase>
6306  <testCase>
6307  <section>7.3</section>
6308  <incorrect>
6309  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6310    <attribute name="bar"/>
6311    <oneOrMore>
6312      <attribute>
6313        <anyName>
6314  	<except>
6315  	  <name>baz</name>
6316  	</except>
6317        </anyName>
6318      </attribute>
6319    </oneOrMore>
6320  </element>
6321  </incorrect>
6322  </testCase>
6323  <testCase>
6324  <section>7.3</section>
6325  <correct>
6326  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6327    <attribute name="bar"/>
6328    <oneOrMore>
6329      <attribute>
6330        <anyName>
6331  	<except>
6332  	  <name>bar</name>
6333  	</except>
6334        </anyName>
6335      </attribute>
6336    </oneOrMore>
6337  </element>
6338  </correct>
6339  <valid>
6340  <foo bar="val" xyzzy="anotherval"/>
6341  </valid>
6342  <valid>
6343  <foo bar="val" baz=""/>
6344  </valid>
6345  <invalid>
6346  <foo bar="val"/>
6347  </invalid>
6348  <invalid>
6349  <foo/>
6350  </invalid>
6351  <invalid>
6352  <foo xyzzy="val"/>
6353  </invalid>
6354  </testCase>
6355  <testCase>
6356  <section>7.3</section>
6357  <incorrect>
6358  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6359    <attribute name="bar"/>
6360    <oneOrMore>
6361      <attribute>
6362        <nsName ns=""/>
6363      </attribute>
6364    </oneOrMore>
6365  </element>
6366  </incorrect>
6367  </testCase>
6368  <testCase>
6369  <section>7.3</section>
6370  <incorrect>
6371  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6372    <attribute name="bar"/>
6373    <oneOrMore>
6374      <attribute>
6375        <nsName ns="">
6376  	<except>
6377  	  <name>baz</name>
6378  	</except>
6379         </nsName>
6380      </attribute>
6381    </oneOrMore>
6382  </element>
6383  </incorrect>
6384  </testCase>
6385  <testCase>
6386  <section>7.3</section>
6387  <incorrect>
6388  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6389    <oneOrMore>
6390      <attribute>
6391        <anyName/>
6392      </attribute>
6393    </oneOrMore>
6394    <oneOrMore>
6395      <attribute>
6396        <nsName ns=""/>
6397      </attribute>
6398    </oneOrMore>
6399  </element>
6400  </incorrect>
6401  </testCase>
6402  <testCase>
6403  <section>7.3</section>
6404  <incorrect>
6405  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6406    <oneOrMore>
6407      <attribute>
6408        <anyName/>
6409      </attribute>
6410    </oneOrMore>
6411    <oneOrMore>
6412      <attribute>
6413        <anyName/>
6414      </attribute>
6415    </oneOrMore>
6416  </element>
6417  </incorrect>
6418  </testCase>
6419  <testCase>
6420  <section>7.3</section>
6421  <incorrect>
6422  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6423    <oneOrMore>
6424      <attribute>
6425        <nsName ns=""/>
6426      </attribute>
6427    </oneOrMore>
6428    <oneOrMore>
6429      <attribute>
6430        <nsName ns="">
6431  	<except>
6432  	  <name>bar</name>
6433  	</except>
6434        </nsName>
6435      </attribute>
6436    </oneOrMore>
6437  </element>
6438  </incorrect>
6439  </testCase>
6440  <testCase>
6441  <section>7.3</section>
6442  <incorrect>
6443  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6444    <oneOrMore>
6445      <attribute>
6446        <anyName>
6447  	<except>
6448  	  <nsName>
6449  	    <except>
6450  	      <name>foo</name>
6451  	    </except>
6452  	  </nsName>
6453  	</except>
6454        </anyName>
6455      </attribute>
6456    </oneOrMore>
6457    <attribute name="foo"/>
6458  </element>
6459  </incorrect>
6460  </testCase>
6461  <testCase>
6462  <section>7.3</section>
6463  <incorrect>
6464  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6465    <oneOrMore>
6466      <attribute>
6467        <anyName>
6468  	<except>
6469  	  <nsName>
6470  	    <except>
6471  	      <name>foo</name>
6472  	    </except>
6473  	  </nsName>
6474  	</except>
6475        </anyName>
6476      </attribute>
6477    </oneOrMore>
6478    <oneOrMore>
6479      <attribute>
6480        <nsName/>
6481      </attribute>
6482    </oneOrMore>
6483  </element>
6484  </incorrect>
6485  </testCase>
6486  <testCase>
6487  <section>7.3</section>
6488  <correct>
6489  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6490    <oneOrMore>
6491      <attribute>
6492        <anyName>
6493  	<except>
6494  	  <nsName>
6495  	    <except>
6496  	      <name>bar</name>
6497  	    </except>
6498  	  </nsName>
6499  	</except>
6500        </anyName>
6501      </attribute>
6502    </oneOrMore>
6503    <attribute name="baz"/>
6504  </element>
6505  </correct>
6506  <valid>
6507  <foo bar="xx" baz="yy"/>
6508  </valid>
6509  <invalid>
6510  <foo x="xx" baz="yy"/>
6511  </invalid>
6512  <valid>
6513  <foo xmlns:eg="http://www.example.com/" eg:x="xx" baz="yy"/>
6514  </valid>
6515  </testCase>
6516  <testCase>
6517  <section>7.3</section>
6518  <correct>
6519  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6520    <oneOrMore>
6521      <attribute>
6522        <nsName ns="http://www.example.com/1"/>
6523      </attribute>
6524    </oneOrMore>
6525    <oneOrMore>
6526      <attribute>
6527        <nsName ns="http://www.example.com/2"/>
6528      </attribute>
6529    </oneOrMore>
6530  </element>
6531  </correct>
6532  <valid>
6533  <foo xmlns:eg1="http://www.example.com/1"
6534       xmlns:eg2="http://www.example.com/2"
6535       eg1:x="xx" eg2:y="yy"/>
6536  </valid>
6537  </testCase>
6538  <testCase>
6539  <section>7.3</section>
6540  <correct>
6541  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6542    <choice>
6543      <attribute name="bar"/>
6544      <attribute name="bar"/>
6545    </choice>
6546  </element>
6547  </correct>
6548  <valid>
6549  <foo bar="xx"/>
6550  </valid>
6551  </testCase>
6552  <testCase>
6553  <section>7.3</section>
6554  <incorrect>
6555  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6556    <attribute name="bar"/>
6557    <choice>
6558      <attribute name="baz"/>
6559      <attribute name="bar"/>
6560    </choice>
6561  </element>
6562  </incorrect>
6563  </testCase>
6564  <testCase>
6565  <section>7.3</section>
6566  <incorrect>
6567  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6568    <attribute><anyName/><text/></attribute>
6569  </element>
6570  </incorrect>
6571  </testCase>
6572  <testCase>
6573  <section>7.3</section>
6574  <incorrect>
6575  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6576    <attribute><nsName ns =""/><text/></attribute>
6577  </element>
6578  </incorrect>
6579  </testCase>
6580  <testCase>
6581  <section>7.3</section>
6582  <incorrect>
6583  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6584    <attribute><choice><nsName ns =""/><name>foo</name></choice><text/></attribute>
6585  </element>
6586  </incorrect>
6587  </testCase>
6588  </testSuite>
6589  <testSuite>
6590  <section>7.4</section>
6591  <testCase>
6592  <section>7.4</section>
6593  <incorrect>
6594  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6595    <interleave>
6596      <element name="bar">
6597        <empty/>
6598      </element>
6599      <element name="bar">
6600        <empty/>
6601      </element>
6602    </interleave>
6603  </element>
6604  </incorrect>
6605  </testCase>
6606  <testCase>
6607  <section>7.4</section>
6608  <incorrect>
6609  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6610    <interleave>
6611      <element name="bar">
6612        <empty/>
6613      </element>
6614      <interleave>
6615        <element name="baz">
6616  	<empty/>
6617        </element>
6618        <element name="bar">
6619  	<empty/>
6620        </element>
6621      </interleave>
6622    </interleave>
6623  </element>
6624  </incorrect>
6625  </testCase>
6626  <testCase>
6627  <section>7.4</section>
6628  <incorrect>
6629  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6630    <interleave>
6631      <element name="bar">
6632        <empty/>
6633      </element>
6634      <group>
6635        <element name="baz">
6636  	<empty/>
6637        </element>
6638        <element name="bar">
6639  	<empty/>
6640        </element>
6641      </group>
6642    </interleave>
6643  </element>
6644  </incorrect>
6645  </testCase>
6646  <testCase>
6647  <section>7.4</section>
6648  <incorrect>
6649  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6650    <interleave>
6651      <element name="bar">
6652        <empty/>
6653      </element>
6654      <group>
6655        <element name="baz">
6656  	<empty/>
6657        </element>
6658        <interleave>
6659          <element name="baz">
6660            <empty/>
6661          </element>
6662  	<element name="bar">
6663  	  <empty/>
6664  	</element>
6665        </interleave>
6666      </group>
6667    </interleave>
6668  </element>
6669  </incorrect>
6670  </testCase>
6671  <testCase>
6672  <section>7.4</section>
6673  <incorrect>
6674  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6675    <interleave>
6676      <element name="bar">
6677        <empty/>
6678      </element>
6679      <optional>
6680        <element name="bar">
6681  	<empty/>
6682        </element>
6683      </optional>
6684    </interleave>
6685  </element>
6686  </incorrect>
6687  </testCase>
6688  <testCase>
6689  <section>7.4</section>
6690  <incorrect>
6691  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6692    <interleave>
6693      <element name="bar">
6694        <empty/>
6695      </element>
6696      <element>
6697        <nsName ns=""/>
6698        <empty/>
6699      </element>
6700    </interleave>
6701  </element>
6702  </incorrect>
6703  </testCase>
6704  <testCase>
6705  <section>7.4</section>
6706  <incorrect>
6707  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6708    <interleave>
6709      <element name="bar">
6710        <empty/>
6711      </element>
6712      <element>
6713        <anyName/>
6714        <empty/>
6715      </element>
6716    </interleave>
6717  </element>
6718  </incorrect>
6719  </testCase>
6720  <testCase>
6721  <section>7.4</section>
6722  <incorrect>
6723  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6724    <interleave>
6725      <element name="bar">
6726        <empty/>
6727      </element>
6728      <element name="bar">
6729        <notAllowed/>
6730      </element>
6731    </interleave>
6732  </element>
6733  </incorrect>
6734  </testCase>
6735  <testCase>
6736  <section>7.4</section>
6737  <correct>
6738  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6739    <interleave>
6740      <element name="bar">
6741        <empty/>
6742      </element>
6743      <element>
6744        <anyName>
6745          <except>
6746            <name>bar</name>
6747          </except>
6748        </anyName>
6749        <empty/>
6750      </element>
6751    </interleave>
6752  </element>
6753  </correct>
6754  <valid>
6755  <foo><bar/><baz/></foo>
6756  </valid>
6757  </testCase>
6758  <testCase>
6759  <section>7.4</section>
6760  <correct>
6761  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6762    <interleave>
6763      <choice>
6764        <element name="bar">
6765  	<empty/>
6766        </element>
6767        <element name="bar">
6768  	<text/>
6769        </element>
6770      </choice>
6771      <element name="baz">
6772        <empty/>
6773      </element>
6774    </interleave>
6775  </element>
6776  </correct>
6777  <valid>
6778  <foo><bar/><baz/></foo>
6779  </valid>
6780  </testCase>
6781  <testCase>
6782  <section>7.4</section>
6783  <incorrect>
6784  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6785    <interleave>
6786      <text/>
6787      <text/>
6788    </interleave>
6789  </element>
6790  </incorrect>
6791  </testCase>
6792  <testCase>
6793  <section>7.4</section>
6794  <incorrect>
6795  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6796    <mixed>
6797      <mixed>
6798        <element name="bar">
6799          <empty/>
6800        </element>
6801      </mixed>
6802      <element name="baz">
6803        <empty/>
6804      </element>
6805    </mixed>
6806  </element>
6807  </incorrect>
6808  </testCase>
6809  </testSuite>
6810  </testSuite>
6811  <testSuite>
6812  <documentation>Regressions</documentation>
6813  <testCase>
6814  <correct>
6815  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
6816  <start>
6817    <element name="foo">
6818      <choice>
6819        <group>
6820          <attribute name="bar"><empty/></attribute>
6821          <element name="baz1"><empty/></element>
6822        </group>
6823        <group>
6824          <attribute name="bar"><text/></attribute>
6825          <element name="baz2"><empty/></element>
6826        </group>
6827      </choice>
6828    </element>
6829  </start>
6830  </grammar>
6831  </correct>
6832  <valid>
6833  <foo bar=" "><baz1/></foo>
6834  </valid>
6835  </testCase>
6836  <testCase>
6837  <correct>
6838  <notAllowed xmlns="http://relaxng.org/ns/structure/1.0"/>
6839  </correct>
6840  <invalid>
6841  <foo/>
6842  </invalid>
6843  </testCase>
6844  </testSuite>
6845  </testSuite>