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>
1709