/ libxml2 / test / relaxng / testsuite.xml
testsuite.xml
   1  <testSuite>
   2  <author>Daniel Veillard</author>
   3  <email>daniel@veillard.com</email>
   4  <documentation>For libxml2 implementation of Relax NG spec.</documentation>
   5  <testSuite>
   6  <documentation>Test of node matches</documentation>
   7  <testCase>
   8  <correct>
   9  <element xmlns="http://relaxng.org/ns/structure/1.0">
  10    <anyName>
  11      <except>
  12        <nsName ns="http://example.org"/>
  13      </except>
  14    </anyName>
  15    <empty/>
  16  </element>
  17  </correct>
  18  <valid>
  19  <foo/>
  20  </valid>
  21  <valid>
  22  <foo xmlns="http://example.org/"/>
  23  </valid>
  24  <valid>
  25  <foo xmlns="http://EXAMPLE.ORG"/>
  26  </valid>
  27  <invalid>
  28  <foo xmlns="http://example.org"/>
  29  </invalid>
  30  <invalid>
  31  <a:foo xmlns:a="http://example.org"/>
  32  </invalid>
  33  </testCase>
  34  <testCase>
  35  <correct>
  36  <element name="top" xmlns="http://relaxng.org/ns/structure/1.0">
  37    <interleave>
  38      <element name="foo" ns="http://example.org">
  39        <empty/>
  40      </element>
  41      <element>
  42        <anyName>
  43  	<except>
  44  	  <nsName ns="http://example.org"/>
  45  	</except>
  46        </anyName>
  47        <empty/>
  48      </element>
  49    </interleave>
  50  </element>
  51  </correct>
  52  <invalid>
  53  <top>
  54  <foo/>
  55  <bar/>
  56  </top>
  57  </invalid>
  58  <invalid>
  59  <top>
  60  <foo xmlns="http://example.org"/>
  61  <bar xmlns="http://example.org"/>
  62  </top>
  63  </invalid>
  64  <valid>
  65  <top>
  66  <foo xmlns="http://example.org"/>
  67  <bar/>
  68  </top>
  69  </valid>
  70  <valid>
  71  <top>
  72  <bar/>
  73  <foo xmlns="http://example.org"/>
  74  </top>
  75  </valid>
  76  <valid>
  77  <top>
  78  <foo xmlns="http://example.org"/>
  79  <bar xmlns="http://example.org/"/>
  80  </top>
  81  </valid>
  82  <valid>
  83  <top>
  84  <bar xmlns="http://example.org/"/>
  85  <foo xmlns="http://example.org"/>
  86  </top>
  87  </valid>
  88  </testCase>
  89  </testSuite>
  90  <testSuite>
  91  <documentation>Test of indeterminism</documentation>
  92  <testCase>
  93  <correct>
  94  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
  95    <zeroOrMore>
  96      <element name="bar">
  97        <empty/>
  98      </element>
  99    </zeroOrMore>
 100    <element name="baz">
 101      <empty/>
 102    </element>
 103  </element>
 104  </correct>
 105  <invalid>
 106  <foo/>
 107  </invalid>
 108  <valid>
 109  <foo>
 110    <baz/>
 111  </foo>
 112  </valid>
 113  <valid>
 114  <foo>
 115    <bar/>
 116    <baz/>
 117  </foo>
 118  </valid>
 119  <valid>
 120  <foo>
 121    <bar/>
 122    <bar/>
 123    <bar/>
 124    <baz/>
 125  </foo>
 126  </valid>
 127  </testCase>
 128  <testCase>
 129  <correct>
 130  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 131    <zeroOrMore>
 132      <element name="bar">
 133        <empty/>
 134      </element>
 135    </zeroOrMore>
 136    <element name="bar">
 137      <empty/>
 138    </element>
 139  </element>
 140  </correct>
 141  <invalid>
 142  <foo/>
 143  </invalid>
 144  <valid>
 145  <foo>
 146    <bar/>
 147  </foo>
 148  </valid>
 149  <valid>
 150  <foo>
 151    <bar/>
 152    <bar/>
 153  </foo>
 154  </valid>
 155  <valid>
 156  <foo>
 157    <bar/>
 158    <bar/>
 159    <bar/>
 160    <bar/>
 161  </foo>
 162  </valid>
 163  </testCase>
 164  <testCase>
 165  <correct>
 166  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 167    <group>
 168      <zeroOrMore>
 169        <element name="bar">
 170          <empty/>
 171        </element>
 172      </zeroOrMore>
 173      <element name="baz">
 174        <empty/>
 175      </element>
 176    </group>
 177  </element>
 178  </correct>
 179  <invalid>
 180  <foo/>
 181  </invalid>
 182  <valid>
 183  <foo>
 184    <baz/>
 185  </foo>
 186  </valid>
 187  <valid>
 188  <foo>
 189    <bar/>
 190    <baz/>
 191  </foo>
 192  </valid>
 193  <valid>
 194  <foo>
 195    <bar/>
 196    <bar/>
 197    <bar/>
 198    <baz/>
 199  </foo>
 200  </valid>
 201  </testCase>
 202  <testCase>
 203  <correct>
 204  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 205    <group>
 206      <zeroOrMore>
 207        <element name="bar">
 208          <empty/>
 209        </element>
 210      </zeroOrMore>
 211      <element name="bar">
 212        <empty/>
 213      </element>
 214    </group>
 215  </element>
 216  </correct>
 217  <invalid>
 218  <foo/>
 219  </invalid>
 220  <valid>
 221  <foo>
 222    <bar/>
 223  </foo>
 224  </valid>
 225  <valid>
 226  <foo>
 227    <bar/>
 228    <bar/>
 229  </foo>
 230  </valid>
 231  <valid>
 232  <foo>
 233    <bar/>
 234    <bar/>
 235    <bar/>
 236    <bar/>
 237  </foo>
 238  </valid>
 239  </testCase>
 240  <testCase>
 241  <correct>
 242  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 243    <choice>
 244      <zeroOrMore>
 245        <element name="bar">
 246          <empty/>
 247        </element>
 248      </zeroOrMore>
 249      <element name="baz">
 250        <empty/>
 251      </element>
 252    </choice>
 253  </element>
 254  </correct>
 255  <valid>
 256  <foo/>
 257  </valid>
 258  <valid>
 259  <foo>
 260    <baz/>
 261  </foo>
 262  </valid>
 263  <valid>
 264  <foo>
 265    <bar/>
 266    <bar/>
 267    <bar/>
 268  </foo>
 269  </valid>
 270  <invalid>
 271  <foo>
 272    <bar/>
 273    <baz/>
 274  </foo>
 275  </invalid>
 276  <invalid>
 277  <foo>
 278    <bar/>
 279    <bar/>
 280    <bar/>
 281    <bar/>
 282    <baz/>
 283  </foo>
 284  </invalid>
 285  </testCase>
 286  <testCase>
 287  <correct>
 288  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 289    <choice>
 290      <zeroOrMore>
 291        <element name="bar">
 292          <empty/>
 293        </element>
 294      </zeroOrMore>
 295      <element name="baz">
 296        <empty/>
 297      </element>
 298    </choice>
 299    <element name="baz">
 300      <empty/>
 301    </element>
 302  </element>
 303  </correct>
 304  <invalid>
 305  <foo/>
 306  </invalid>
 307  <valid>
 308  <foo>
 309    <baz/>
 310  </foo>
 311  </valid>
 312  <valid>
 313  <foo>
 314    <baz/>
 315    <baz/>
 316  </foo>
 317  </valid>
 318  <valid>
 319  <foo>
 320    <bar/>
 321    <bar/>
 322    <bar/>
 323    <baz/>
 324  </foo>
 325  </valid>
 326  <invalid>
 327  <foo>
 328    <bar/>
 329    <baz/>
 330    <baz/>
 331  </foo>
 332  </invalid>
 333  <invalid>
 334  <foo>
 335    <baz/>
 336    <bar/>
 337    <baz/>
 338  </foo>
 339  </invalid>
 340  </testCase>
 341  <testCase>
 342  <correct>
 343  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 344    <choice>
 345      <zeroOrMore>
 346        <element name="bar">
 347          <empty/>
 348        </element>
 349      </zeroOrMore>
 350      <element name="bar">
 351        <empty/>
 352      </element>
 353    </choice>
 354  </element>
 355  </correct>
 356  <valid>
 357  <foo/>
 358  </valid>
 359  <valid>
 360  <foo>
 361    <bar/>
 362  </foo>
 363  </valid>
 364  <valid>
 365  <foo>
 366    <bar/>
 367    <bar/>
 368  </foo>
 369  </valid>
 370  <valid>
 371  <foo>
 372    <bar/>
 373    <bar/>
 374    <bar/>
 375    <bar/>
 376  </foo>
 377  </valid>
 378  </testCase>
 379  <testCase>
 380  <correct>
 381  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 382    <choice>
 383      <zeroOrMore>
 384        <choice>
 385          <element name="bar">
 386            <empty/>
 387          </element>
 388          <element name="baz">
 389            <empty/>
 390          </element>
 391        </choice>
 392      </zeroOrMore>
 393      <element name="bar">
 394        <empty/>
 395      </element>
 396    </choice>
 397  </element>
 398  </correct>
 399  <valid>
 400  <foo/>
 401  </valid>
 402  <valid>
 403  <foo>
 404    <bar/>
 405  </foo>
 406  </valid>
 407  <valid>
 408  <foo>
 409    <baz/>
 410    <bar/>
 411  </foo>
 412  </valid>
 413  <valid>
 414  <foo>
 415    <bar/>
 416    <bar/>
 417    <bar/>
 418    <bar/>
 419  </foo>
 420  </valid>
 421  <valid>
 422  <foo>
 423    <baz/>
 424    <baz/>
 425    <baz/>
 426    <baz/>
 427  </foo>
 428  </valid>
 429  <valid>
 430  <foo>
 431    <baz/>
 432    <bar/>
 433    <baz/>
 434    <bar/>
 435  </foo>
 436  </valid>
 437  </testCase>
 438  <testCase>
 439  <correct>
 440  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 441    <optional>
 442      <element name="bar">
 443        <empty/>
 444      </element>
 445    </optional>
 446    <element name="baz">
 447      <empty/>
 448    </element>
 449  </element>
 450  </correct>
 451  <invalid>
 452  <foo/>
 453  </invalid>
 454  <valid>
 455  <foo>
 456    <baz/>
 457  </foo>
 458  </valid>
 459  <valid>
 460  <foo>
 461    <bar/>
 462    <baz/>
 463  </foo>
 464  </valid>
 465  <invalid>
 466  <foo>
 467    <bar/>
 468    <bar/>
 469    <baz/>
 470  </foo>
 471  </invalid>
 472  </testCase>
 473  <testCase>
 474  <correct>
 475  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 476    <optional>
 477      <element name="bar">
 478        <empty/>
 479      </element>
 480    </optional>
 481    <element name="bar">
 482      <empty/>
 483    </element>
 484  </element>
 485  </correct>
 486  <invalid>
 487  <foo/>
 488  </invalid>
 489  <valid>
 490  <foo>
 491    <bar/>
 492  </foo>
 493  </valid>
 494  <valid>
 495  <foo>
 496    <bar/>
 497    <bar/>
 498  </foo>
 499  </valid>
 500  <invalid>
 501  <foo>
 502    <bar/>
 503    <bar/>
 504    <bar/>
 505  </foo>
 506  </invalid>
 507  </testCase>
 508  <testCase>
 509  <correct>
 510  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 511    <optional>
 512      <oneOrMore>
 513        <element name="bar">
 514          <empty/>
 515        </element>
 516      </oneOrMore>
 517    </optional>
 518    <element name="baz">
 519      <empty/>
 520    </element>
 521  </element>
 522  </correct>
 523  <invalid>
 524  <foo/>
 525  </invalid>
 526  <valid>
 527  <foo>
 528    <baz/>
 529  </foo>
 530  </valid>
 531  <valid>
 532  <foo>
 533    <bar/>
 534    <baz/>
 535  </foo>
 536  </valid>
 537  <valid>
 538  <foo>
 539    <bar/>
 540    <bar/>
 541    <baz/>
 542  </foo>
 543  </valid>
 544  <invalid>
 545  <foo>
 546    <bar/>
 547    <bar/>
 548  </foo>
 549  </invalid>
 550  </testCase>
 551  <testCase>
 552  <correct>
 553  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 554    <optional>
 555      <oneOrMore>
 556        <element name="bar">
 557          <empty/>
 558        </element>
 559      </oneOrMore>
 560    </optional>
 561    <element name="bar">
 562      <empty/>
 563    </element>
 564  </element>
 565  </correct>
 566  <invalid>
 567  <foo/>
 568  </invalid>
 569  <valid>
 570  <foo>
 571    <bar/>
 572  </foo>
 573  </valid>
 574  <valid>
 575  <foo>
 576    <bar/>
 577    <bar/>
 578  </foo>
 579  </valid>
 580  <valid>
 581  <foo>
 582    <bar/>
 583    <bar/>
 584    <bar/>
 585  </foo>
 586  </valid>
 587  </testCase>
 588  <testCase>
 589  <correct>
 590  <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
 591    <group>
 592      <zeroOrMore>
 593        <choice>
 594          <element name="bar">
 595            <empty/>
 596          </element>
 597          <element name="baz">
 598            <empty/>
 599          </element>
 600        </choice>
 601      </zeroOrMore>
 602      <element name="bar">
 603        <empty/>
 604      </element>
 605    </group>
 606  </element>
 607  </correct>
 608  <invalid>
 609  <foo/>
 610  </invalid>
 611  <valid>
 612  <foo>
 613    <bar/>
 614  </foo>
 615  </valid>
 616  <valid>
 617  <foo>
 618    <baz/>
 619    <bar/>
 620  </foo>
 621  </valid>
 622  <valid>
 623  <foo>
 624    <bar/>
 625    <bar/>
 626    <bar/>
 627    <bar/>
 628  </foo>
 629  </valid>
 630  <valid>
 631  <foo>
 632    <baz/>
 633    <baz/>
 634    <baz/>
 635    <bar/>
 636  </foo>
 637  </valid>
 638  <valid>
 639  <foo>
 640    <baz/>
 641    <bar/>
 642    <baz/>
 643    <bar/>
 644  </foo>
 645  </valid>
 646  <invalid>
 647  <foo>
 648    <bar/>
 649    <baz/>
 650    <bar/>
 651    <baz/>
 652  </foo>
 653  </invalid>
 654  </testCase>
 655  <testCase>
 656  <correct>
 657  <element name="list" xmlns="http://relaxng.org/ns/structure/1.0">
 658    <oneOrMore>
 659      <element name="label">
 660        <empty/>
 661      </element>
 662      <optional>
 663        <element name="opt">
 664          <empty/>
 665        </element>
 666      </optional>
 667      <element name="item">
 668        <empty/>
 669      </element>
 670    </oneOrMore>
 671  </element>
 672  </correct>
 673  <invalid>
 674  <list>
 675  </list>
 676  </invalid>
 677  <valid>
 678  <list>
 679    <label/>
 680    <item/>
 681  </list>
 682  </valid>
 683  <valid>
 684  <list>
 685    <label/>
 686    <item/>
 687    <label/>
 688    <item/>
 689  </list>
 690  </valid>
 691  <valid>
 692  <list>
 693    <label/>
 694    <opt/>
 695    <item/>
 696    <label/>
 697    <opt/>
 698    <item/>
 699  </list>
 700  </valid>
 701  <invalid>
 702  <list>
 703    <label/>
 704    <item/>
 705    <label/>
 706    <opt/>
 707    <opt/>
 708    <item/>
 709  </list>
 710  </invalid>
 711  </testCase>
 712  <testCase>
 713  <correct>
 714  <element name="list" xmlns="http://relaxng.org/ns/structure/1.0">
 715    <oneOrMore>
 716      <element name="label">
 717        <empty/>
 718      </element>
 719      <zeroOrMore>
 720        <element name="opt">
 721          <empty/>
 722        </element>
 723      </zeroOrMore>
 724      <element name="item">
 725        <empty/>
 726      </element>
 727    </oneOrMore>
 728  </element>
 729  </correct>
 730  <invalid>
 731  <list>
 732  </list>
 733  </invalid>
 734  <valid>
 735  <list>
 736    <label/>
 737    <item/>
 738  </list>
 739  </valid>
 740  <valid>
 741  <list>
 742    <label/>
 743    <item/>
 744    <label/>
 745    <item/>
 746  </list>
 747  </valid>
 748  <valid>
 749  <list>
 750    <label/>
 751    <opt/>
 752    <item/>
 753    <label/>
 754    <opt/>
 755    <item/>
 756  </list>
 757  </valid>
 758  <valid>
 759  <list>
 760    <label/>
 761    <item/>
 762    <label/>
 763    <opt/>
 764    <opt/>
 765    <item/>
 766  </list>
 767  </valid>
 768  </testCase>
 769  <testCase>
 770  <correct>
 771  <element name="list" xmlns="http://relaxng.org/ns/structure/1.0">
 772    <oneOrMore>
 773      <element name="label">
 774        <empty/>
 775      </element>
 776      <zeroOrMore>
 777        <element name="opt">
 778          <empty/>
 779        </element>
 780        <element name="opt2">
 781          <empty/>
 782        </element>
 783      </zeroOrMore>
 784      <element name="item">
 785        <empty/>
 786      </element>
 787    </oneOrMore>
 788  </element>
 789  </correct>
 790  <invalid>
 791  <list>
 792  </list>
 793  </invalid>
 794  <valid>
 795  <list>
 796    <label/>
 797    <item/>
 798  </list>
 799  </valid>
 800  <valid>
 801  <list>
 802    <label/>
 803    <item/>
 804    <label/>
 805    <item/>
 806  </list>
 807  </valid>
 808  <valid>
 809  <list>
 810    <label/>
 811    <opt/>
 812    <opt2/>
 813    <item/>
 814    <label/>
 815    <opt/>
 816    <opt2/>
 817    <item/>
 818  </list>
 819  </valid>
 820  <valid>
 821  <list>
 822    <label/>
 823    <item/>
 824    <label/>
 825    <opt/>
 826    <opt2/>
 827    <opt/>
 828    <opt2/>
 829    <item/>
 830  </list>
 831  </valid>
 832  <invalid>
 833  <list>
 834    <label/>
 835    <opt/>
 836    <item/>
 837    <label/>
 838    <item/>
 839  </list>
 840  </invalid>
 841  <invalid>
 842  <list>
 843    <label/>
 844    <item/>
 845    <label/>
 846    <opt2/>
 847    <opt/>
 848    <item/>
 849  </list>
 850  </invalid>
 851  <invalid>
 852  <list>
 853    <label/>
 854    <item/>
 855    <label/>
 856    <opt/>
 857    <opt2/>
 858    <opt/>
 859    <item/>
 860  </list>
 861  </invalid>
 862  </testCase>
 863  </testSuite>
 864  <testSuite>
 865  <documentation>Test of grammars merging</documentation>
 866  <testCase>
 867  <resource name="dbk.rng">
 868  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
 869    <start>
 870      <ref name="p"/>
 871    </start>
 872    <define name="p.ext">
 873      <notAllowed/>
 874    </define>
 875    <define name="p">
 876      <element name="p">
 877        <choice>
 878          <ref name="p.ext"/>
 879  	<empty/>
 880          <element name="a">
 881            <text/>
 882          </element>
 883        </choice>
 884      </element>
 885    </define>
 886  </grammar>
 887  </resource>
 888  <correct>
 889  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
 890    <start>
 891      <grammar>
 892        <include href="dbk.rng"/>
 893        <define name="p.ext" combine="choice">
 894          <element name="b">
 895            <text/>
 896          </element>
 897        </define>
 898      </grammar>
 899    </start>
 900  </grammar>
 901  </correct>
 902  <valid>
 903  <p/>
 904  </valid>
 905  <valid>
 906  <p>
 907    <a/>
 908  </p>
 909  </valid>
 910  <valid>
 911  <p>
 912    <b/>
 913  </p>
 914  </valid>
 915  <invalid>
 916  <b/>
 917  </invalid>
 918  <invalid>
 919  <p>
 920    <b/>
 921    <b/>
 922  </p>
 923  </invalid>
 924  </testCase>
 925  <testCase>
 926  <resource name="dbk.rng">
 927  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
 928    <start>
 929      <ref name="p"/>
 930    </start>
 931    <define name="p.ext">
 932      <notAllowed/>
 933    </define>
 934    <define name="p">
 935      <element name="p">
 936        <choice>
 937          <ref name="p.ext"/>
 938  	<empty/>
 939          <element name="a">
 940            <text/>
 941          </element>
 942        </choice>
 943      </element>
 944    </define>
 945    <define name="c">
 946      <element name="c">
 947        <empty/>
 948      </element>
 949    </define>
 950  </grammar>
 951  </resource>
 952  <correct>
 953  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
 954    <start>
 955      <grammar>
 956        <include href="dbk.rng"/>
 957        <define name="p.ext" combine="choice">
 958          <choice>
 959  	  <ref name="c"/>
 960  	  <parentRef name="d"/>
 961            <element name="b">
 962              <text/>
 963            </element>
 964          </choice>
 965        </define>
 966      </grammar>
 967    </start>
 968    <define name="d">
 969      <element name="d">
 970        <empty/>
 971      </element>
 972    </define>
 973  </grammar>
 974  </correct>
 975  <valid>
 976  <p/>
 977  </valid>
 978  <valid>
 979  <p>
 980    <a/>
 981  </p>
 982  </valid>
 983  <valid>
 984  <p>
 985    <b/>
 986  </p>
 987  </valid>
 988  <valid>
 989  <p>
 990    <c/>
 991  </p>
 992  </valid>
 993  <valid>
 994  <p>
 995    <d/>
 996  </p>
 997  </valid>
 998  <invalid>
 999  <b/>
