File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libxml2 / test / relaxng / testsuite.xml
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 23:37:59 2012 UTC (12 years, 7 months ago) by misho
Branches: libxml2, MAIN
CVS tags: v2_9_1p0, v2_9_1, v2_8_0p0, v2_8_0, v2_7_8, HEAD
libxml2

    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>

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>