Home | History | Annotate | Download | only in relaxng
      1 <testSuite>
      2 <author>Daniel Veillard</author>
      3 <email>daniel (a] 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>
   1709