1000  </invalid>
1001  <invalid>
1002  <c/>
1003  </invalid>
1004  <invalid>
1005  <d/>
1006  </invalid>
1007  <invalid>
1008  <p>
1009    <b/>
1010    <c/>
1011  </p>
1012  </invalid>
1013  <invalid>
1014  <p>
1015    <d/>
1016    <c/>
1017  </p>
1018  </invalid>
1019  </testCase>
1020  <testCase>
1021  <resource name="dbk.rng">
1022  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1023    <start>
1024      <ref name="p"/>
1025    </start>
1026    <define name="p.ext">
1027      <notAllowed/>
1028    </define>
1029    <define name="p">
1030      <element name="p">
1031        <choice>
1032          <ref name="p.ext"/>
1033  	<empty/>
1034          <element name="a">
1035            <text/>
1036          </element>
1037        </choice>
1038      </element>
1039    </define>
1040    <define name="c">
1041      <element name="c">
1042        <empty/>
1043      </element>
1044    </define>
1045  </grammar>
1046  </resource>
1047  <resource name="proof.rng">
1048  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1049    <start>
1050      <ref name="e"/>
1051    </start>
1052    <define name="d">
1053      <element name="d">
1054        <empty/>
1055      </element>
1056    </define>
1057    <define name="e">
1058      <element name="e">
1059        <empty/>
1060      </element>
1061    </define>
1062    <define name="f">
1063      <element name="f">
1064        <empty/>
1065      </element>
1066    </define>
1067  </grammar>
1068  </resource>
1069  <correct>
1070  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1071    <start>
1072      <grammar>
1073        <include href="dbk.rng"/>
1074        <define name="p.ext" combine="choice">
1075          <choice>
1076  	  <ref name="c"/>
1077  	  <grammar>
1078  	    <include href="proof.rng"/>
1079  	    <start combine="choice">
1080  	      <ref name="d"/>
1081  	    </start>
1082  	  </grammar>
1083            <element name="b">
1084              <text/>
1085            </element>
1086          </choice>
1087        </define>
1088      </grammar>
1089    </start>
1090    <define name="g">
1091      <element name="g">
1092        <empty/>
1093      </element>
1094    </define>
1095  </grammar>
1096  </correct>
1097  <valid>
1098  <p/>
1099  </valid>
1100  <valid>
1101  <p>
1102    <a/>
1103  </p>
1104  </valid>
1105  <valid>
1106  <p>
1107    <b/>
1108  </p>
1109  </valid>
1110  <valid>
1111  <p>
1112    <c/>
1113  </p>
1114  </valid>
1115  <valid>
1116  <p>
1117    <d/>
1118  </p>
1119  </valid>
1120  <valid>
1121  <p>
1122    <e/>
1123  </p>
1124  </valid>
1125  <invalid>
1126  <p>
1127    <f/>
1128  </p>
1129  </invalid>
1130  <invalid>
1131  <p>
1132    <g/>
1133  </p>
1134  </invalid>
1135  <invalid>
1136  <b/>
1137  </invalid>
1138  <invalid>
1139  <c/>
1140  </invalid>
1141  <invalid>
1142  <d/>
1143  </invalid>
1144  <invalid>
1145  <e/>
1146  </invalid>
1147  <invalid>
1148  <f/>
1149  </invalid>
1150  <invalid>
1151  <g/>
1152  </invalid>
1153  <invalid>
1154  <p>
1155    <d/>
1156    <c/>
1157  </p>
1158  </invalid>
1159  <invalid>
1160  <p>
1161    <d/>
1162    <e/>
1163  </p>
1164  </invalid>
1165  </testCase>
1166  <testCase>
1167  <resource name="dbk.rng">
1168  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1169    <start>
1170      <ref name="p"/>
1171    </start>
1172    <define name="p.ext">
1173      <notAllowed/>
1174    </define>
1175    <define name="p">
1176      <element name="p">
1177        <choice>
1178          <ref name="p.ext"/>
1179  	<empty/>
1180          <element name="a">
1181            <text/>
1182          </element>
1183        </choice>
1184      </element>
1185    </define>
1186    <define name="c">
1187      <element name="c">
1188        <empty/>
1189      </element>
1190    </define>
1191  </grammar>
1192  </resource>
1193  <resource name="proof.rng">
1194  <grammar xmlns="http://relaxng.org/ns/structure/1.0"
1195           ns="http://example.org/ns/proofsystem">
1196    <start>
1197      <ref name="e"/>
1198    </start>
1199    <define name="d">
1200      <element name="d">
1201        <empty/>
1202      </element>
1203    </define>
1204    <define name="e">
1205      <element name="e">
1206        <empty/>
1207      </element>
1208    </define>
1209    <define name="f">
1210      <element name="f">
1211        <empty/>
1212      </element>
1213    </define>
1214  </grammar>
1215  </resource>
1216  <correct>
1217  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1218    <start>
1219      <grammar>
1220        <include href="dbk.rng"/>
1221        <define name="p.ext" combine="choice">
1222          <choice>
1223  	  <ref name="c"/>
1224  	  <grammar>
1225  	    <include href="proof.rng"/>
1226  	    <start combine="choice">
1227  	      <ref name="d"/>
1228  	    </start>
1229  	  </grammar>
1230            <element name="b">
1231              <text/>
1232            </element>
1233          </choice>
1234        </define>
1235      </grammar>
1236    </start>
1237    <define name="g">
1238      <element name="g">
1239        <empty/>
1240      </element>
1241    </define>
1242  </grammar>
1243  </correct>
1244  <valid>
1245  <p/>
1246  </valid>
1247  <valid>
1248  <p>
1249    <a/>
1250  </p>
1251  </valid>
1252  <valid>
1253  <p>
1254    <b/>
1255  </p>
1256  </valid>
1257  <valid>
1258  <p>
1259    <c/>
1260  </p>
1261  </valid>
1262  <valid>
1263  <p xmlns:p="http://example.org/ns/proofsystem">
1264    <p:d/>
1265  </p>
1266  </valid>
1267  <invalid>
1268  <p>
1269    <d/>
1270  </p>
1271  </invalid>
1272  <valid>
1273  <p xmlns:p="http://example.org/ns/proofsystem">
1274    <p:e/>
1275  </p>
1276  </valid>
1277  <invalid>
1278  <p>
1279    <e/>
1280  </p>
1281  </invalid>
1282  <invalid>
1283  <p xmlns:p="http://example.org/ns/proofsystem">
1284    <p:f/>
1285  </p>
1286  </invalid>
1287  <invalid>
1288  <p>
1289    <f/>
1290  </p>
1291  </invalid>
1292  <invalid>
1293  <p>
1294    <g/>
1295  </p>
1296  </invalid>
1297  <invalid>
1298  <b/>
1299  </invalid>
1300  <invalid>
1301  <c/>
1302  </invalid>
1303  <invalid>
1304  <d/>
1305  </invalid>
1306  <invalid>
1307  <e/>
1308  </invalid>
1309  <invalid>
1310  <f/>
1311  </invalid>
1312  <invalid>
1313  <g/>
1314  </invalid>
1315  <invalid>
1316  <p xmlns:p="http://example.org/ns/proofsystem">
1317    <p:d/>
1318    <c/>
1319  </p>
1320  </invalid>
1321  <invalid>
1322  <p xmlns:p="http://example.org/ns/proofsystem">
1323    <p:d/>
1324    <p:e/>
1325  </p>
1326  </invalid>
1327  </testCase>
1328  <testCase>
1329  <resource name="ext.rng">
1330  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1331    <start>
1332      <ref name="p"/>
1333    </start>
1334    <define name="p">
1335      <element name="p">
1336        <empty/>
1337      </element>
1338    </define>
1339  </grammar>
1340  </resource>
1341  <correct>
1342  <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1343    <start>
1344      <element name="top">
1345        <choice>
1346          <ref name="include1"/>
1347          <ref name="include2"/>
1348        </choice>
1349      </element>
1350    </start>
1351    <define name="include1">
1352      <grammar>
1353        <include href="ext.rng">
1354          <start>
1355  	 <element name="a">
1356  	   <choice>
1357  	     <empty/>
1358  	     <ref name="p"/>
1359  	   </choice>
1360  	 </element>
1361  	</start>
1362        </include>
1363      </grammar>
1364    </define>
1365    <define name="include2">
1366      <grammar>
1367        <include href="ext.rng">
1368          <start>
1369  	 <element name="b">
1370  	   <choice>
1371  	     <empty/>
1372  	     <ref name="p"/>
1373  	   </choice>
1374  	 </element>
1375  	</start>
1376        </include>
1377      </grammar>
1378    </define>
1379  </grammar>
1380  </correct>
1381  <invalid>
1382  <top/>
1383  </invalid>
1384  <invalid>
1385  <a/>
1386  </invalid>
1387  <invalid>
1388  <b/>
1389  </invalid>
1390  <invalid>
1391  <p/>
1392  </invalid>
1393  <valid>
1394  <top>
1395    <a/>
1396  </top>
1397  </valid>
1398  <valid>
1399  <top>
1400    <b/>
1401  </top>
1402  </valid>
1403  <valid>
1404  <top>
1405    <a>
1406      <p/>
1407    </a>
1408  </top>
1409  </valid>
1410  <valid>
1411  <top>
1412    <b>
1413      <p/>
1414    </b>
1415  </top>
1416  </valid>
1417  </testCase>
1418  </testSuite>
1419  <testSuite>
1420  <documentation>Test of ID/IDREF</documentation>
1421  <testCase>
1422  <correct>
1423  <element name="top" xmlns="http://relaxng.org/ns/structure/1.0"
1424           datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1425    <zeroOrMore>
1426      <choice>
1427        <element name="ref">
1428          <attribute name="id">
1429  	  <data type="ID"/>
1430  	</attribute>
1431  	<text/>
1432        </element>
1433        <element name="xref">
1434          <attribute name="link">
1435  	  <data type="IDREF"/>
1436  	</attribute>
1437  	<text/>
1438        </element>
1439      </choice>
1440    </zeroOrMore>
1441  </element>
1442  </correct>
1443  <valid>
1444  <top>
1445  </top>
1446  </valid>
1447  <invalid>
1448  <top>
1449    <xref link="id1"/>
1450  </top>
1451  </invalid>
1452  <valid>
1453  <top>
1454    <ref id="id1"/>
1455  </top>
1456  </valid>
1457  <valid>
1458  <top>
1459    <xref link="id1"/>
1460    <ref id="id1"/>
1461  </top>
1462  </valid>
1463  <valid>
1464  <top>
1465    <xref link="  id1 "/>
1466    <ref id="     id1   "/>
1467    <xref link="id1 "/>
1468    <xref link="  id1"/>
1469  </top>
1470  </valid>
1471  <valid>
1472  <top>
1473    <ref id="id1"/>
1474    <xref link="id1"/>
1475  </top>
1476  </valid>
1477  <invalid>
1478  <top>
1479    <ref id="id1"/>
1480    <ref id="id1"/>
1481  </top>
1482  </invalid>
1483  </testCase>
1484  <testCase>
1485  <correct>
1486  <element name="top" xmlns="http://relaxng.org/ns/structure/1.0"
1487           datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1488    <zeroOrMore>
1489      <choice>
1490        <element name="ref">
1491          <attribute name="id">
1492  	  <data type="ID"/>
1493  	</attribute>
1494  	<text/>
1495        </element>
1496        <element name="xref">
1497          <attribute name="link">
1498  	  <data type="IDREFS"/>
1499  	</attribute>
1500  	<text/>
1501        </element>
1502      </choice>
1503    </zeroOrMore>
1504  </element>
1505  </correct>
1506  <valid>
1507  <top>
1508  </top>
1509  </valid>
1510  <invalid>
1511  <top>
1512    <xref link="id1"/>
1513  </top>
1514  </invalid>
1515  <valid>
1516  <top>
1517    <ref id="id1"/>
1518  </top>
1519  </valid>
1520  <valid>
1521  <top>
1522    <xref link="id1"/>
1523    <ref id="id1"/>
1524  </top>
1525  </valid>
1526  <valid>
1527  <top>
1528    <xref link="id1 id1"/>
1529    <ref id="id1"/>
1530  </top>
1531  </valid>
1532  <valid>
1533  <top>
1534    <ref id="id1"/>
1535    <xref link="id1"/>
1536  </top>
1537  </valid>
1538  <valid>
1539  <top>
1540    <ref id="id2"/>
1541    <xref link="id1 id2"/>
1542    <ref id="id1"/>
1543  </top>
1544  </valid>
1545  <valid>
1546  <top>
1547    <ref id="id2"/>
1548    <xref link=" id2    id1   id2 "/>
1549    <ref id="id1"/>
1550  </top>
1551  </valid>
1552  <invalid>
1553  <top>
1554    <ref id="id2"/>
1555    <xref link="id1 id2"/>
1556  </top>
1557  </invalid>
1558  <invalid>
1559  <top>
1560    <xref link="id1 id2"/>
1561    <ref id="id1"/>
1562  </top>
1563  </invalid>
1564  <invalid>
1565  <top>
1566    <ref id="id1"/>
1567    <ref id="id1"/>
1568  </top>
1569  </invalid>
1570  </testCase>
1571  </testSuite>
1572  <testSuite>
1573  <documentation>Test of ENTITY/ENTITIES</documentation>
1574  <testCase>
1575  <correct>
1576  <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1577    <data type="ENTITY"/>
1578  </element>
1579  </correct>
1580  <invalid>
1581  <doc></doc>
1582  </invalid>
1583  <invalid>
1584  <doc>foo</doc>
1585  </invalid>
1586  <valid dtd="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt;&#10;]&gt;">
1587  <doc>foo</doc>
1588  </valid>
1589  <valid dtd="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt;&#10;]&gt;">
1590  <doc>  foo </doc>
1591  </valid>
1592  <invalid dtd="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt;&#10;]&gt;">
1593  <doc>foo bar</doc>
1594  </invalid>
1595  </testCase>
1596  <testCase>
1597  <correct>
1598  <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
1599    <data type="ENTITIES"/>
1600  </element>
1601  </correct>
1602  <invalid>
1603  <doc></doc>
1604  </invalid>
1605  <invalid>
1606  <doc>foo</doc>
1607  </invalid>
1608  <valid dtd="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt; &#10;&lt;!ENTITY bar SYSTEM 'whatever' NDATA jpeg&gt; &#10;]&gt;">
1609  <doc> foo bar </doc>
1610  </valid>
1611  <valid dtd="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt; &#10;&lt;!ENTITY bar SYSTEM 'whatever' NDATA jpeg&gt; &#10;]&gt;">
1612  <doc> foo bar foo</doc>
1613  </valid>
1614  <invalid dtd="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt;]&gt;">
1615  <doc>foo bar</doc>
1616  </invalid>
1617  </testCase>
1618  </testSuite>
1619  <testSuite>
1620  <documentation>Test of Mixed</documentation>
1621  <testCase>
1622  <correct>
1623  <element name="mix" xmlns="http://relaxng.org/ns/structure/1.0">
1624    <mixed>
1625      <zeroOrMore>
1626        <choice>
1627          <element name="a">
1628  	  <empty/>
1629  	</element>
1630          <element name="b">
1631  	  <empty/>
1632  	</element>
1633          <element name="c">
1634  	  <empty/>
1635  	</element>
1636        </choice>
1637      </zeroOrMore>
1638    </mixed>
1639    <element name="d">
1640      <empty/>
1641    </element>
1642  </element>
1643  </correct>
1644  <valid>
1645  <mix>
1646    <d/>
1647  </mix>
1648  </valid>
1649  <valid>
1650  <mix>
1651    <b/>
1652    <a/>
1653    <c/>
1654    <b/>
1655    <d/>
1656  </mix>
1657  </valid>
1658  <valid>
1659  <mix>
1660    mixed
1661    <c/>
1662    <d/>
1663  </mix>
1664  </valid>
1665  <valid>
1666  <mix>
1667    <c/>
1668    mixed
1669    <d/>
1670  </mix>
1671  </valid>
1672  <valid>
1673  <mix>
1674    <b/>
1675    is
1676    <a/>
1677    inter
1678    <c/>
1679    mixed
1680    <b/>
1681    <d/>
1682  </mix>
1683  </valid>
1684  <valid>
1685  <mix>
1686    mixed
1687    <b/>
1688    .
1689    <d/>
1690  </mix>
1691  </valid>
1692  <valid>
1693  <mix>
1694    this
1695    <b/>
1696    is
1697    <a/>
1698    inter
1699    <c/>
1700    mixed
1701    <b/>
1702    .
1703    <d/>
1704  </mix>
1705  </valid>
1706  </testCase>
1707  </testSuite>
1708  </testSuite>