Annotation of embedaddon/libxml2/test/relaxng/OASIS/spectest.xml, revision 1.1.1.1
1.1 misho 1: <!DOCTYPE testSuite [
2: <!ENTITY dii "<ดี/>">
3: ]>
4: <testSuite>
5: <author>James Clark</author>
6: <email>jjc@jclark.com</email>
7: <documentation>For October 26 version of the spec.</documentation>
8: <testSuite>
9: <section>3</section>
10: <testSuite>
11: <documentation>Various possible syntax errors.</documentation>
12: <testCase>
13: <section>3</section>
14: <incorrect>
15: <thisIsJunk/>
16: </incorrect>
17: </testCase>
18: <testCase>
19: <section>3</section>
20: <incorrect>
21: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
22: <element name="foo">
23: <empty/>
24: </element>
25: <start>
26: <element name="foo">
27: <empty/>
28: </element>
29: </start>
30: </grammar>
31: </incorrect>
32: </testCase>
33: <testCase>
34: <section>3</section>
35: <incorrect>
36: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
37: <define name="bar">
38: <text/>
39: </define>
40: <text/>
41: </element>
42: </incorrect>
43: </testCase>
44: <testCase>
45: <section>3</section>
46: <incorrect>
47: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
48: <name>foo</name>
49: <empty/>
50: </element>
51: </incorrect>
52: </testCase>
53: <testCase>
54: <section>3</section>
55: <incorrect>
56: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
57: <group>
58: <name>bar</name>
59: </group>
60: </element>
61: </incorrect>
62: </testCase>
63: <testCase>
64: <section>3</section>
65: <incorrect>
66: <element xmlns="http://relaxng.org/ns/structure/1.0">
67: <anyName>
68: <except>
69: <name>foo</name>
70: </except>
71: <except>
72: <name>bar</name>
73: </except>
74: </anyName>
75: <empty/>
76: </element>
77: </incorrect>
78: </testCase>
79: <testCase>
80: <section>3</section>
81: <incorrect>
82: <element xmlns="http://relaxng.org/ns/structure/1.0">
83: <nsName>
84: <except>
85: <name>foo</name>
86: </except>
87: <except>
88: <name>bar</name>
89: </except>
90: </nsName>
91: <empty/>
92: </element>
93: </incorrect>
94: </testCase>
95: <testCase>
96: <section>3</section>
97: <incorrect>
98: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
99: <data type="token">
100: <except>
101: <value>foo</value>
102: </except>
103: <except>
104: <value>bar</value>
105: </except>
106: </data>
107: </element>
108: </incorrect>
109: </testCase>
110: <testCase>
111: <section>3</section>
112: <incorrect>
113: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
114: <empty name="bar"/>
115: </element>
116: </incorrect>
117: </testCase>
118: <testCase>
119: <section>3</section>
120: <incorrect>
121: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo" extra="bar">
122: <empty/>
123: </element>
124: </incorrect>
125: </testCase>
126: <testCase>
127: <section>3</section>
128: <incorrect>
129: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
130: <empty>
131: <empty/>
132: </empty>
133: </element>
134: </incorrect>
135: </testCase>
136: <testCase>
137: <section>3</section>
138: <incorrect>
139: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
140: <text>
141: <empty/>
142: </text>
143: </element>
144: </incorrect>
145: </testCase>
146: <testCase>
147: <section>3</section>
148: <incorrect>
149: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
150: <choice>
151: <text/>
152: <notAllowed>
153: <empty/>
154: </notAllowed>
155: </choice>
156: </element>
157: </incorrect>
158: </testCase>
159: <testCase>
160: <section>3</section>
161: <incorrect>
162: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
163: <start>
164: <ref name="foo">
165: <empty/>
166: </ref>
167: </start>
168: <define name="foo">
169: <element name="foo">
170: <empty/>
171: </element>
172: </define>
173: </grammar>
174: </incorrect>
175: </testCase>
176: <testCase>
177: <section>3</section>
178: <incorrect>
179: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
180: <start>
181: <grammar>
182: <start>
183: <parentRef name="foo">
184: <empty/>
185: </parentRef>
186: </start>
187: </grammar>
188: </start>
189: <define name="foo">
190: <element name="foo">
191: <empty/>
192: </element>
193: </define>
194: </grammar>
195: </incorrect>
196: </testCase>
197: </testSuite>
198: <testSuite>
199: <documentation>Tests for obsolete syntax</documentation>
200: <testCase>
201: <section>3</section>
202: <incorrect>
203: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
204: <start name="foo">
205: <element name="foo">
206: <empty/>
207: </element>
208: </start>
209: </grammar>
210: </incorrect>
211: </testCase>
212: <testCase>
213: <section>3</section>
214: <incorrect>
215: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo" ns="http://www.example.com">
216: <attribute name="bar" global="true">
217: <text/>
218: </attribute>
219: </element>
220: </incorrect>
221: </testCase>
222: <testCase>
223: <section>3</section>
224: <incorrect>
225: <element xmlns="http://relaxng.org/ns/structure/1.0">
226: <not>
227: <name>foo</name>
228: </not>
229: <empty/>
230: </element>
231: </incorrect>
232: </testCase>
233: <testCase>
234: <section>3</section>
235: <incorrect>
236: <element xmlns="http://relaxng.org/ns/structure/1.0">
237: <difference>
238: <anyName/>
239: <name>foo</name>
240: </difference>
241: <empty/>
242: </element>
243: </incorrect>
244: </testCase>
245: <testCase>
246: <section>3</section>
247: <incorrect>
248: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
249: <data type="token" key="foo"/>
250: </element>
251: </incorrect>
252: </testCase>
253: <testCase>
254: <section>3</section>
255: <incorrect>
256: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
257: <data type="token" keyRef="foo"/>
258: </element>
259: </incorrect>
260: </testCase>
261: <testCase>
262: <section>3</section>
263: <incorrect>
264: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
265: <keyRef name="foo">
266: <data type="token"/>
267: </keyRef>
268: </element>
269: </incorrect>
270: </testCase>
271: <testCase>
272: <section>3</section>
273: <incorrect>
274: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
275: <key name="foo">
276: <data type="token"/>
277: </key>
278: </element>
279: </incorrect>
280: </testCase>
281: </testSuite>
282: <testSuite>
283: <documentation>Tests for missing attributes and child elements</documentation>
284: <testCase>
285: <section>3</section>
286: <incorrect>
287: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
288: </element>
289: </incorrect>
290: </testCase>
291: <testCase>
292: <section>3</section>
293: <incorrect>
294: <element xmlns="http://relaxng.org/ns/structure/1.0">
295: <name>foo</name>
296: </element>
297: </incorrect>
298: </testCase>
299: <testCase>
300: <section>3</section>
301: <incorrect>
302: <element xmlns="http://relaxng.org/ns/structure/1.0">
303: </element>
304: </incorrect>
305: </testCase>
306: <testCase>
307: <section>3</section>
308: <incorrect>
309: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
310: <attribute/>
311: </element>
312: </incorrect>
313: </testCase>
314: <testCase>
315: <section>3</section>
316: <incorrect>
317: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
318: <group/>
319: </element>
320: </incorrect>
321: </testCase>
322: <testCase>
323: <section>3</section>
324: <incorrect>
325: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
326: <interleave/>
327: </element>
328: </incorrect>
329: </testCase>
330: <testCase>
331: <section>3</section>
332: <incorrect>
333: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
334: <choice/>
335: </element>
336: </incorrect>
337: </testCase>
338: <testCase>
339: <section>3</section>
340: <incorrect>
341: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
342: <optional/>
343: </element>
344: </incorrect>
345: </testCase>
346: <testCase>
347: <section>3</section>
348: <incorrect>
349: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
350: <zeroOrMore/>
351: </element>
352: </incorrect>
353: </testCase>
354: <testCase>
355: <section>3</section>
356: <incorrect>
357: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
358: <oneOrMore/>
359: </element>
360: </incorrect>
361: </testCase>
362: <testCase>
363: <section>3</section>
364: <incorrect>
365: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
366: <list/>
367: </element>
368: </incorrect>
369: </testCase>
370: <testCase>
371: <section>3</section>
372: <incorrect>
373: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
374: <mixed/>
375: </element>
376: </incorrect>
377: </testCase>
378: <testCase>
379: <section>3</section>
380: <incorrect>
381: <element xmlns="http://relaxng.org/ns/structure/1.0">
382: <choice/>
383: <empty/>
384: </element>
385: </incorrect>
386: </testCase>
387: <testCase>
388: <section>3</section>
389: <incorrect>
390: <element xmlns="http://relaxng.org/ns/structure/1.0">
391: <anyName>
392: <except/>
393: </anyName>
394: <empty/>
395: </element>
396: </incorrect>
397: </testCase>
398: <testCase>
399: <section>3</section>
400: <incorrect>
401: <element xmlns="http://relaxng.org/ns/structure/1.0">
402: <nsName ns="">
403: <except/>
404: </nsName>
405: <empty/>
406: </element>
407: </incorrect>
408: </testCase>
409: <testCase>
410: <section>3</section>
411: <incorrect>
412: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
413: <data type="string">
414: <except/>
415: </data>
416: </element>
417: </incorrect>
418: </testCase>
419: <testCase>
420: <section>3</section>
421: <incorrect>
422: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
423: <data/>
424: </element>
425: </incorrect>
426: </testCase>
427: <testCase>
428: <section>3</section>
429: <incorrect>
430: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
431: <data type="string">
432: <param/>
433: </data>
434: </element>
435: </incorrect>
436: </testCase>
437: <testCase>
438: <section>3</section>
439: <incorrect>
440: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
441: <grammar>
442: <start/>
443: </grammar>
444: </element>
445: </incorrect>
446: </testCase>
447: <testCase>
448: <section>3</section>
449: <incorrect>
450: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
451: <start>
452: <element name="bar">
453: <empty/>
454: </element>
455: </start>
456: <define name="baz"/>
457: </grammar>
458: </incorrect>
459: </testCase>
460: <testCase>
461: <section>3</section>
462: <incorrect>
463: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
464: <externalRef/>
465: </element>
466: </incorrect>
467: </testCase>
468: <testCase>
469: <section>3</section>
470: <incorrect>
471: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
472: <include/>
473: <start>
474: <element name="foo">
475: <empty/>
476: </element>
477: </start>
478: </grammar>
479: </incorrect>
480: </testCase>
481: <testCase>
482: <section>3</section>
483: <incorrect>
484: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
485: <start>
486: <element name="foo">
487: <empty/>
488: </element>
489: </start>
490: <define>
491: <element name="bar">
492: <empty/>
493: </element>
494: </define>
495: </grammar>
496: </incorrect>
497: </testCase>
498: <testCase>
499: <section>3</section>
500: <incorrect>
501: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
502: <start>
503: <ref/>
504: </start>
505: <define name="foo">
506: <element name="foo">
507: <empty/>
508: </element>
509: </define>
510: </grammar>
511: </incorrect>
512: </testCase>
513: <testCase>
514: <section>3</section>
515: <incorrect>
516: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
517: <start>
518: <grammar>
519: <start>
520: <parentRef/>
521: </start>
522: </grammar>
523: </start>
524: <define name="foo">
525: <element name="foo">
526: <empty/>
527: </element>
528: </define>
529: </grammar>
530: </incorrect>
531: </testCase>
532: </testSuite>
533: <testSuite>
534: <documentation>Checking of ns attribute</documentation>
535: <testCase>
536: <section>3</section>
537: <correct>
538: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" ns="">
539: <empty/>
540: </element>
541: </correct>
542: <valid>
543: <foo/>
544: </valid>
545: </testCase>
546: <testCase>
547: <section>3</section>
548: <documentation>No checking of ns attribute is performed</documentation>
549: <correct>
550: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" ns="DAV:">
551: <empty/>
552: </element>
553: </correct>
554: <valid>
555: <foo xmlns="DAV:"/>
556: </valid>
557: </testCase>
558: <testCase>
559: <section>3</section>
560: <documentation>No checking of ns attribute is performed</documentation>
561: <correct>
562: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" ns="xyzzy">
563: <empty/>
564: </element>
565: </correct>
566: </testCase>
567: <testCase>
568: <section>3</section>
569: <documentation>No checking of ns attribute is performed</documentation>
570: <correct>
571: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" ns="bad_scheme://">
572: <empty/>
573: </element>
574: </correct>
575: </testCase>
576: </testSuite>
577: <testSuite>
578: <documentation>Checking of datatypeLibrary attribute</documentation>
579: <testCase>
580: <section>3</section>
581: <documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation>
582: <incorrect>
583: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="foo_bar:xyzzy">
584: <empty/>
585: </element>
586: </incorrect>
587: </testCase>
588: <testCase>
589: <section>3</section>
590: <documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation>
591: <correct>
592: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="foobar:xyzzy">
593: <empty/>
594: </element>
595: </correct>
596: <valid>
597: <foo/>
598: </valid>
599: </testCase>
600: <testCase>
601: <section>3</section>
602: <documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation>
603: <correct>
604: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http:ok">
605: <empty/>
606: </element>
607: </correct>
608: <valid>
609: <foo/>
610: </valid>
611: </testCase>
612: <testCase>
613: <section>3</section>
614: <documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation>
615: <incorrect>
616: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="foo:">
617: <empty/>
618: </element>
619: </incorrect>
620: </testCase>
621: <testCase>
622: <section>3</section>
623: <documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation>
624: <incorrect>
625: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.example.com/%">
626: <empty/>
627: </element>
628: </incorrect>
629: </testCase>
630: <testCase>
631: <section>3</section>
632: <documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation>
633: <incorrect>
634: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.example.com/%xx">
635: <empty/>
636: </element>
637: </incorrect>
638: </testCase>
639: <testCase>
640: <section>3</section>
641: <documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation>
642: <correct>
643: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.example.com/%Aa">
644: <empty/>
645: </element>
646: </correct>
647: <valid>
648: <foo/>
649: </valid>
650: </testCase>
651: <testCase>
652: <section>3</section>
653: <documentation>Value of datatypeLibrary attribute must not be relative</documentation>
654: <incorrect>
655: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="xyzzy">
656: <empty/>
657: </element>
658: </incorrect>
659: </testCase>
660: <testCase>
661: <section>3</section>
662: <documentation>Value of datatypeLibrary attribute must not be relative</documentation>
663: <incorrect>
664: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="xyzzy#foo:bar">
665: <empty/>
666: </element>
667: </incorrect>
668: </testCase>
669: <testCase>
670: <section>3</section>
671: <documentation>Value of datatypeLibrary attribute must not be relative</documentation>
672: <incorrect>
673: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="xyzzy?foo:bar">
674: <empty/>
675: </element>
676: </incorrect>
677: </testCase>
678: <testCase>
679: <section>3</section>
680: <documentation>Value of datatypeLibrary attribute must not be relative</documentation>
681: <incorrect>
682: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="xyzzy/foo:bar">
683: <empty/>
684: </element>
685: </incorrect>
686: </testCase>
687: <testCase>
688: <section>3</section>
689: <correct>
690: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="foo:bar">
691: <empty/>
692: </element>
693: </correct>
694: <valid>
695: <foo/>
696: </valid>
697: </testCase>
698: <testCase>
699: <section>3</section>
700: <correct>
701: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="">
702: <empty/>
703: </element>
704: </correct>
705: <valid>
706: <foo/>
707: </valid>
708: </testCase>
709: <testCase>
710: <section>3</section>
711: <correct>
712: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
713: <data datatypeLibrary="" type="string"/>
714: </element>
715: </correct>
716: <valid>
717: <foo>x</foo>
718: </valid>
719: </testCase>
720: <testCase>
721: <section>3</section>
722: <documentation>Value of datatypeLibrary attribute must not contain fragment identifier</documentation>
723: <incorrect>
724: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"
725: datatypeLibrary="http://www.example.com#xyzzy">
726: <empty/>
727: </element>
728: </incorrect>
729: </testCase>
730: <testCase>
731: <section>3</section>
732: <documentation>Value of datatypeLibrary attribute must not contain fragment identifier</documentation>
733: <incorrect>
734: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"
735: datatypeLibrary="http://www.example.com#">
736: <empty/>
737: </element>
738: </incorrect>
739: </testCase>
740: </testSuite>
741: <testSuite>
742: <documentation>Tests for QName and NCNames in schemas</documentation>
743: <testCase>
744: <section>3</section>
745: <correct>
746: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
747: <element name="ดี">
748: <empty/>
749: </element>
750: </element>
751: </correct>
752: <valid>
753: <foo>&dii;</foo>
754: </valid>
755: </testCase>
756: <testCase>
757: <section>3</section>
758: <incorrect>
759: <element name="ี" xmlns="http://relaxng.org/ns/structure/1.0">
760: <empty/>
761: </element>
762: </incorrect>
763: </testCase>
764: <testCase>
765: <section>3</section>
766: <incorrect>
767: <element name="" xmlns="http://relaxng.org/ns/structure/1.0">
768: <empty/>
769: </element>
770: </incorrect>
771: </testCase>
772: <testCase>
773: <section>3</section>
774: <incorrect>
775: <element xmlns="http://relaxng.org/ns/structure/1.0">
776: <name>ี</name>
777: <empty/>
778: </element>
779: </incorrect>
780: </testCase>
781: <testCase>
782: <section>3</section>
783: <incorrect>
784: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
785: <attribute name="ี"/>
786: <empty/>
787: </element>
788: </incorrect>
789: </testCase>
790: <testCase>
791: <section>3</section>
792: <incorrect>
793: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
794: <start>
795: <ref name="ี"/>
796: </start>
797: <define name="ี">
798: <element name="foo">
799: <empty/>
800: </element>
801: </define>
802: </grammar>
803: </incorrect>
804: </testCase>
805: <testCase>
806: <section>3</section>
807: <correct>
808: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
809: <start>
810: <ref name="ดี"/>
811: </start>
812: <define name="ดี">
813: <element name="foo">
814: <empty/>
815: </element>
816: </define>
817: </grammar>
818: </correct>
819: <valid>
820: <foo/>
821: </valid>
822: </testCase>
823: <testCase>
824: <section>3</section>
825: <incorrect>
826: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
827: <start>
828: <ref name=""/>
829: </start>
830: <define name="">
831: <element name="foo">
832: <empty/>
833: </element>
834: </define>
835: </grammar>
836: </incorrect>
837: </testCase>
838: <testCase>
839: <section>3</section>
840: <incorrect>
841: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
842: <start>
843: <ref name="x y"/>
844: </start>
845: <define name="x y">
846: <element name="foo">
847: <empty/>
848: </element>
849: </define>
850: </grammar>
851: </incorrect>
852: </testCase>
853: <testCase>
854: <section>3</section>
855: <incorrect>
856: <grammar xmlns="http://relaxng.org/ns/structure/1.0"
857: xmlns:x="http://www.example.com/x">
858: <start>
859: <ref name="x:y"/>
860: </start>
861: <define name="x:y">
862: <element name="foo">
863: <empty/>
864: </element>
865: </define>
866: </grammar>
867: </incorrect>
868: </testCase>
869: <testCase>
870: <section>3</section>
871: <incorrect>
872: <element xmlns="http://relaxng.org/ns/structure/1.0"
873: xmlns:x="http://www.example.com/x"
874: name="x:ี">
875: <empty/>
876: </element>
877: </incorrect>
878: </testCase>
879: <testCase>
880: <section>3</section>
881: <incorrect>
882: <element xmlns="http://relaxng.org/ns/structure/1.0"
883: xmlns:x="http://www.example.com/x"
884: name="x:y:z">
885: <empty/>
886: </element>
887: </incorrect>
888: </testCase>
889: <testCase>
890: <section>3</section>
891: <incorrect>
892: <element xmlns="http://relaxng.org/ns/structure/1.0"
893: xmlns:x="http://www.example.com/x"
894: name="x:">
895: <empty/>
896: </element>
897: </incorrect>
898: </testCase>
899: </testSuite>
900: <testSuite>
901: <documentation>Tests for elements that allow only a single pattern child.</documentation>
902: <testCase>
903: <section>3</section>
904: <incorrect>
905: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
906: <start>
907: <element name="foo">
908: <empty/>
909: </element>
910: <empty/>
911: </start>
912: </grammar>
913: </incorrect>
914: </testCase>
915: <testCase>
916: <section>3</section>
917: <incorrect>
918: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
919: <attribute name="bar">
920: <text/>
921: <empty/>
922: </attribute>
923: </element>
924: </incorrect>
925: </testCase>
926: <testCase>
927: <section>3</section>
928: <incorrect>
929: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
930: <attribute>
931: <name>bar</name>
932: <text/>
933: <empty/>
934: </attribute>
935: </element>
936: </incorrect>
937: </testCase>
938: </testSuite>
939: <testSuite>
940: <documentation>Tests for foreign element and attribute handling.</documentation>
941: <testCase>
942: <section>3</section>
943: <incorrect>
944: <r:element name="foo" xmlns:r="http://relaxng.org/ns/structure/1.0" r:a="val">
945: <r:empty/>
946: </r:element>
947: </incorrect>
948: </testCase>
949: <testCase>
950: <section>3</section>
951: <incorrect>
952: <element xmlns="http://relaxng.org/ns/structure/1.0">
953: <name>foo<eg:comment xmlns:eg="http://www.example.com"/></name>
954: <empty/>
955: </element>
956: </incorrect>
957: </testCase>
958: <testCase>
959: <section>3</section>
960: <incorrect>
961: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
962: <value>foo<eg:comment xmlns:eg="http://www.example.com"/></value>
963: </element>
964: </incorrect>
965: </testCase>
966: <testCase>
967: <section>3</section>
968: <correct>
969: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
970: <data type="string"><eg:comment xmlns:eg="http://www.example.com"/></data>
971: </element>
972: </correct>
973: <valid>
974: <foo>X</foo>
975: </valid>
976: </testCase>
977: <testCase>
978: <section>3</section>
979: <correct>
980: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
981: <empty>
982: <ext xmlns="http://www.example.com">
983: <element xmlns="http://relaxng.org/ns/structure/1.0"/>
984: </ext>
985: </empty>
986: </element>
987: </correct>
988: <valid>
989: <foo/>
990: </valid>
991: </testCase>
992: <testCase>
993: <section>3</section>
994: <correct>
995: <grammar xmlns="http://relaxng.org/ns/structure/1.0" xmlns:eg="http://www.example.com">
996: <eg:comment/>
997: <eg:comment/>
998: <start>
999: <eg:comment/>
1000: <element>
1001: <eg:comment/>
1002: <eg:comment/>
1003: <name>foo</name>
1004: <eg:comment/>
1005: <data type="string"/>
1006: <eg:comment/>
1007: <empty>
1008: <eg:comment/>
1009: <eg:comment/>
1010: </empty>
1011: <eg:comment/>
1012: <eg:comment/>
1013: </element>
1014: <eg:comment/>
1015: </start>
1016: <eg:comment/>
1017: </grammar>
1018: </correct>
1019: <valid>
1020: <foo>X</foo>
1021: </valid>
1022: </testCase>
1023: <testCase>
1024: <section>3</section>
1025: <correct>
1026: <grammar xmlns="http://relaxng.org/ns/structure/1.0" xmlns:eg="http://www.example.com"
1027: eg:comment="">
1028: <start eg:comment="">
1029: <element eg:comment="">
1030: <name eg:comment="">foo</name>
1031: <data eg:comment="" type="string"/>
1032: <empty eg:comment=""/>
1033: </element>
1034: </start>
1035: </grammar>
1036: </correct>
1037: <valid>
1038: <foo>X</foo>
1039: </valid>
1040: </testCase>
1041: <testCase>
1042: <section>3</section>
1043: <correct>
1044: <rng:grammar xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns="http://www.example.com">
1045: <comment/>
1046: <comment/>
1047: <rng:start>
1048: <comment/>
1049: <rng:element>
1050: <comment/>
1051: <comment/>
1052: <rng:name>foo</rng:name>
1053: <comment/>
1054: <rng:data type="string"/>
1055: <comment/>
1056: </rng:element>
1057: <comment/>
1058: </rng:start>
1059: <comment/>
1060: </rng:grammar>
1061: </correct>
1062: <valid>
1063: <foo>X</foo>
1064: </valid>
1065: </testCase>
1066: <testCase>
1067: <section>3</section>
1068: <correct>
1069: <rng:grammar xmlns:rng="http://relaxng.org/ns/structure/1.0">
1070: <comment/>
1071: <comment/>
1072: <rng:start>
1073: <comment/>
1074: <rng:element>
1075: <comment/>
1076: <comment/>
1077: <rng:name>foo</rng:name>
1078: <comment/>
1079: <rng:data type="string"/>
1080: <comment/>
1081: </rng:element>
1082: <comment/>
1083: </rng:start>
1084: <comment/>
1085: </rng:grammar>
1086: </correct>
1087: <valid>
1088: <foo>X</foo>
1089: </valid>
1090: </testCase>
1091: </testSuite>
1092: </testSuite>
1093: <testSuite>
1094: <section>4</section>
1095: <testSuite>
1096: <section>4.2</section>
1097: <testCase>
1098: <section>4.2</section>
1099: <correct>
1100: <element name="

 	foo

 	" xmlns="http://relaxng.org/ns/structure/1.0">
1101: <attribute name="

 	bar

 	"/>
1102: </element>
1103: </correct>
1104: <valid>
1105: <foo bar=""/>
1106: </valid>
1107: </testCase>
1108: <testCase>
1109: <section>4.2</section>
1110: <correct>
1111: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
1112: <value type="

 	string

 	">bar</value>
1113: </element>
1114: </correct>
1115: <valid>
1116: <foo>bar</foo>
1117: </valid>
1118: <invalid>
1119: <foo>bar </foo>
1120: </invalid>
1121: </testCase>
1122: <testCase>
1123: <section>4.2</section>
1124: <correct>
1125: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
1126: <data type="

 	string

 	"/>
1127: </element>
1128: </correct>
1129: <valid>
1130: <foo>X</foo>
1131: </valid>
1132: </testCase>
1133: <testCase>
1134: <section>4.2</section>
1135: <correct>
1136: <element xmlns="http://relaxng.org/ns/structure/1.0">
1137: <name>

 	foo

 	</name>
1138: <attribute><name>

 	bar

 	</name></attribute>
1139: </element>
1140: </correct>
1141: <valid>
1142: <foo bar=""/>
1143: </valid>
1144: </testCase>
1145: <testCase>
1146: <section>4.2</section>
1147: <correct>
1148: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1149: <start combine="

 	choice

 	">
1150: <ref name="

 	x

 	"/>
1151: </start>
1152: <define name="x">
1153: <ref name="y"/>
1154: </define>
1155: <define name="

 	y

 	">
1156: <grammar>
1157: <start combine="

 	interleave

 	">
1158: <parentRef name="

 	z

 	"/>
1159: </start>
1160: </grammar>
1161: </define>
1162: <define name="z">
1163: <element name="foo">
1164: <empty/>
1165: </element>
1166: </define>
1167: </grammar>
1168: </correct>
1169: <valid>
1170: <foo/>
1171: </valid>
1172: </testCase>
1173: </testSuite>
1174: <testCase>
1175: <section>4.4</section>
1176: <correct>
1177: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
1178: <value datatypeLibrary="http://www.example.com/this-does-not-exist">bar</value>
1179: </element>
1180: </correct>
1181: <valid>
1182: <foo>bar</foo>
1183: </valid>
1184: <valid>
1185: <foo>
1186: bar
1187: </foo>
1188: </valid>
1189: <valid>
1190: <foo> bar </foo>
1191: </valid>
1192: <invalid>
1193: <foo>baz</foo>
1194: </invalid>
1195: <invalid>
1196: <foo>ba r</foo>
1197: </invalid>
1198: </testCase>
1199: <testSuite>
1200: <section>4.5</section>
1201: <testCase>
1202: <section>4.5</section>
1203: <dir name="sub">
1204: <resource name="x">
1205: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
1206: <empty/>
1207: </element>
1208: </resource>
1209: </dir>
1210: <correct>
1211: <externalRef xmlns="http://relaxng.org/ns/structure/1.0"
1212: xml:base="sub/y" href="x"/>
1213: </correct>
1214: <valid>
1215: <foo/>
1216: </valid>
1217: <invalid>
1218: <bar/>
1219: </invalid>
1220: </testCase>
1221: <testCase>
1222: <section>4.5</section>
1223: <resource name="x">
1224: <element xmlns="http://relaxng.org/ns/structure/1.0" name="bar">
1225: <empty/>
1226: </element>
1227: </resource>
1228: <dir name="sub1">
1229: <resource name="x">
1230: <element xmlns="http://relaxng.org/ns/structure/1.0" name="bar">
1231: <empty/>
1232: </element>
1233: </resource>
1234: <dir name="sub3">
1235: <resource name="x">
1236: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
1237: <empty/>
1238: </element>
1239: </resource>
1240: </dir>
1241: </dir>
1242: <correct>
1243: <group xmlns="http://relaxng.org/ns/structure/1.0" xml:base="sub1/">
1244: <group>
1245: <group xml:base="sub2">
1246: <group>
1247: <group xml:base="sub3/y">
1248: <externalRef href="x"/>
1249: </group>
1250: </group>
1251: </group>
1252: </group>
1253: </group>
1254: </correct>
1255: <valid>
1256: <foo/>
1257: </valid>
1258: <invalid>
1259: <bar/>
1260: </invalid>
1261: </testCase>
1262: <testCase>
1263: <section>4.5</section>
1264: <resource name="x">
1265: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
1266: <empty/>
1267: </element>
1268: </resource>
1269: <incorrect>
1270: <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x#foo"/>
1271: </incorrect>
1272: </testCase>
1273: </testSuite>
1274: <testSuite>
1275: <section>4.6</section>
1276: <testCase>
1277: <section>4.6</section>
1278: <resource name="x">
1279: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
1280: <empty/>
1281: </element>
1282: </resource>
1283: <correct>
1284: <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x"/>
1285: </correct>
1286: <valid>
1287: <foo/>
1288: </valid>
1289: <invalid>
1290: <bar/>
1291: </invalid>
1292: </testCase>
1293: <testCase>
1294: <section>4.6</section>
1295: <resource name="x">
1296: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
1297: <empty/>
1298: </element>
1299: </resource>
1300: <correct>
1301: <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x" ns="http://www.example.com"/>
1302: </correct>
1303: <valid>
1304: <foo xmlns="http://www.example.com"/>
1305: </valid>
1306: <invalid>
1307: <foo/>
1308: </invalid>
1309: </testCase>
1310: <testCase>
1311: <section>4.6</section>
1312: <resource name="x">
1313: <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x"/>
1314: </resource>
1315: <incorrect>
1316: <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x"/>
1317: </incorrect>
1318: </testCase>
1319: <testCase>
1320: <section>4.6</section>
1321: <resource name="x">
1322: <start xmlns="http://relaxng.org/ns/structure/1.0">
1323: <element name="foo">
1324: <empty/>
1325: </element>
1326: </start>
1327: </resource>
1328: <incorrect>
1329: <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x"/>
1330: </incorrect>
1331: </testCase>
1332: <testCase>
1333: <section>4.6</section>
1334: <resource name="x">
1335: <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="y"/>
1336: </resource>
1337: <resource name="y">
1338: <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x"/>
1339: </resource>
1340: <incorrect>
1341: <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x"/>
1342: </incorrect>
1343: </testCase>
1344: <testCase>
1345: <section>4.6</section>
1346: <documentation>Same value of href before resolution, but not a loop.</documentation>
1347: <dir name="sub">
1348: <resource name="x">
1349: <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="sub/x"/>
1350: </resource>
1351: <dir name="sub">
1352: <resource name="x">
1353: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
1354: <empty/>
1355: </element>
1356: </resource>
1357: </dir>
1358: </dir>
1359: <correct>
1360: <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="sub/x"/>
1361: </correct>
1362: <valid>
1363: <foo/>
1364: </valid>
1365: <invalid>
1366: <bar/>
1367: </invalid>
1368: </testCase>
1369: </testSuite>
1370: <testSuite>
1371: <section>4.7</section>
1372: <testCase>
1373: <section>4.7</section>
1374: <resource name="x">
1375: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1376: <start>
1377: <element name="foo">
1378: <empty/>
1379: </element>
1380: </start>
1381: </grammar>
1382: </resource>
1383: <correct>
1384: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1385: <include href="x"/>
1386: </grammar>
1387: </correct>
1388: <valid>
1389: <foo/>
1390: </valid>
1391: <invalid>
1392: <bar/>
1393: </invalid>
1394: </testCase>
1395: <testCase>
1396: <section>4.7</section>
1397: <resource name="x">
1398: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1399: <start>
1400: <element name="foo">
1401: <empty/>
1402: </element>
1403: </start>
1404: </grammar>
1405: </resource>
1406: <correct>
1407: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1408: <include href="x" ns="http://www.example.com"/>
1409: </grammar>
1410: </correct>
1411: <valid>
1412: <foo xmlns="http://www.example.com"/>
1413: </valid>
1414: <invalid>
1415: <foo/>
1416: </invalid>
1417: </testCase>
1418: <testCase>
1419: <section>4.7</section>
1420: <resource name="x">
1421: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1422: <include href="y"/>
1423: </grammar>
1424: </resource>
1425: <resource name="y">
1426: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1427: <start>
1428: <element name="foo">
1429: <empty/>
1430: </element>
1431: </start>
1432: </grammar>
1433: </resource>
1434: <correct>
1435: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1436: <include href="x"/>
1437: </grammar>
1438: </correct>
1439: <valid>
1440: <foo/>
1441: </valid>
1442: <invalid>
1443: <bar/>
1444: </invalid>
1445: </testCase>
1446: <testCase>
1447: <section>4.7</section>
1448: <resource name="x">
1449: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
1450: <empty/>
1451: </element>
1452: </resource>
1453: <incorrect>
1454: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1455: <include href="x"/>
1456: </grammar>
1457: </incorrect>
1458: </testCase>
1459: <testCase>
1460: <section>4.7</section>
1461: <resource name="x">
1462: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1463: <include href="x"/>
1464: </grammar>
1465: </resource>
1466: <incorrect>
1467: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1468: <include href="x"/>
1469: </grammar>
1470: </incorrect>
1471: </testCase>
1472: <testCase>
1473: <section>4.7</section>
1474: <resource name="x">
1475: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1476: <include href="y"/>
1477: </grammar>
1478: </resource>
1479: <resource name="y">
1480: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1481: <include href="x"/>
1482: </grammar>
1483: </resource>
1484: <incorrect>
1485: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1486: <include href="x"/>
1487: </grammar>
1488: </incorrect>
1489: </testCase>
1490: <testCase>
1491: <section>4.7</section>
1492: <dir name="sub">
1493: <resource name="x">
1494: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1495: <include href="sub/x"/>
1496: </grammar>
1497: </resource>
1498: <dir name="sub">
1499: <resource name="x">
1500: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1501: <start>
1502: <element name="foo">
1503: <empty/>
1504: </element>
1505: </start>
1506: </grammar>
1507: </resource>
1508: </dir>
1509: </dir>
1510: <correct>
1511: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1512: <include href="sub/x"/>
1513: </grammar>
1514: </correct>
1515: <valid>
1516: <foo/>
1517: </valid>
1518: <invalid>
1519: <bar/>
1520: </invalid>
1521: </testCase>
1522: <testCase>
1523: <section>4.7</section>
1524: <resource name="x">
1525: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1526: <define name="foo">
1527: <element name="foo">
1528: <empty/>
1529: </element>
1530: </define>
1531: </grammar>
1532: </resource>
1533: <incorrect>
1534: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1535: <include href="x">
1536: <start>
1537: <ref name="foo"/>
1538: </start>
1539: </include>
1540: </grammar>
1541: </incorrect>
1542: </testCase>
1543: <testCase>
1544: <section>4.7</section>
1545: <resource name="x">
1546: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1547: <define name="foo">
1548: <element name="foo">
1549: <empty/>
1550: </element>
1551: </define>
1552: </grammar>
1553: </resource>
1554: <correct>
1555: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1556: <include href="x"/>
1557: <start>
1558: <ref name="foo"/>
1559: </start>
1560: </grammar>
1561: </correct>
1562: <valid><foo/></valid>
1563: <invalid><bar/></invalid>
1564: </testCase>
1565: <testCase>
1566: <section>4.7</section>
1567: <resource name="x">
1568: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1569: <start>
1570: <ref name="foo"/>
1571: </start>
1572: </grammar>
1573: </resource>
1574: <incorrect>
1575: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1576: <include href="x">
1577: <define name="foo">
1578: <element name="foo">
1579: <empty/>
1580: </element>
1581: </define>
1582: </include>
1583: </grammar>
1584: </incorrect>
1585: </testCase>
1586: <testCase>
1587: <section>4.7</section>
1588: <resource name="x">
1589: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1590: <start>
1591: <ref name="foo"/>
1592: </start>
1593: </grammar>
1594: </resource>
1595: <correct>
1596: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1597: <include href="x"/>
1598: <define name="foo">
1599: <element name="foo">
1600: <empty/>
1601: </element>
1602: </define>
1603: </grammar>
1604: </correct>
1605: <valid><foo/></valid>
1606: <invalid><bar/></invalid>
1607: </testCase>
1608: <testCase>
1609: <section>4.7</section>
1610: <resource name="x">
1611: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1612: <define name="foo" combine="choice">
1613: <element name="foo3">
1614: <empty/>
1615: </element>
1616: </define>
1617: </grammar>
1618: </resource>
1619: <correct>
1620: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1621: <start>
1622: <ref name="foo"/>
1623: </start>
1624: <include href="x">
1625: <define name="foo" combine="choice">
1626: <element name="foo1">
1627: <empty/>
1628: </element>
1629: </define>
1630: </include>
1631: <define name="foo">
1632: <element name="foo2">
1633: <empty/>
1634: </element>
1635: </define>
1636: </grammar>
1637: </correct>
1638: <valid><foo1/></valid>
1639: <valid><foo2/></valid>
1640: <invalid><foo3/></invalid>
1641: </testCase>
1642: <testCase>
1643: <section>4.7</section>
1644: <resource name="level1.rng">
1645: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1646: <include href="level2.rng">
1647: <define name="foo">
1648: <element name="bar">
1649: <empty/>
1650: </element>
1651: </define>
1652: </include>
1653: </grammar>
1654: </resource>
1655: <resource name="level2.rng">
1656: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1657: <define name="bar">
1658: <element name="bar">
1659: <empty/>
1660: </element>
1661: </define>
1662: </grammar>
1663: </resource>
1664: <incorrect>
1665: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1666: <start>
1667: <ref name="foo"/>
1668: </start>
1669: <include href="level1.rng">
1670: <define name="foo">
1671: <element name="foo">
1672: <empty/>
1673: </element>
1674: </define>
1675: </include>
1676: </grammar>
1677: </incorrect>
1678: </testCase>
1679: </testSuite>
1680: <testSuite>
1681: <section>4.8</section>
1682: <testCase>
1683: <section>4.8</section>
1684: <correct>
1685: <element xmlns="http://relaxng.org/ns/structure/1.0" ns="http://www.example.com" name="foo">
1686: <attribute name="bar" ns="http://www.example.com"/>
1687: </element>
1688: </correct>
1689: <valid>
1690: <eg:foo eg:bar="x" xmlns:eg="http://www.example.com"/>
1691: </valid>
1692: <invalid>
1693: <eg:foo xmlns:eg="http://www.example.com" bar="x"/>
1694: </invalid>
1695: </testCase>
1696: <testCase>
1697: <section>4.8</section>
1698: <correct>
1699: <element xmlns="http://relaxng.org/ns/structure/1.0" ns="http://www.example.com" name="foo">
1700: <attribute name="bar"/>
1701: </element>
1702: </correct>
1703: <invalid>
1704: <eg:foo xmlns:eg="http://www.example.com" eg:bar="x"/>
1705: </invalid>
1706: <valid>
1707: <eg:foo xmlns:eg="http://www.example.com" bar="x"/>
1708: </valid>
1709: </testCase>
1710: </testSuite>
1711: <testSuite>
1712: <section>4.9</section>
1713: <testCase>
1714: <section>4.9</section>
1715: <correct>
1716: <element xmlns="http://relaxng.org/ns/structure/1.0" ns="http://www.example.com" name="foo">
1717: <attribute>
1718: <name>bar</name>
1719: </attribute>
1720: </element>
1721: </correct>
1722: <valid>
1723: <eg:foo xmlns:eg="http://www.example.com" eg:bar="x"/>
1724: </valid>
1725: <invalid>
1726: <eg:foo xmlns:eg="http://www.example.com" bar="x"/>
1727: </invalid>
1728: </testCase>
1729: <testCase>
1730: <section>4.6</section>
1731: <section>4.9</section>
1732: <resource name="x">
1733: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
1734: <empty/>
1735: </element>
1736: </resource>
1737: <correct>
1738: <group ns="http://www.example.com" xmlns="http://relaxng.org/ns/structure/1.0" >
1739: <externalRef href="x"/>
1740: </group>
1741: </correct>
1742: <valid>
1743: <foo xmlns="http://www.example.com"/>
1744: </valid>
1745: <invalid>
1746: <foo/>
1747: </invalid>
1748: </testCase>
1749: <testCase>
1750: <correct>
1751: <group xmlns="http://relaxng.org/ns/structure/1.0">
1752: <element ns="http://www.example.com">
1753: <name>foo</name>
1754: <empty/>
1755: </element>
1756: </group>
1757: </correct>
1758: <valid><foo xmlns="http://www.example.com"/></valid>
1759: <invalid><foo/></invalid>
1760: </testCase>
1761: <testCase>
1762: <correct>
1763: <element ns="http://www.example.com" xmlns="http://relaxng.org/ns/structure/1.0">
1764: <name>foo</name>
1765: <empty/>
1766: </element>
1767: </correct>
1768: <valid><foo xmlns="http://www.example.com"/></valid>
1769: <invalid><foo/></invalid>
1770: </testCase>
1771: <testCase>
1772: <correct>
1773: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
1774: <attribute ns="http://www.example.com">
1775: <name>bar</name>
1776: <text/>
1777: </attribute>
1778: </element>
1779: </correct>
1780: <valid><foo xmlns:x="http://www.example.com" x:bar="whatever"/></valid>
1781: <invalid><foo bar="whatever"/></invalid>
1782: </testCase>
1783: </testSuite>
1784: <testSuite>
1785: <section>4.10</section>
1786: <testCase>
1787: <section>4.10</section>
1788: <incorrect>
1789: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo:bar">
1790: <empty/>
1791: </element>
1792: </incorrect>
1793: </testCase>
1794: <testCase>
1795: <section>4.10</section>
1796: <correct>
1797: <element xmlns="http://relaxng.org/ns/structure/1.0" name="eg:foo" xmlns:eg="http://www.example.com">
1798: <empty/>
1799: </element>
1800: </correct>
1801: <valid>
1802: <foo xmlns="http://www.example.com"/>
1803: </valid>
1804: <invalid>
1805: <foo xmlns="http://www.example.com/"/>
1806: </invalid>
1807: </testCase>
1808: <testCase>
1809: <section>4.10</section>
1810: <correct>
1811: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo" xmlns:eg="http://www.example.com">
1812: <attribute name="eg:bar"/>
1813: </element>
1814: </correct>
1815: <valid>
1816: <foo xmlns:ex="http://www.example.com" ex:bar="x"/>
1817: </valid>
1818: <invalid>
1819: <foo xmlns:ex="http://www.example.com/" ex:bar="x"/>
1820: </invalid>
1821: </testCase>
1822: <testCase>
1823: <section>4.10</section>
1824: <correct>
1825: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
1826: <attribute name="xml:lang"/>
1827: </element>
1828: </correct>
1829: <valid>
1830: <foo xml:lang="en"/>
1831: </valid>
1832: <invalid>
1833: <foo lang="en"/>
1834: </invalid>
1835: </testCase>
1836: </testSuite>
1837: <testSuite>
1838: <section>4.11</section>
1839: <testCase>
1840: <section>4.11</section>
1841: <correct>
1842: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1843: <div ns="http://www.example.com">
1844: <div>
1845: <start>
1846: <ref name="foo"/>
1847: </start>
1848: </div>
1849: <define name="foo">
1850: <element name="foo">
1851: <empty/>
1852: </element>
1853: </define>
1854: </div>
1855: <div/>
1856: </grammar>
1857: </correct>
1858: <valid>
1859: <foo xmlns="http://www.example.com"/>
1860: </valid>
1861: <invalid>
1862: <foo/>
1863: </invalid>
1864: </testCase>
1865: </testSuite>
1866: <testSuite>
1867: <testCase>
1868: <section>4.12</section>
1869: <correct>
1870: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
1871:
1872: <start>
1873: <element name="foo">
1874: <ref name="bars"/>
1875: </element>
1876: </start>
1877:
1878: <define name="bars">
1879: <element name="bar">
1880: <empty/>
1881: </element>
1882: <element name="bar">
1883: <empty/>
1884: </element>
1885: <element name="bar">
1886: <empty/>
1887: </element>
1888: </define>
1889:
1890: </grammar>
1891: </correct>
1892: <valid>
1893: <foo><bar/><bar/><bar/></foo>
1894: </valid>
1895: <invalid>
1896: <foo><bar/><bar/><bar/><bar/><bar/><bar/></foo>
1897: </invalid>
1898: <invalid>
1899: <foo><bar/><bar/></foo>
1900: </invalid>
1901: <invalid>
1902: <foo><bar/></foo>
1903: </invalid>
1904: <invalid>
1905: <foo></foo>
1906: </invalid>
1907: <invalid>
1908: <foo>X</foo>
1909: </invalid>
1910: <invalid>
1911: <foo><bar/>X<bar/><bar/></foo>
1912: </invalid>
1913: <invalid>
1914: <foo><bar/><bar/><bar/><bar/></foo>
1915: </invalid>
1916: </testCase>
1917: <testCase>
1918: <section>4.12</section>
1919: <correct>
1920: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
1921: <oneOrMore>
1922: <element name="bar">
1923: <empty/>
1924: </element>
1925: <element name="bar">
1926: <empty/>
1927: </element>
1928: <element name="bar">
1929: <empty/>
1930: </element>
1931: </oneOrMore>
1932: </element>
1933: </correct>
1934: <valid>
1935: <foo><bar/><bar/><bar/></foo>
1936: </valid>
1937: <valid>
1938: <foo><bar/><bar/><bar/><bar/><bar/><bar/></foo>
1939: </valid>
1940: <invalid>
1941: <foo><bar/><bar/></foo>
1942: </invalid>
1943: <invalid>
1944: <foo><bar/></foo>
1945: </invalid>
1946: <invalid>
1947: <foo></foo>
1948: </invalid>
1949: <invalid>
1950: <foo>X</foo>
1951: </invalid>
1952: <invalid>
1953: <foo><bar/>X<bar/><bar/></foo>
1954: </invalid>
1955: <invalid>
1956: <foo><bar/><bar/><bar/><bar/></foo>
1957: </invalid>
1958: </testCase>
1959: <testCase>
1960: <section>4.12</section>
1961: <section>4.15</section>
1962: <correct>
1963: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
1964: <zeroOrMore>
1965: <element name="bar">
1966: <empty/>
1967: </element>
1968: <element name="bar">
1969: <empty/>
1970: </element>
1971: <element name="bar">
1972: <empty/>
1973: </element>
1974: </zeroOrMore>
1975: </element>
1976: </correct>
1977: <valid>
1978: <foo><bar/><bar/><bar/></foo>
1979: </valid>
1980: <valid>
1981: <foo><bar/><bar/><bar/><bar/><bar/><bar/></foo>
1982: </valid>
1983: <invalid>
1984: <foo><bar/><bar/></foo>
1985: </invalid>
1986: <invalid>
1987: <foo><bar/></foo>
1988: </invalid>
1989: <valid>
1990: <foo></foo>
1991: </valid>
1992: <invalid>
1993: <foo>X</foo>
1994: </invalid>
1995: <invalid>
1996: <foo><bar/>X<bar/><bar/></foo>
1997: </invalid>
1998: <invalid>
1999: <foo><bar/><bar/><bar/><bar/></foo>
2000: </invalid>
2001: </testCase>
2002: <testCase>
2003: <section>4.12</section>
2004: <section>4.14</section>
2005: <correct>
2006: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2007: <optional>
2008: <element name="bar">
2009: <empty/>
2010: </element>
2011: <element name="bar">
2012: <empty/>
2013: </element>
2014: <element name="bar">
2015: <empty/>
2016: </element>
2017: </optional>
2018: </element>
2019: </correct>
2020: <valid>
2021: <foo><bar/><bar/><bar/></foo>
2022: </valid>
2023: <invalid>
2024: <foo><bar/><bar/><bar/><bar/><bar/><bar/></foo>
2025: </invalid>
2026: <invalid>
2027: <foo><bar/><bar/></foo>
2028: </invalid>
2029: <invalid>
2030: <foo><bar/></foo>
2031: </invalid>
2032: <valid>
2033: <foo></foo>
2034: </valid>
2035: <invalid>
2036: <foo>X</foo>
2037: </invalid>
2038: <invalid>
2039: <foo><bar/>X<bar/><bar/></foo>
2040: </invalid>
2041: <invalid>
2042: <foo><bar/><bar/><bar/><bar/></foo>
2043: </invalid>
2044: </testCase>
2045: <testCase>
2046: <section>4.12</section>
2047: <correct>
2048: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2049: <list>
2050: <value>x</value>
2051: <value>y</value>
2052: <value>z</value>
2053: </list>
2054: </element>
2055: </correct>
2056: <valid>
2057: <foo>x y z</foo>
2058: </valid>
2059: <invalid>
2060: <foo>x</foo>
2061: </invalid>
2062: </testCase>
2063: <testCase>
2064: <section>4.12</section>
2065: <section>4.13</section>
2066: <correct>
2067: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2068: <mixed>
2069: <element name="bar">
2070: <empty/>
2071: </element>
2072: <element name="bar">
2073: <empty/>
2074: </element>
2075: <element name="bar">
2076: <empty/>
2077: </element>
2078: </mixed>
2079: </element>
2080: </correct>
2081: <valid>
2082: <foo><bar/><bar/><bar/></foo>
2083: </valid>
2084: <invalid>
2085: <foo><bar/><bar/><bar/><bar/><bar/><bar/></foo>
2086: </invalid>
2087: <invalid>
2088: <foo><bar/><bar/></foo>
2089: </invalid>
2090: <invalid>
2091: <foo><bar/></foo>
2092: </invalid>
2093: <invalid>
2094: <foo></foo>
2095: </invalid>
2096: <valid>
2097: <foo><bar/>X<bar/><bar/></foo>
2098: </valid>
2099: <invalid>
2100: <foo>X</foo>
2101: </invalid>
2102: <invalid>
2103: <foo><bar/><bar/><bar/><bar/></foo>
2104: </invalid>
2105: </testCase>
2106: <testCase>
2107: <section>4.12</section>
2108: <correct>
2109: <element xmlns="http://relaxng.org/ns/structure/1.0">
2110: <name>foo</name>
2111: <element name="bar">
2112: <empty/>
2113: </element>
2114: <element name="bar">
2115: <empty/>
2116: </element>
2117: <element name="bar">
2118: <empty/>
2119: </element>
2120: </element>
2121: </correct>
2122: <valid>
2123: <foo><bar/><bar/><bar/></foo>
2124: </valid>
2125: <invalid>
2126: <foo><bar/><bar/><bar/><bar/><bar/><bar/></foo>
2127: </invalid>
2128: <invalid>
2129: <foo><bar/><bar/></foo>
2130: </invalid>
2131: <invalid>
2132: <foo><bar/></foo>
2133: </invalid>
2134: <invalid>
2135: <foo></foo>
2136: </invalid>
2137: <invalid>
2138: <foo>X</foo>
2139: </invalid>
2140: <invalid>
2141: <foo><bar/>X<bar/><bar/></foo>
2142: </invalid>
2143: <invalid>
2144: <foo><bar/><bar/><bar/><bar/></foo>
2145: </invalid>
2146: </testCase>
2147: <testCase>
2148: <section>4.12</section>
2149: <correct>
2150: <element xmlns="http://relaxng.org/ns/structure/1.0">
2151: <anyName>
2152: <except>
2153: <name>foo</name>
2154: <name>bar</name>
2155: <name>baz</name>
2156: </except>
2157: </anyName>
2158: <empty/>
2159: </element>
2160: </correct>
2161: <valid><xyzzy/></valid>
2162: <invalid><foo/></invalid>
2163: <invalid><bar/></invalid>
2164: <invalid><baz/></invalid>
2165: </testCase>
2166: <testCase>
2167: <section>4.12</section>
2168: <correct>
2169: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2170: <data type="token">
2171: <except>
2172: <value>x</value>
2173: <value>y</value>
2174: <value>z</value>
2175: </except>
2176: </data>
2177: </element>
2178: </correct>
2179: <valid><foo/></valid>
2180: <valid><foo>xyz</foo></valid>
2181: <invalid><foo>x</foo></invalid>
2182: <invalid><foo>y</foo></invalid>
2183: <invalid><foo>y</foo></invalid>
2184: </testCase>
2185: <testCase>
2186: <section>4.12</section>
2187: <correct>
2188: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2189: <attribute name="bar"/>
2190: </element>
2191: </correct>
2192: <valid>
2193: <foo bar=""/>
2194: </valid>
2195: <valid>
2196: <foo bar="x"/>
2197: </valid>
2198: <invalid>
2199: <foo/>
2200: </invalid>
2201: </testCase>
2202: <testCase>
2203: <section>4.12</section>
2204: <correct>
2205: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2206: <attribute>
2207: <name>bar</name>
2208: </attribute>
2209: </element>
2210: </correct>
2211: <valid>
2212: <foo bar=""/>
2213: </valid>
2214: <valid>
2215: <foo bar="x"/>
2216: </valid>
2217: <invalid>
2218: <foo/>
2219: </invalid>
2220: </testCase>
2221: <testCase>
2222: <section>4.12</section>
2223: <correct>
2224: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2225: <group>
2226: <element name="bar">
2227: <empty/>
2228: </element>
2229: <element name="bar">
2230: <empty/>
2231: </element>
2232: <element name="bar">
2233: <empty/>
2234: </element>
2235: </group>
2236: </element>
2237: </correct>
2238: <valid>
2239: <foo><bar/><bar/><bar/></foo>
2240: </valid>
2241: <invalid>
2242: <foo><bar/><bar/><bar/><bar/><bar/><bar/></foo>
2243: </invalid>
2244: <invalid>
2245: <foo><bar/><bar/></foo>
2246: </invalid>
2247: <invalid>
2248: <foo><bar/></foo>
2249: </invalid>
2250: <invalid>
2251: <foo></foo>
2252: </invalid>
2253: <invalid>
2254: <foo>X</foo>
2255: </invalid>
2256: <invalid>
2257: <foo><bar/>X<bar/><bar/></foo>
2258: </invalid>
2259: <invalid>
2260: <foo><bar/><bar/><bar/><bar/></foo>
2261: </invalid>
2262: </testCase>
2263: <testCase>
2264: <section>4.12</section>
2265: <correct>
2266: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2267: <choice>
2268: <element name="bar1">
2269: <empty/>
2270: </element>
2271: <element name="bar2">
2272: <empty/>
2273: </element>
2274: <element name="bar3">
2275: <empty/>
2276: </element>
2277: </choice>
2278: </element>
2279: </correct>
2280: <valid><foo><bar1/></foo></valid>
2281: <valid><foo><bar2/></foo></valid>
2282: <valid><foo><bar3/></foo></valid>
2283: <invalid><foo/></invalid>
2284: </testCase>
2285: <testCase>
2286: <section>4.12</section>
2287: <correct>
2288: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2289: <interleave>
2290: <element name="bar1">
2291: <empty/>
2292: </element>
2293: <element name="bar2">
2294: <empty/>
2295: </element>
2296: <element name="bar3">
2297: <empty/>
2298: </element>
2299: </interleave>
2300: </element>
2301: </correct>
2302: <valid><foo><bar1/><bar2/><bar3/></foo></valid>
2303: <valid><foo><bar1/><bar3/><bar2/></foo></valid>
2304: <valid><foo><bar2/><bar1/><bar3/></foo></valid>
2305: <valid><foo><bar2/><bar3/><bar1/></foo></valid>
2306: <valid><foo><bar3/><bar1/><bar2/></foo></valid>
2307: <valid><foo><bar3/><bar2/><bar1/></foo></valid>
2308: <invalid><foo><bar2/><bar1/></foo></invalid>
2309: <invalid><foo><bar1/><bar3/><bar2/><bar1/></foo></invalid>
2310: </testCase>
2311: <testCase>
2312: <section>4.12</section>
2313: <correct>
2314: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2315: <group>
2316: <element name="bar">
2317: <empty/>
2318: </element>
2319: </group>
2320: </element>
2321: </correct>
2322: <valid><foo><bar/></foo></valid>
2323: <invalid><foo/></invalid>
2324: </testCase>
2325: <testCase>
2326: <section>4.12</section>
2327: <correct>
2328: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2329: <interleave>
2330: <element name="bar">
2331: <empty/>
2332: </element>
2333: </interleave>
2334: </element>
2335: </correct>
2336: <valid><foo><bar/></foo></valid>
2337: <invalid><foo/></invalid>
2338: </testCase>
2339: <testCase>
2340: <section>4.12</section>
2341: <correct>
2342: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2343: <choice>
2344: <element name="bar">
2345: <empty/>
2346: </element>
2347: </choice>
2348: </element>
2349: </correct>
2350: <valid><foo><bar/></foo></valid>
2351: <invalid><foo/></invalid>
2352: </testCase>
2353: </testSuite>
2354: <testSuite>
2355: <section>4.13</section>
2356: <testCase>
2357: <section>4.13</section>
2358: <correct>
2359: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2360: <mixed>
2361: <element name="bar">
2362: <empty/>
2363: </element>
2364: </mixed>
2365: </element>
2366: </correct>
2367: <valid><foo>x<bar/></foo></valid>
2368: <valid><foo><bar/></foo></valid>
2369: <valid><foo><bar/>x</foo></valid>
2370: <valid><foo>x<bar/>y</foo></valid>
2371: <invalid><foo/></invalid>
2372: <invalid><foo><bar/><bar/></foo></invalid>
2373: </testCase>
2374: </testSuite>
2375: <testSuite>
2376: <section>4.14</section>
2377: <testCase>
2378: <section>4.14</section>
2379: <correct>
2380: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2381: <optional>
2382: <element name="bar">
2383: <empty/>
2384: </element>
2385: </optional>
2386: </element>
2387: </correct>
2388: <valid><foo><bar/></foo></valid>
2389: <valid><foo/></valid>
2390: <invalid><foo>x<bar/></foo></invalid>
2391: <invalid><foo><bar/><bar/></foo></invalid>
2392: </testCase>
2393: </testSuite>
2394: <testSuite>
2395: <section>4.15</section>
2396: <testCase>
2397: <section>4.15</section>
2398: <correct>
2399: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2400: <zeroOrMore>
2401: <element name="bar">
2402: <empty/>
2403: </element>
2404: </zeroOrMore>
2405: </element>
2406: </correct>
2407: <valid><foo><bar/></foo></valid>
2408: <valid><foo/></valid>
2409: <invalid><foo>x<bar/></foo></invalid>
2410: <invalid><foo><baz/></foo></invalid>
2411: <valid><foo><bar/><bar/></foo></valid>
2412: </testCase>
2413: </testSuite>
2414: <testSuite>
2415: <section>4.16</section>
2416: <testCase>
2417: <section>4.16</section>
2418: <incorrect>
2419: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2420: <start>
2421: <element>
2422: <anyName>
2423: <except>
2424: <anyName/>
2425: </except>
2426: </anyName>
2427: <empty/>
2428: </element>
2429: </start>
2430: </grammar>
2431: </incorrect>
2432: </testCase>
2433: <testCase>
2434: <section>4.16</section>
2435: <incorrect>
2436: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2437: <start>
2438: <element>
2439: <anyName>
2440: <except>
2441: <choice>
2442: <anyName/>
2443: <name>foo</name>
2444: </choice>
2445: </except>
2446: </anyName>
2447: <empty/>
2448: </element>
2449: </start>
2450: </grammar>
2451: </incorrect>
2452: </testCase>
2453: <testCase>
2454: <section>4.16</section>
2455: <incorrect>
2456: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2457: <start>
2458: <element>
2459: <nsName ns="">
2460: <except>
2461: <nsName ns=""/>
2462: </except>
2463: </nsName>
2464: <empty/>
2465: </element>
2466: </start>
2467: </grammar>
2468: </incorrect>
2469: </testCase>
2470: <testCase>
2471: <section>4.16</section>
2472: <incorrect>
2473: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2474: <start>
2475: <element>
2476: <nsName ns="">
2477: <except>
2478: <choice>
2479: <nsName ns=""/>
2480: <name>foo</name>
2481: </choice>
2482: </except>
2483: </nsName>
2484: <empty/>
2485: </element>
2486: </start>
2487: </grammar>
2488: </incorrect>
2489: </testCase>
2490: <testCase>
2491: <section>4.16</section>
2492: <incorrect>
2493: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2494: <start>
2495: <element>
2496: <nsName ns="">
2497: <except>
2498: <anyName/>
2499: </except>
2500: </nsName>
2501: <empty/>
2502: </element>
2503: </start>
2504: </grammar>
2505: </incorrect>
2506: </testCase>
2507: <testCase>
2508: <section>4.16</section>
2509: <incorrect>
2510: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2511: <start>
2512: <element>
2513: <nsName ns="">
2514: <except>
2515: <choice>
2516: <anyName/>
2517: <name>foo</name>
2518: </choice>
2519: </except>
2520: </nsName>
2521: <empty/>
2522: </element>
2523: </start>
2524: </grammar>
2525: </incorrect>
2526: </testCase>
2527: <testCase>
2528: <section>4.16</section>
2529: <documentation>Tests that 4.16 is before 4.20.</documentation>
2530: <incorrect>
2531: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2532: <start>
2533: <element name="foo">
2534: <zeroOrMore>
2535: <attribute>
2536: <anyName>
2537: <except>
2538: <anyName/>
2539: </except>
2540: </anyName>
2541: <text/>
2542: </attribute>
2543: <notAllowed/>
2544: </zeroOrMore>
2545: </element>
2546: </start>
2547: </grammar>
2548: </incorrect>
2549: </testCase>
2550: <testCase>
2551: <section>4.16</section>
2552: <documentation>Tests that 4.16 is before removal of unreachable definitions.</documentation>
2553: <incorrect>
2554: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2555: <start>
2556: <element name="foo">
2557: <empty/>
2558: </element>
2559: </start>
2560: <define name="bar">
2561: <element>
2562: <anyName>
2563: <except>
2564: <anyName/>
2565: </except>
2566: </anyName>
2567: <empty/>
2568: </element>
2569: </define>
2570: </grammar>
2571: </incorrect>
2572: </testCase>
2573: <testCase>
2574: <section>4.16</section>
2575: <incorrect>
2576: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2577: <attribute name="xmlns">
2578: <text/>
2579: </attribute>
2580: </element>
2581: </incorrect>
2582: </testCase>
2583: <testCase>
2584: <section>4.16</section>
2585: <correct>
2586: <element name="xmlns" xmlns="http://relaxng.org/ns/structure/1.0">
2587: <empty/>
2588: </element>
2589: </correct>
2590: <valid><xmlns/></valid>
2591: </testCase>
2592: <testCase>
2593: <section>4.16</section>
2594: <incorrect>
2595: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2596: <attribute name=" xmlns">
2597: <text/>
2598: </attribute>
2599: </element>
2600: </incorrect>
2601: </testCase>
2602: <testCase>
2603: <section>4.16</section>
2604: <incorrect>
2605: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2606: <optional>
2607: <notAllowed/>
2608: <attribute name="xmlns">
2609: <text/>
2610: </attribute>
2611: </optional>
2612: </element>
2613: </incorrect>
2614: </testCase>
2615: <testCase>
2616: <section>4.16</section>
2617: <incorrect>
2618: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2619: <start>
2620: <element name="foo">
2621: <empty/>
2622: </element>
2623: </start>
2624: <define name="foo">
2625: <attribute name="xmlns">
2626: <text/>
2627: </attribute>
2628: </define>
2629: </grammar>
2630: </incorrect>
2631: </testCase>
2632: <testCase>
2633: <section>4.16</section>
2634: <incorrect>
2635: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2636: <attribute name="xmlns" ns="">
2637: <text/>
2638: </attribute>
2639: </element>
2640: </incorrect>
2641: </testCase>
2642: <testCase>
2643: <section>4.16</section>
2644: <incorrect>
2645: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2646: <attribute>
2647: <choice>
2648: <name ns="">xmlns</name>
2649: <name>foo</name>
2650: </choice>
2651: <text/>
2652: </attribute>
2653: </element>
2654: </incorrect>
2655: </testCase>
2656: <testCase>
2657: <section>4.16</section>
2658: <incorrect>
2659: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2660: <attribute>
2661: <name ns="">xmlns</name>
2662: <text/>
2663: </attribute>
2664: </element>
2665: </incorrect>
2666: </testCase>
2667: <testCase>
2668: <section>4.16</section>
2669: <incorrect>
2670: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2671: <attribute>
2672: <name>xmlns</name>
2673: <text/>
2674: </attribute>
2675: </element>
2676: </incorrect>
2677: </testCase>
2678: <testCase>
2679: <section>4.16</section>
2680: <incorrect>
2681: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2682: <attribute>
2683: <name>
2684: xmlns
2685: </name>
2686: <text/>
2687: </attribute>
2688: </element>
2689: </incorrect>
2690: </testCase>
2691: <testCase>
2692: <section>4.16</section>
2693: <incorrect>
2694: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2695: <attribute>
2696: <choice>
2697: <name>foo</name>
2698: <name ns="">xmlns</name>
2699: </choice>
2700: <text/>
2701: </attribute>
2702: </element>
2703: </incorrect>
2704: </testCase>
2705: <testCase>
2706: <section>4.16</section>
2707: <incorrect>
2708: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2709: <oneOrMore>
2710: <attribute>
2711: <anyName>
2712: <except>
2713: <name>xmlns</name>
2714: </except>
2715: </anyName>
2716: <text/>
2717: </attribute>
2718: </oneOrMore>
2719: </element>
2720: </incorrect>
2721: </testCase>
2722: <testCase>
2723: <section>4.16</section>
2724: <incorrect>
2725: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2726: <oneOrMore>
2727: <attribute>
2728: <nsName ns="">
2729: <except>
2730: <name>xmlns</name>
2731: </except>
2732: </nsName>
2733: <text/>
2734: </attribute>
2735: </oneOrMore>
2736: </element>
2737: </incorrect>
2738: </testCase>
2739: <testCase>
2740: <section>4.16</section>
2741: <incorrect>
2742: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2743: <attribute ns="http://www.w3.org/2000/xmlns" name="bar">
2744: <text/>
2745: </attribute>
2746: </element>
2747: </incorrect>
2748: </testCase>
2749: <testCase>
2750: <section>4.16</section>
2751: <correct>
2752: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" ns="http://www.w3.org/2000/xmlns">
2753: <empty/>
2754: </element>
2755: </correct>
2756: <valid><foo xmlns="http://www.w3.org/2000/xmlns"/></valid>
2757: </testCase>
2758: <testCase>
2759: <section>4.16</section>
2760: <incorrect>
2761: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2762: <data type="token">
2763: <param name="minLength">2</param>
2764: </data>
2765: </element>
2766: </incorrect>
2767: </testCase>
2768: <testCase>
2769: <section>4.16</section>
2770: <incorrect>
2771: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2772: <data type="tok"/>
2773: </element>
2774: </incorrect>
2775: </testCase>
2776: <testCase>
2777: <section>4.16</section>
2778: <incorrect>
2779: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2780: <value type="tok"/>
2781: </element>
2782: </incorrect>
2783: </testCase>
2784: <testCase>
2785: <section>4.16</section>
2786: <incorrect>
2787: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2788: <optional>
2789: <notAllowed/>
2790: <data type="token">
2791: <param name="minLength">2</param>
2792: </data>
2793: </optional>
2794: </element>
2795: </incorrect>
2796: </testCase>
2797: <testCase>
2798: <section>4.16</section>
2799: <incorrect>
2800: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2801: <optional>
2802: <notAllowed/>
2803: <data type="tok"/>
2804: </optional>
2805: </element>
2806: </incorrect>
2807: </testCase>
2808: <testCase>
2809: <section>4.16</section>
2810: <incorrect>
2811: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
2812: <optional>
2813: <notAllowed/>
2814: <value type="tok"/>
2815: </optional>
2816: </element>
2817: </incorrect>
2818: </testCase>
2819: <testCase>
2820: <section>4.16</section>
2821: <incorrect>
2822: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2823: <start>
2824: <element name="foo">
2825: <empty/>
2826: </element>
2827: </start>
2828: <define name="foo">
2829: <data type="token">
2830: <param name="minLength">2</param>
2831: </data>
2832: </define>
2833: </grammar>
2834: </incorrect>
2835: </testCase>
2836: <testCase>
2837: <section>4.16</section>
2838: <incorrect>
2839: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2840: <start>
2841: <element name="foo">
2842: <empty/>
2843: </element>
2844: </start>
2845: <define name="foo">
2846: <data type="tok"/>
2847: </define>
2848: </grammar>
2849: </incorrect>
2850: </testCase>
2851: <testCase>
2852: <section>4.16</section>
2853: <incorrect>
2854: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2855: <start>
2856: <element name="foo">
2857: <empty/>
2858: </element>
2859: </start>
2860: <define name="foo">
2861: <value type="tok"/>
2862: </define>
2863: </grammar>
2864: </incorrect>
2865: </testCase>
2866: </testSuite>
2867: <testSuite>
2868: <section>4.17</section>
2869: <testCase>
2870: <section>4.17</section>
2871: <incorrect>
2872: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2873: <start>
2874: <ref name="x"/>
2875: </start>
2876: <define name="x">
2877: <element name="foo1">
2878: <empty/>
2879: </element>
2880: </define>
2881: <define name="x" combine="choice">
2882: <element name="foo2">
2883: <empty/>
2884: </element>
2885: </define>
2886: <define name="x">
2887: <element name="foo3">
2888: <empty/>
2889: </element>
2890: </define>
2891: </grammar>
2892: </incorrect>
2893: </testCase>
2894: <testCase>
2895: <section>4.17</section>
2896: <incorrect>
2897: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2898: <start name="x">
2899: <element name="foo1">
2900: <empty/>
2901: </element>
2902: </start>
2903: <start name="x" combine="choice">
2904: <element name="foo2">
2905: <empty/>
2906: </element>
2907: </start>
2908: <start name="x">
2909: <element name="foo3">
2910: <empty/>
2911: </element>
2912: </start>
2913: </grammar>
2914: </incorrect>
2915: </testCase>
2916: <testCase>
2917: <section>4.17</section>
2918: <incorrect>
2919: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2920: <start>
2921: <ref name="x"/>
2922: </start>
2923: <define name="x">
2924: <element name="foo1">
2925: <empty/>
2926: </element>
2927: </define>
2928: <define name="x">
2929: <element name="foo2">
2930: <empty/>
2931: </element>
2932: </define>
2933: </grammar>
2934: </incorrect>
2935: </testCase>
2936: <testCase>
2937: <section>4.17</section>
2938: <incorrect>
2939: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2940: <start name="x">
2941: <element name="foo1">
2942: <empty/>
2943: </element>
2944: </start>
2945: <start name="x">
2946: <element name="foo2">
2947: <empty/>
2948: </element>
2949: </start>
2950: </grammar>
2951: </incorrect>
2952: </testCase>
2953: <testCase>
2954: <section>4.17</section>
2955: <correct>
2956: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2957: <start>
2958: <ref name="x"/>
2959: </start>
2960: <define name="x" combine="choice">
2961: <element name="foo1">
2962: <empty/>
2963: </element>
2964: </define>
2965: <define name="x" combine="choice">
2966: <element name="foo2">
2967: <empty/>
2968: </element>
2969: </define>
2970: <define name="x">
2971: <element name="foo3">
2972: <empty/>
2973: </element>
2974: </define>
2975: </grammar>
2976: </correct>
2977: <valid>
2978: <foo1/>
2979: </valid>
2980: <valid>
2981: <foo2/>
2982: </valid>
2983: <valid>
2984: <foo3/>
2985: </valid>
2986: <invalid>
2987: <foo4/>
2988: </invalid>
2989: </testCase>
2990: <testCase>
2991: <section>4.17</section>
2992: <correct>
2993: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
2994: <start combine="choice">
2995: <element name="foo1">
2996: <empty/>
2997: </element>
2998: </start>
2999: <start combine="choice">
3000: <element name="foo2">
3001: <empty/>
3002: </element>
3003: </start>
3004: <start>
3005: <element name="foo3">
3006: <empty/>
3007: </element>
3008: </start>
3009: </grammar>
3010: </correct>
3011: <valid>
3012: <foo1/>
3013: </valid>
3014: <valid>
3015: <foo2/>
3016: </valid>
3017: <valid>
3018: <foo3/>
3019: </valid>
3020: <invalid>
3021: <foo4/>
3022: </invalid>
3023: </testCase>
3024: <testCase>
3025: <section>4.17</section>
3026: <incorrect>
3027: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3028: <start>
3029: <element name="foo">
3030: <ref name="x"/>
3031: </element>
3032: </start>
3033: <define name="x" combine="choice">
3034: <element name="bar1">
3035: <empty/>
3036: </element>
3037: </define>
3038: <define name="x">
3039: <element name="bar2">
3040: <empty/>
3041: </element>
3042: </define>
3043: <define name="x" combine="interleave">
3044: <element name="bar3">
3045: <empty/>
3046: </element>
3047: </define>
3048: </grammar>
3049: </incorrect>
3050: </testCase>
3051: <testCase>
3052: <section>4.17</section>
3053: <incorrect>
3054: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
3055: <grammar>
3056: <start name="x" combine="choice">
3057: <element name="bar1">
3058: <empty/>
3059: </element>
3060: </start>
3061: <start name="x">
3062: <element name="bar2">
3063: <empty/>
3064: </element>
3065: </start>
3066: <start name="x" combine="interleave">
3067: <element name="bar3">
3068: <empty/>
3069: </element>
3070: </start>
3071: </grammar>
3072: </element>
3073: </incorrect>
3074: </testCase>
3075: <testCase>
3076: <section>4.17</section>
3077: <correct>
3078: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3079: <start>
3080: <element name="foo">
3081: <ref name="x"/>
3082: </element>
3083: </start>
3084: <define name="x" combine="interleave">
3085: <element name="bar1">
3086: <empty/>
3087: </element>
3088: </define>
3089: <define name="x" combine="interleave">
3090: <element name="bar2">
3091: <empty/>
3092: </element>
3093: </define>
3094: <define name="x">
3095: <element name="bar3">
3096: <empty/>
3097: </element>
3098: </define>
3099: </grammar>
3100: </correct>
3101: <valid>
3102: <foo><bar1/><bar2/><bar3/></foo>
3103: </valid>
3104: <valid>
3105: <foo><bar1/><bar3/><bar2/></foo>
3106: </valid>
3107: <valid>
3108: <foo><bar2/><bar3/><bar1/></foo>
3109: </valid>
3110: <invalid>
3111: <foo><bar2/><bar3/><bar1/><bar2/></foo>
3112: </invalid>
3113: </testCase>
3114: <testCase>
3115: <section>4.17</section>
3116: <correct>
3117: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
3118: <grammar>
3119: <start combine="interleave">
3120: <element name="bar1">
3121: <empty/>
3122: </element>
3123: </start>
3124: <start>
3125: <element name="bar2">
3126: <empty/>
3127: </element>
3128: </start>
3129: <start combine="interleave">
3130: <element name="bar3">
3131: <empty/>
3132: </element>
3133: </start>
3134: </grammar>
3135: </element>
3136: </correct>
3137: <valid>
3138: <foo><bar1/><bar2/><bar3/></foo>
3139: </valid>
3140: <valid>
3141: <foo><bar1/><bar3/><bar2/></foo>
3142: </valid>
3143: <valid>
3144: <foo><bar2/><bar3/><bar1/></foo>
3145: </valid>
3146: <invalid>
3147: <foo><bar2/><bar3/><bar1/><bar2/></foo>
3148: </invalid>
3149: </testCase>
3150: <testCase>
3151: <section>4.17</section>
3152: <incorrect>
3153: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3154: <start>
3155: <element name="foo">
3156: <ref name="x"/>
3157: </element>
3158: </start>
3159: <define name="x">
3160: <element name="bar1">
3161: <empty/>
3162: </element>
3163: </define>
3164: <define name="x" combine="interleave">
3165: <element name="bar2">
3166: <empty/>
3167: </element>
3168: </define>
3169: <define name="x">
3170: <element name="bar3">
3171: <empty/>
3172: </element>
3173: </define>
3174: </grammar>
3175: </incorrect>
3176: </testCase>
3177: <testCase>
3178: <section>4.17</section>
3179: <incorrect>
3180: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
3181: <grammar>
3182: <start name="x">
3183: <element name="bar1">
3184: <empty/>
3185: </element>
3186: </start>
3187: <start name="x" combine="interleave">
3188: <element name="bar2">
3189: <empty/>
3190: </element>
3191: </start>
3192: <start name="x">
3193: <element name="bar3">
3194: <empty/>
3195: </element>
3196: </start>
3197: </grammar>
3198: </element>
3199: </incorrect>
3200: </testCase>
3201: </testSuite>
3202: <testSuite>
3203: <section>4.18</section>
3204: <testCase>
3205: <section>4.18</section>
3206: <documentation>grammar must have a start</documentation>
3207: <incorrect>
3208: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3209: <define name="foo">
3210: <element name="foo">
3211: <empty/>
3212: </element>
3213: </define>
3214: </grammar>
3215: </incorrect>
3216: </testCase>
3217: <testCase>
3218: <section>4.18</section>
3219: <documentation>4.17 is before 4.18</documentation>
3220: <incorrect>
3221: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3222: <start>
3223: <element name="foo">
3224: <empty/>
3225: </element>
3226: </start>
3227: <define name="bar">
3228: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3229: <define name="foo">
3230: <element name="foo">
3231: <empty/>
3232: </element>
3233: </define>
3234: </grammar>
3235: </define>
3236: </grammar>
3237: </incorrect>
3238: </testCase>
3239: <testCase>
3240: <section>4.18</section>
3241: <documentation>4.17 is before 4.19</documentation>
3242: <incorrect>
3243: <choice xmlns="http://relaxng.org/ns/structure/1.0">
3244: <element name="foo">
3245: <empty/>
3246: </element>
3247: <group>
3248: <notAllowed/>
3249: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3250: <define name="foo">
3251: <element name="foo">
3252: <empty/>
3253: </element>
3254: </define>
3255: </grammar>
3256: </group>
3257: </choice>
3258: </incorrect>
3259: </testCase>
3260: <testCase>
3261: <section>4.18</section>
3262: <documentation>every ref must have a def</documentation>
3263: <incorrect>
3264: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3265: <start>
3266: <ref name="foo"/>
3267: </start>
3268: </grammar>
3269: </incorrect>
3270: </testCase>
3271: <testCase>
3272: <section>4.18</section>
3273: <documentation>4.17 is before 4.18</documentation>
3274: <incorrect>
3275: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3276: <start>
3277: <element name="foo">
3278: <empty/>
3279: </element>
3280: </start>
3281: <define name="foo">
3282: <ref name="bar"/>
3283: </define>
3284: </grammar>
3285: </incorrect>
3286: </testCase>
3287: <testCase>
3288: <section>4.18</section>
3289: <documentation>4.17 is before 4.19</documentation>
3290: <incorrect>
3291: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3292: <start>
3293: <choice>
3294: <element name="foo">
3295: <empty/>
3296: </element>
3297: <group>
3298: <notAllowed/>
3299: <ref name="foo"/>
3300: </group>
3301: </choice>
3302: </start>
3303: </grammar>
3304: </incorrect>
3305: </testCase>
3306: <testCase>
3307: <section>4.18</section>
3308: <documentation>every parentRef must have a def</documentation>
3309: <incorrect>
3310: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3311: <start>
3312: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3313: <start>
3314: <parentRef name="foo"/>
3315: </start>
3316: <define name="foo">
3317: <element name="foo">
3318: <empty/>
3319: </element>
3320: </define>
3321: </grammar>
3322: </start>
3323: </grammar>
3324: </incorrect>
3325: </testCase>
3326: <testCase>
3327: <section>4.18</section>
3328: <documentation>4.17 is before 4.18</documentation>
3329: <incorrect>
3330: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3331: <start>
3332: <element name="foo">
3333: <empty/>
3334: </element>
3335: </start>
3336: <define name="bar">
3337: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3338: <start>
3339: <parentRef name="foo"/>
3340: </start>
3341: <define name="foo">
3342: <element name="foo">
3343: <empty/>
3344: </element>
3345: </define>
3346: </grammar>
3347: </define>
3348: </grammar>
3349: </incorrect>
3350: </testCase>
3351: <testCase>
3352: <section>4.18</section>
3353: <documentation>4.17 is before 4.19</documentation>
3354: <incorrect>
3355: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3356: <start>
3357: <choice>
3358: <element name="foo">
3359: <empty/>
3360: </element>
3361: <group>
3362: <notAllowed/>
3363: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3364: <start>
3365: <parentRef name="foo"/>
3366: </start>
3367: <define name="foo">
3368: <element name="foo">
3369: <empty/>
3370: </element>
3371: </define>
3372: </grammar>
3373: </group>
3374: </choice>
3375: </start>
3376: </grammar>
3377: </incorrect>
3378: </testCase>
3379: <testCase>
3380: <section>4.18</section>
3381: <incorrect>
3382: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3383: <start>
3384: <ref name="foo"/>
3385: </start>
3386: <define name="foo">
3387: <choice>
3388: <element name="foo">
3389: <empty/>
3390: </element>
3391: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3392: <start>
3393: <parentRef name="foo"/>
3394: </start>
3395: </grammar>
3396: </choice>
3397: </define>
3398: </grammar>
3399: </incorrect>
3400: </testCase>
3401: <testCase>
3402: <section>4.18</section>
3403: <correct>
3404: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3405: <start>
3406: <ref name="foo"/>
3407: </start>
3408: <define name="foo">
3409: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3410: <start>
3411: <ref name="foo"/>
3412: </start>
3413: <define name="foo">
3414: <element name="foo">
3415: <empty/>
3416: </element>
3417: </define>
3418: </grammar>
3419: </define>
3420: </grammar>
3421: </correct>
3422: <valid><foo/></valid>
3423: </testCase>
3424: <testCase>
3425: <section>4.18</section>
3426: <correct>
3427: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3428: <start>
3429: <grammar>
3430: <start>
3431: <ref name="foo"/>
3432: </start>
3433: <define name="foo">
3434: <element name="innerFoo">
3435: <parentRef name="foo"/>
3436: </element>
3437: </define>
3438: </grammar>
3439: </start>
3440: <define name="foo">
3441: <element name="outerFoo">
3442: <empty/>
3443: </element>
3444: </define>
3445: </grammar>
3446: </correct>
3447: <valid><innerFoo><outerFoo/></innerFoo></valid>
3448: <invalid><outerFoo/></invalid>
3449: </testCase>
3450: <testCase>
3451: <section>4.18</section>
3452: <correct>
3453: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3454: <start>
3455: <ref name="foo"/>
3456: </start>
3457: <define name="foo">
3458: <element name="outerFoo">
3459: <grammar>
3460: <start>
3461: <ref name="foo"/>
3462: </start>
3463: <define name="foo">
3464: <element name="innerFoo">
3465: <empty/>
3466: </element>
3467: </define>
3468: </grammar>
3469: </element>
3470: </define>
3471: </grammar>
3472: </correct>
3473: <valid><outerFoo><innerFoo/></outerFoo></valid>
3474: <invalid><innerFoo/></invalid>
3475: </testCase>
3476: </testSuite>
3477: <testSuite>
3478: <section>4.19</section>
3479: <testCase>
3480: <section>4.19</section>
3481: <incorrect>
3482: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3483: <start>
3484: <element name="foo">
3485: <ref name="bar"/>
3486: </element>
3487: </start>
3488: <define name="bar">
3489: <optional>
3490: <element name="bar">
3491: <empty/>
3492: </element>
3493: <ref name="bar"/>
3494: </optional>
3495: </define>
3496: </grammar>
3497: </incorrect>
3498: </testCase>
3499: <testCase>
3500: <section>4.19</section>
3501: <correct>
3502: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3503: <start>
3504: <element name="foo">
3505: <ref name="bar"/>
3506: </element>
3507: </start>
3508: <define name="bar">
3509: <element name="bar">
3510: <optional>
3511: <ref name="bar"/>
3512: </optional>
3513: </element>
3514: </define>
3515: </grammar>
3516: </correct>
3517: <valid>
3518: <foo><bar/></foo>
3519: </valid>
3520: <valid>
3521: <foo><bar><bar/></bar></foo>
3522: </valid>
3523: <invalid>
3524: <foo/>
3525: </invalid>
3526: </testCase>
3527: <testCase>
3528: <section>4.19</section>
3529: <correct>
3530: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3531: <start>
3532: <element name="foo">
3533: <empty/>
3534: </element>
3535: </start>
3536: <define name="bar">
3537: <ref name="bar"/>
3538: </define>
3539: </grammar>
3540: </correct>
3541: <valid><foo/></valid>
3542: </testCase>
3543: <testCase>
3544: <section>4.19</section>
3545: <section>4.20</section>
3546: <documentation>Tests that recursion detection happens before
3547: normalization of notAllowed.</documentation>
3548: <incorrect>
3549: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3550: <start>
3551: <choice>
3552: <element name="foo">
3553: <empty/>
3554: </element>
3555: <group>
3556: <notAllowed/>
3557: <ref name="bar"/>
3558: </group>
3559: </choice>
3560: </start>
3561: <define name="bar">
3562: <element name="bar">
3563: <empty/>
3564: </element>
3565: <optional>
3566: <ref name="bar"/>
3567: </optional>
3568: </define>
3569: </grammar>
3570: </incorrect>
3571: </testCase>
3572: </testSuite>
3573: </testSuite>
3574: <testSuite>
3575: <section>6</section>
3576: <testSuite>
3577: <section>6.1</section>
3578: <testCase>
3579: <section>6.1</section>
3580: <correct>
3581: <element xmlns="http://relaxng.org/ns/structure/1.0">
3582: <anyName/>
3583: <empty/>
3584: </element>
3585: </correct>
3586: <valid>
3587: <foo/>
3588: </valid>
3589: <valid>
3590: <foo xmlns="http://www.example.com"/>
3591: </valid>
3592: </testCase>
3593: <testCase>
3594: <section>6.1</section>
3595: <correct>
3596: <element xmlns="http://relaxng.org/ns/structure/1.0">
3597: <anyName>
3598: <except>
3599: <name ns="">foo</name>
3600: </except>
3601: </anyName>
3602: <empty/>
3603: </element>
3604: </correct>
3605: <invalid>
3606: <foo/>
3607: </invalid>
3608: <valid>
3609: <foo xmlns="http://www.example.com"/>
3610: </valid>
3611: <valid>
3612: <bar/>
3613: </valid>
3614: </testCase>
3615: <testCase>
3616: <section>6.1</section>
3617: <correct>
3618: <element xmlns="http://relaxng.org/ns/structure/1.0">
3619: <anyName>
3620: <except>
3621: <nsName ns=""/>
3622: </except>
3623: </anyName>
3624: <empty/>
3625: </element>
3626: </correct>
3627: <invalid>
3628: <foo/>
3629: </invalid>
3630: <valid>
3631: <foo xmlns="http://www.example.com"/>
3632: </valid>
3633: </testCase>
3634: <testCase>
3635: <section>6.1</section>
3636: <correct>
3637: <element xmlns="http://relaxng.org/ns/structure/1.0">
3638: <nsName ns=""/>
3639: <empty/>
3640: </element>
3641: </correct>
3642: <valid>
3643: <foo/>
3644: </valid>
3645: <invalid>
3646: <foo xmlns="http://www.example.com"/>
3647: </invalid>
3648: </testCase>
3649: <testCase>
3650: <section>6.1</section>
3651: <correct>
3652: <element xmlns="http://relaxng.org/ns/structure/1.0">
3653: <nsName ns="http://www.example.com"/>
3654: <empty/>
3655: </element>
3656: </correct>
3657: <invalid>
3658: <foo/>
3659: </invalid>
3660: <invalid>
3661: <foo xmlns="HTTP://www.example.com"/>
3662: </invalid>
3663: <invalid>
3664: <foo xmlns="http://www.example.com/"/>
3665: </invalid>
3666: <valid>
3667: <foo xmlns="http://www.example.com"/>
3668: </valid>
3669: </testCase>
3670: <testCase>
3671: <section>6.1</section>
3672: <correct>
3673: <element xmlns="http://relaxng.org/ns/structure/1.0">
3674: <nsName ns="http://www.example.com">
3675: <except>
3676: <name ns="http://www.example.com">foo</name>
3677: </except>
3678: </nsName>
3679: <empty/>
3680: </element>
3681: </correct>
3682: <invalid>
3683: <foo/>
3684: </invalid>
3685: <invalid>
3686: <foo xmlns="http://www.example.com"/>
3687: </invalid>
3688: <valid>
3689: <bar xmlns="http://www.example.com"/>
3690: </valid>
3691: </testCase>
3692: <testCase>
3693: <section>6.1</section>
3694: <correct>
3695: <element xmlns="http://relaxng.org/ns/structure/1.0">
3696: <nsName ns="http://www.example.com">
3697: <except>
3698: <name ns="">foo</name>
3699: </except>
3700: </nsName>
3701: <empty/>
3702: </element>
3703: </correct>
3704: <invalid>
3705: <bar/>
3706: </invalid>
3707: <invalid>
3708: <foo/>
3709: </invalid>
3710: <valid>
3711: <foo xmlns="http://www.example.com"/>
3712: </valid>
3713: <valid>
3714: <bar xmlns="http://www.example.com"/>
3715: </valid>
3716: </testCase>
3717: <testCase>
3718: <section>6.1</section>
3719: <correct>
3720: <element xmlns="http://relaxng.org/ns/structure/1.0">
3721: <name ns="http://www.example.com">foo</name>
3722: <empty/>
3723: </element>
3724: </correct>
3725: <valid>
3726: <foo xmlns="http://www.example.com"/>
3727: </valid>
3728: <invalid>
3729: <foo/>
3730: </invalid>
3731: <invalid>
3732: <bar xmlns="http://www.example.com"/>
3733: </invalid>
3734: <invalid>
3735: <foo xmlns="http://www.example.org"/>
3736: </invalid>
3737: </testCase>
3738: <testCase>
3739: <section>6.1</section>
3740: <correct>
3741: <element xmlns="http://relaxng.org/ns/structure/1.0">
3742: <name ns="">foo</name>
3743: <empty/>
3744: </element>
3745: </correct>
3746: <invalid>
3747: <foo xmlns="http://www.example.com"/>
3748: </invalid>
3749: <valid>
3750: <foo/>
3751: </valid>
3752: <invalid>
3753: <bar xmlns="http://www.example.com"/>
3754: </invalid>
3755: <invalid>
3756: <bar/>
3757: </invalid>
3758: </testCase>
3759: <testCase>
3760: <section>6.1</section>
3761: <correct>
3762: <element xmlns="http://relaxng.org/ns/structure/1.0">
3763: <choice>
3764: <name ns="">foo</name>
3765: <name ns="">bar</name>
3766: </choice>
3767: <empty/>
3768: </element>
3769: </correct>
3770: <invalid>
3771: <baz/>
3772: </invalid>
3773: <valid>
3774: <foo/>
3775: </valid>
3776: <valid>
3777: <bar/>
3778: </valid>
3779: </testCase>
3780: </testSuite>
3781: <testSuite>
3782: <section>6.2</section>
3783: <testSuite>
3784: <section>6.2.1</section>
3785: <testCase>
3786: <section>6.2.1</section>
3787: <correct>
3788: <choice xmlns="http://relaxng.org/ns/structure/1.0">
3789: <element name="foo">
3790: <empty/>
3791: </element>
3792: <element name="bar">
3793: <empty/>
3794: </element>
3795: </choice>
3796: </correct>
3797: <valid>
3798: <foo/>
3799: </valid>
3800: <valid>
3801: <bar/>
3802: </valid>
3803: <invalid>
3804: <baz/>
3805: </invalid>
3806: </testCase>
3807: <testCase>
3808: <section>6.2.1</section>
3809: <correct>
3810: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
3811: <choice>
3812: <group>
3813: <element name="bar1">
3814: <empty/>
3815: </element>
3816: <element name="bar2">
3817: <empty/>
3818: </element>
3819: </group>
3820: <group>
3821: <element name="bar1">
3822: <empty/>
3823: </element>
3824: <element name="bar3">
3825: <empty/>
3826: </element>
3827: </group>
3828: </choice>
3829: </element>
3830: </correct>
3831: <valid>
3832: <foo><bar1/><bar2/></foo>
3833: </valid>
3834: <valid>
3835: <foo><bar1/><bar3/></foo>
3836: </valid>
3837: <invalid>
3838: <foo><bar1/></foo>
3839: </invalid>
3840: <invalid>
3841: <foo/>
3842: </invalid>
3843: <invalid>
3844: <foo><bar2/></foo>
3845: </invalid>
3846: <invalid>
3847: <foo><bar3/></foo>
3848: </invalid>
3849: <invalid>
3850: <foo><bar1/><bar2/><bar3/></foo>
3851: </invalid>
3852: </testCase>
3853: <testCase>
3854: <section>6.2.1</section>
3855: <correct>
3856: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
3857: <choice>
3858: <group>
3859: <attribute name="bar1">
3860: <text/>
3861: </attribute>
3862: <attribute name="bar2">
3863: <text/>
3864: </attribute>
3865: </group>
3866: <group>
3867: <attribute name="bar1">
3868: <text/>
3869: </attribute>
3870: <attribute name="bar3">
3871: <text/>
3872: </attribute>
3873: </group>
3874: </choice>
3875: </element>
3876: </correct>
3877: <valid>
3878: <foo bar1="x" bar2="x"/>
3879: </valid>
3880: <valid>
3881: <foo bar1="x" bar3="x"/>
3882: </valid>
3883: <invalid>
3884: <foo/>
3885: </invalid>
3886: <invalid>
3887: <foo bar1="x"/>
3888: </invalid>
3889: <invalid>
3890: <foo bar2="x"/>
3891: </invalid>
3892: <invalid>
3893: <foo bar3="x"/>
3894: </invalid>
3895: <invalid>
3896: <foo bar1="x" bar2="x" bar3="x"/>
3897: </invalid>
3898: </testCase>
3899: <testCase>
3900: <section>6.2.1</section>
3901: <correct>
3902: <choice xmlns="http://relaxng.org/ns/structure/1.0">
3903: <element name="foo">
3904: <element name="bar">
3905: <empty/>
3906: </element>
3907: </element>
3908: <element name="foo">
3909: <element name="baz">
3910: <empty/>
3911: </element>
3912: </element>
3913: </choice>
3914: </correct>
3915: <valid>
3916: <foo><bar/></foo>
3917: </valid>
3918: <valid>
3919: <foo><baz/></foo>
3920: </valid>
3921: <invalid>
3922: <foo/>
3923: </invalid>
3924: <invalid>
3925: <foo><bar/><bar/></foo>
3926: </invalid>
3927: <invalid>
3928: <foo><foo/></foo>
3929: </invalid>
3930: <invalid>
3931: <bar/>
3932: </invalid>
3933: <invalid>
3934: <fobaz/>
3935: </invalid>
3936: </testCase>
3937: </testSuite>
3938: <testSuite>
3939: <section>6.2.2</section>
3940: <testCase>
3941: <section>6.2.2</section>
3942: <correct>
3943: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
3944: <group>
3945: <element name="bar">
3946: <empty/>
3947: </element>
3948: <element name="baz">
3949: <empty/>
3950: </element>
3951: </group>
3952: </element>
3953: </correct>
3954: <valid>
3955: <foo><bar/><baz/></foo>
3956: </valid>
3957: <invalid>
3958: <foo><baz/><bar/></foo>
3959: </invalid>
3960: <invalid>
3961: <foo><bar/><baz/><bar/><baz/></foo>
3962: </invalid>
3963: <invalid>
3964: <foo/>
3965: </invalid>
3966: <invalid>
3967: <foo><bar/></foo>
3968: </invalid>
3969: <invalid>
3970: <foo><baz/></foo>
3971: </invalid>
3972: </testCase>
3973: <testCase>
3974: <section>6.2.2</section>
3975: <correct>
3976: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
3977: <group>
3978: <attribute name="bar">
3979: <text/>
3980: </attribute>
3981: <attribute name="baz">
3982: <text/>
3983: </attribute>
3984: </group>
3985: </element>
3986: </correct>
3987: <valid>
3988: <foo bar="x" baz="x"/>
3989: </valid>
3990: <invalid>
3991: <foo/>
3992: </invalid>
3993: </testCase>
3994: <testCase>
3995: <section>6.2.2</section>
3996: <correct>
3997: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
3998: <group>
3999: <attribute name="bar">
4000: <text/>
4001: </attribute>
4002: <attribute name="baz">
4003: <text/>
4004: </attribute>
4005: </group>
4006: </element>
4007: </correct>
4008: <valid>
4009: <foo bar="x" baz="x"/>
4010: </valid>
4011: <invalid>
4012: <foo/>
4013: </invalid>
4014: <invalid>
4015: <foo bar="x"/>
4016: </invalid>
4017: <invalid>
4018: <foo baz="x"/>
4019: </invalid>
4020: </testCase>
4021: <testCase>
4022: <section>6.2.2</section>
4023: <correct>
4024: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4025: <group>
4026: <attribute name="baz">
4027: <text/>
4028: </attribute>
4029: <attribute name="bar">
4030: <text/>
4031: </attribute>
4032: </group>
4033: </element>
4034: </correct>
4035: <valid>
4036: <foo bar="x" baz="x"/>
4037: </valid>
4038: <invalid>
4039: <foo/>
4040: </invalid>
4041: <invalid>
4042: <foo bar="x"/>
4043: </invalid>
4044: <invalid>
4045: <foo baz="x"/>
4046: </invalid>
4047: </testCase>
4048: <testCase>
4049: <section>6.2.2</section>
4050: <correct>
4051: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4052: <group>
4053: <attribute name="bar">
4054: <text/>
4055: </attribute>
4056: <element name="baz">
4057: <empty/>
4058: </element>
4059: </group>
4060: </element>
4061: </correct>
4062: <valid>
4063: <foo bar="x"><baz/></foo>
4064: </valid>
4065: <invalid>
4066: <foo><baz/></foo>
4067: </invalid>
4068: <invalid>
4069: <foo bar="x"/>
4070: </invalid>
4071: <invalid>
4072: <foo baz="x"><bar/></foo>
4073: </invalid>
4074: </testCase>
4075: <testCase>
4076: <section>6.2.2</section>
4077: <correct>
4078: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4079: <group>
4080: <element name="baz">
4081: <empty/>
4082: </element>
4083: <attribute name="bar">
4084: <text/>
4085: </attribute>
4086: </group>
4087: </element>
4088: </correct>
4089: <valid>
4090: <foo bar="x"><baz/></foo>
4091: </valid>
4092: <invalid>
4093: <foo><baz/></foo>
4094: </invalid>
4095: <invalid>
4096: <foo bar="x"/>
4097: </invalid>
4098: <invalid>
4099: <foo baz="x"><bar/></foo>
4100: </invalid>
4101: </testCase>
4102: </testSuite>
4103: <testSuite>
4104: <section>6.2.3</section>
4105: <testCase>
4106: <section>6.2.3</section>
4107: <correct>
4108: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4109: <empty/>
4110: </element>
4111: </correct>
4112: <valid>
4113: <foo/>
4114: </valid>
4115: <valid>
4116: <foo> </foo>
4117: </valid>
4118: <valid>
4119: <foo>
4120:
4121:
4122: </foo>
4123: </valid>
4124: <valid>
4125: <foo>
4126: <?target data?>
4127: <?target data?>
4128: <?target data?>
4129: <?target data?>
4130: </foo>
4131: </valid>
4132: <invalid>
4133: <foo>x</foo>
4134: </invalid>
4135: <invalid>
4136: <foo><bar/></foo>
4137: </invalid>
4138: <invalid>
4139: <foo bar="x"/>
4140: </invalid>
4141: </testCase>
4142: <testCase>
4143: <section>6.2.3</section>
4144: <correct>
4145: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4146: <attribute name="bar">
4147: <empty/>
4148: </attribute>
4149: </element>
4150: </correct>
4151: <valid><foo bar=""/></valid>
4152: <valid><foo bar=" "/></valid>
4153: <invalid><foo bar="x"/></invalid>
4154: </testCase>
4155: <testCase>
4156: <section>6.2.3</section>
4157: <correct>
4158: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4159: <list>
4160: <empty/>
4161: </list>
4162: </element>
4163: </correct>
4164: <valid><foo/></valid>
4165: <valid><foo> </foo></valid>
4166: <invalid><foo>x</foo></invalid>
4167: <invalid><foo><bar/></foo></invalid>
4168: <invalid><foo bar=""/></invalid>
4169: </testCase>
4170: <testCase>
4171: <section>6.2.3</section>
4172: <correct>
4173: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4174: <attribute name="bar">
4175: <list>
4176: <empty/>
4177: </list>
4178: </attribute>
4179: </element>
4180: </correct>
4181: <valid><foo bar=""/></valid>
4182: <valid><foo bar=" "/></valid>
4183: <invalid><foo bar="x"/></invalid>
4184: </testCase>
4185: <testCase>
4186: <section>6.2.3</section>
4187: <correct>
4188: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4189: <group>
4190: <element name="bar">
4191: <empty/>
4192: </element>
4193: <choice>
4194: <empty/>
4195: <element name="baz">
4196: <empty/>
4197: </element>
4198: </choice>
4199: </group>
4200: </element>
4201: </correct>
4202: <valid>
4203: <foo><bar/><baz/></foo>
4204: </valid>
4205: <valid>
4206: <foo><bar/></foo>
4207: </valid>
4208: <invalid>
4209: <foo></foo>
4210: </invalid>
4211: <invalid>
4212: <foo><bar/><baz/><baz/></foo>
4213: </invalid>
4214: </testCase>
4215: <testCase>
4216: <correct>
4217: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4218: <choice>
4219: <empty/>
4220: <attribute name="bar">
4221: <text/>
4222: </attribute>
4223: </choice>
4224: </element>
4225: </correct>
4226: <valid>
4227: <foo bar="x"/>
4228: </valid>
4229: <valid>
4230: <foo/>
4231: </valid>
4232: <invalid>
4233: <foo baz="x"/>
4234: </invalid>
4235: <invalid>
4236: <foo><bar/></foo>
4237: </invalid>
4238: </testCase>
4239: </testSuite>
4240: <testSuite>
4241: <section>6.2.4</section>
4242: <testCase>
4243: <section>6.2.4</section>
4244: <correct>
4245: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4246: <text/>
4247: </element>
4248: </correct>
4249: <valid>
4250: <foo/>
4251: </valid>
4252: <valid>
4253: <foo> </foo>
4254: </valid>
4255: <valid>
4256: <foo>x</foo>
4257: </valid>
4258: <valid>
4259: <foo>
4260: x
4261: <?target data?>
4262: y
4263: </foo>
4264: </valid>
4265: <invalid>
4266: <foo><bar/></foo>
4267: </invalid>
4268: </testCase>
4269: <testCase>
4270: <section>6.2.4</section>
4271: <correct>
4272: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4273: <group>
4274: <text/>
4275: <element name="bar">
4276: <empty/>
4277: </element>
4278: </group>
4279: </element>
4280: </correct>
4281: <valid>
4282: <foo><bar/></foo>
4283: </valid>
4284: <valid>
4285: <foo>
4286: <bar/>
4287: </foo>
4288: </valid>
4289: <valid>
4290: <foo>
4291: x
4292: <bar/>
4293: </foo>
4294: </valid>
4295: <valid>
4296: <foo>
4297: x
4298: <?target data?>
4299: y
4300: <bar/></foo>
4301: </valid>
4302: <invalid>
4303: <foo/>
4304: </invalid>
4305: <invalid>
4306: <foo><bar/>x</foo>
4307: </invalid>
4308: </testCase>
4309: <testCase>
4310: <section>6.2.4</section>
4311: <correct>
4312: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4313: <group>
4314: <element name="bar">
4315: <empty/>
4316: </element>
4317: <text/>
4318: </group>
4319: </element>
4320: </correct>
4321: <valid>
4322: <foo><bar/></foo>
4323: </valid>
4324: <valid>
4325: <foo>
4326: <bar/>
4327: </foo>
4328: </valid>
4329: <invalid>
4330: <foo>
4331: x
4332: <bar/>
4333: </foo>
4334: </invalid>
4335: <valid>
4336: <foo>
4337: <bar/>
4338: x
4339: <?target data?>
4340: y
4341: </foo>
4342: </valid>
4343: <invalid>
4344: <foo/>
4345: </invalid>
4346: <valid>
4347: <foo><bar/>x</foo>
4348: </valid>
4349: </testCase>
4350: <testCase>
4351: <section>6.2.4</section>
4352: <correct>
4353: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4354: <interleave>
4355: <element name="bar">
4356: <empty/>
4357: </element>
4358: <text/>
4359: </interleave>
4360: </element>
4361: </correct>
4362: <valid>
4363: <foo><bar/></foo>
4364: </valid>
4365: <valid>
4366: <foo>
4367: <bar/>
4368: </foo>
4369: </valid>
4370: <valid>
4371: <foo>
4372: x
4373: <bar/>
4374: </foo>
4375: </valid>
4376: <valid>
4377: <foo>
4378: <bar/>
4379: x
4380: <?target data?>
4381: y
4382: </foo>
4383: </valid>
4384: <invalid>
4385: <foo/>
4386: </invalid>
4387: <valid>
4388: <foo><bar/>x</foo>
4389: </valid>
4390: <valid>
4391: <foo>x<bar/>x</foo>
4392: </valid>
4393: <invalid>
4394: <foo>x<bar/>x<bar/></foo>
4395: </invalid>
4396: </testCase>
4397: <testCase>
4398: <section>6.2.4</section>
4399: <correct>
4400: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4401: <attribute name="bar">
4402: <text/>
4403: </attribute>
4404: </element>
4405: </correct>
4406: <valid>
4407: <foo bar=""/>
4408: </valid>
4409: <valid>
4410: <foo bar="x"/>
4411: </valid>
4412: <valid>
4413: <foo bar=" "/>
4414: </valid>
4415: <invalid>
4416: <foo/>
4417: </invalid>
4418: <invalid>
4419: <foo><bar/>x<bar/></foo>
4420: </invalid>
4421: </testCase>
4422: </testSuite>
4423: <testSuite>
4424: <section>6.2.5</section>
4425: <testCase>
4426: <section>6.2.5</section>
4427: <correct>
4428: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4429: <oneOrMore>
4430: <element name="bar">
4431: <empty/>
4432: </element>
4433: </oneOrMore>
4434: </element>
4435: </correct>
4436: <valid>
4437: <foo><bar/></foo>
4438: </valid>
4439: <valid>
4440: <foo><bar/><bar/></foo>
4441: </valid>
4442: <valid>
4443: <foo><bar/><bar/><bar/></foo>
4444: </valid>
4445: <invalid>
4446: <foo/>
4447: </invalid>
4448: </testCase>
4449: <testCase>
4450: <section>6.2.5</section>
4451: <correct>
4452: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4453: <oneOrMore>
4454: <group>
4455: <element name="bar">
4456: <empty/>
4457: </element>
4458: <element name="bar">
4459: <empty/>
4460: </element>
4461: </group>
4462: </oneOrMore>
4463: </element>
4464: </correct>
4465: <valid>
4466: <foo><bar/><bar/></foo>
4467: </valid>
4468: <valid>
4469: <foo><bar/><bar/><bar/><bar/></foo>
4470: </valid>
4471: <valid>
4472: <foo><bar/><bar/><bar/><bar/><bar/><bar/></foo>
4473: </valid>
4474: <invalid>
4475: <foo><bar/></foo>
4476: </invalid>
4477: <invalid>
4478: <foo/>
4479: </invalid>
4480: <invalid>
4481: <foo><bar/><bar/><bar/></foo>
4482: </invalid>
4483: </testCase>
4484: <testCase>
4485: <section>6.2.5</section>
4486: <correct>
4487: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4488: <oneOrMore>
4489: <attribute>
4490: <nsName ns=""/>
4491: <text/>
4492: </attribute>
4493: </oneOrMore>
4494: </element>
4495: </correct>
4496: <valid>
4497: <foo x=""/>
4498: </valid>
4499: <valid>
4500: <foo x="" y=""/>
4501: </valid>
4502: <valid>
4503: <foo x="" y="" z=""/>
4504: </valid>
4505: <invalid>
4506: <foo/>
4507: </invalid>
4508: <invalid>
4509: <foo xmlns:ns="http://www.example.com" ns:x=""/>
4510: </invalid>
4511: <invalid>
4512: <foo x="" xmlns:ns="http://www.example.com" ns:x=""/>
4513: </invalid>
4514: </testCase>
4515: <testCase>
4516: <section>6.2.5</section>
4517: <correct>
4518: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4519: <oneOrMore>
4520: <choice>
4521: <attribute name="bar">
4522: <text/>
4523: </attribute>
4524: <element name="bar">
4525: <text/>
4526: </element>
4527: </choice>
4528: </oneOrMore>
4529: </element>
4530: </correct>
4531: <valid>
4532: <foo bar=""><bar/><bar/></foo>
4533: </valid>
4534: <valid>
4535: <foo><bar/></foo>
4536: </valid>
4537: <valid>
4538: <foo bar=""/>
4539: </valid>
4540: <invalid>
4541: <foo/>
4542: </invalid>
4543: </testCase>
4544: </testSuite>
4545: <testSuite>
4546: <section>6.2.6</section>
4547: <testCase>
4548: <section>6.2.6</section>
4549: <correct>
4550: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4551: <interleave>
4552: <element name="bar">
4553: <empty/>
4554: </element>
4555: <element name="baz">
4556: <empty/>
4557: </element>
4558: </interleave>
4559: </element>
4560: </correct>
4561: <valid>
4562: <foo><bar/><baz/></foo>
4563: </valid>
4564: <valid>
4565: <foo><baz/><bar/></foo>
4566: </valid>
4567: <invalid>
4568: <foo><bar/></foo>
4569: </invalid>
4570: <invalid>
4571: <foo><baz/></foo>
4572: </invalid>
4573: <invalid>
4574: <foo><bar/><bar/></foo>
4575: </invalid>
4576: <invalid>
4577: <foo/>
4578: </invalid>
4579: </testCase>
4580: <testCase>
4581: <section>6.2.6</section>
4582: <correct>
4583: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4584: <interleave>
4585: <group>
4586: <element name="bar1">
4587: <empty/>
4588: </element>
4589: <element name="bar2">
4590: <empty/>
4591: </element>
4592: </group>
4593: <element name="baz">
4594: <empty/>
4595: </element>
4596: </interleave>
4597: </element>
4598: </correct>
4599: <valid>
4600: <foo><baz/><bar1/><bar2/></foo>
4601: </valid>
4602: <valid>
4603: <foo><bar1/><baz/><bar2/></foo>
4604: </valid>
4605: <valid>
4606: <foo><bar1/><bar2/><baz/></foo>
4607: </valid>
4608: <invalid>
4609: <foo><baz/><bar2/><bar1/></foo>
4610: </invalid>
4611: <invalid>
4612: <foo><bar2/><bar1/></foo>
4613: </invalid>
4614: <invalid>
4615: <foo><baz/><bar2/><bar1/></foo>
4616: </invalid>
4617: <invalid>
4618: <foo><baz/><bar1/></foo>
4619: </invalid>
4620: <invalid>
4621: <foo><baz/><bar2/></foo>
4622: </invalid>
4623: </testCase>
4624: <testCase>
4625: <section>6.2.6</section>
4626: <correct>
4627: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4628: <interleave>
4629: <attribute name="bar">
4630: <text/>
4631: </attribute>
4632: <attribute name="baz">
4633: <text/>
4634: </attribute>
4635: </interleave>
4636: </element>
4637: </correct>
4638: <valid>
4639: <foo bar="" baz=""/>
4640: </valid>
4641: <invalid>
4642: <foo/>
4643: </invalid>
4644: <invalid>
4645: <foo/>
4646: </invalid>
4647: <invalid>
4648: <foo bar=""/>
4649: </invalid>
4650: <invalid>
4651: <foo baz=""/>
4652: </invalid>
4653: </testCase>
4654: <testCase>
4655: <section>6.2.6</section>
4656: <correct>
4657: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4658: <interleave>
4659: <element name="bar">
4660: <empty/>
4661: </element>
4662: <attribute name="baz">
4663: <text/>
4664: </attribute>
4665: </interleave>
4666: </element>
4667: </correct>
4668: <valid>
4669: <foo baz=""><bar/></foo>
4670: </valid>
4671: <invalid>
4672: <foo/>
4673: </invalid>
4674: <invalid>
4675: <foo bar=""/>
4676: </invalid>
4677: <invalid>
4678: <foo bar=""><baz/><baz/></foo>
4679: </invalid>
4680: <invalid>
4681: <foo><baz/><baz/></foo>
4682: </invalid>
4683: </testCase>
4684: </testSuite>
4685: <testSuite>
4686: <section>6.2.7</section>
4687: <testCase>
4688: <section>6.2.7</section>
4689: <correct>
4690: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4691: <attribute>
4692: <name ns="">bar</name>
4693: <value type="string" datatypeLibrary="">baz</value>
4694: </attribute>
4695: </element>
4696: </correct>
4697: <valid>
4698: <foo bar="baz"/>
4699: </valid>
4700: <invalid>
4701: <foo bar=" baz"/>
4702: </invalid>
4703: <invalid>
4704: <foo bar="b"/>
4705: </invalid>
4706: <invalid>
4707: <foo bar=""/>
4708: </invalid>
4709: <invalid>
4710: <foo bar=" "/>
4711: </invalid>
4712: <invalid>
4713: <foo><bar>baz</bar></foo>
4714: </invalid>
4715: </testCase>
4716: <testCase>
4717: <section>6.2.7</section>
4718: <correct>
4719: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4720: <attribute>
4721: <name ns="">bar</name>
4722: <choice>
4723: <value type="string" datatypeLibrary="">baz</value>
4724: <empty/>
4725: </choice>
4726: </attribute>
4727: </element>
4728: </correct>
4729: <valid>
4730: <foo bar="baz"/>
4731: </valid>
4732: <valid>
4733: <foo bar=""/>
4734: </valid>
4735: <invalid>
4736: <foo bar=" baz"/>
4737: </invalid>
4738: <invalid>
4739: <foo bar="b"/>
4740: </invalid>
4741: <invalid>
4742: <foo><bar>baz</bar></foo>
4743: </invalid>
4744: <invalid>
4745: <foo><bar/></foo>
4746: </invalid>
4747: <invalid>
4748: <foo/>
4749: </invalid>
4750: </testCase>
4751: <testCase>
4752: <section>6.2.7</section>
4753: <correct>
4754: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4755: <attribute>
4756: <name ns="">bar</name>
4757: <value type="string"/>
4758: </attribute>
4759: </element>
4760: </correct>
4761: <valid>
4762: <foo bar=""/>
4763: </valid>
4764: <invalid>
4765: <foo bar=" "/>
4766: </invalid>
4767: <invalid>
4768: <foo bar="x"/>
4769: </invalid>
4770: </testCase>
4771: <testCase>
4772: <section>6.2.7</section>
4773: <correct>
4774: <element xmlns="http://relaxng.org/ns/structure/1.0">
4775: <name ns="">foo</name>
4776: <group>
4777: <element>
4778: <name ns="">bar</name>
4779: <empty/>
4780: </element>
4781: <element>
4782: <name ns="">baz</name>
4783: <empty/>
4784: </element>
4785: </group>
4786: </element>
4787: </correct>
4788: <valid>
4789: <foo><bar/><baz/></foo>
4790: </valid>
4791: <valid>
4792: <foo>
4793: <bar/>
4794: <baz/>
4795: </foo>
4796: </valid>
4797: <valid>
4798: <foo>
4799: <bar/>
4800: 
4801: <baz/>
4802: </foo>
4803: </valid>
4804: <invalid>
4805: <foo/>
4806: </invalid>
4807: <invalid>
4808: <bar><bar/><baz/></bar>
4809: </invalid>
4810: </testCase>
4811: <testCase>
4812: <section>6.2.7</section>
4813: <section>6.2.8</section>
4814: <correct>
4815: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4816: <value type="string"/>
4817: </element>
4818: </correct>
4819: <valid><foo/></valid>
4820: <invalid><foo> </foo></invalid>
4821: <invalid><foo>x</foo></invalid>
4822: </testCase>
4823: <testCase>
4824: <section>6.2.7</section>
4825: <section>6.2.8</section>
4826: <correct>
4827: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4828: <choice>
4829: <value type="string"/>
4830: <empty/>
4831: </choice>
4832: </element>
4833: </correct>
4834: <valid><foo/></valid>
4835: <valid><foo> </foo></valid>
4836: <invalid><foo>x</foo></invalid>
4837: </testCase>
4838: <testCase>
4839: <section>6.2.7</section>
4840: <section>6.2.8</section>
4841: <section>6.2.10</section>
4842: <correct>
4843: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4844: <list>
4845: <data type="token"/>
4846: </list>
4847: </element>
4848: </correct>
4849: <invalid><foo/></invalid>
4850: <invalid><foo> </foo></invalid>
4851: <valid><foo>x</foo></valid>
4852: <valid><foo> x </foo></valid>
4853: <invalid><foo>x y</foo></invalid>
4854: </testCase>
4855: <testCase>
4856: <section>6.2.7</section>
4857: <section>6.2.8</section>
4858: <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
4859: <correct>
4860: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4861: <data type="string"
4862: datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4863: <param name="minLength">2</param>
4864: </data>
4865: </element>
4866: </correct>
4867: <valid><foo>xx</foo></valid>
4868: <valid><foo>xxx</foo></valid>
4869: <valid><foo> </foo></valid>
4870: <valid><foo> </foo></valid>
4871: <invalid><foo>x</foo></invalid>
4872: <invalid><foo> </foo></invalid>
4873: <invalid><foo/></invalid>
4874: </testCase>
4875: <testCase>
4876: <section>6.2.7</section>
4877: <section>6.2.8</section>
4878: <correct>
4879: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4880: <choice>
4881: <value>x</value>
4882: <element name="bar">
4883: <empty/>
4884: </element>
4885: </choice>
4886: </element>
4887: </correct>
4888: <valid><foo> x </foo></valid>
4889: <valid><foo>x</foo></valid>
4890: <invalid><foo>y</foo></invalid>
4891: <valid><foo><bar/></foo></valid>
4892: <valid>
4893: <foo>
4894: <bar/>
4895: </foo>
4896: </valid>
4897: <invalid><foo>x<bar/></foo></invalid>
4898: <invalid><foo/></invalid>
4899: <invalid><foo><bar/>x</foo></invalid>
4900: </testCase>
4901: <testCase>
4902: <section>6.2.7</section>
4903: <section>6.2.8</section>
4904: <correct>
4905: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4906: <choice>
4907: <value>x</value>
4908: <mixed>
4909: <element name="bar">
4910: <empty/>
4911: </element>
4912: </mixed>
4913: </choice>
4914: </element>
4915: </correct>
4916: <valid><foo> x </foo></valid>
4917: <valid><foo>x</foo></valid>
4918: <invalid><foo>y</foo></invalid>
4919: <valid><foo><bar/></foo></valid>
4920: <valid>
4921: <foo>
4922: <bar/>
4923: </foo>
4924: </valid>
4925: <valid><foo>x<bar/></foo></valid>
4926: <invalid><foo/></invalid>
4927: <valid><foo><bar/>x</foo></valid>
4928: </testCase>
4929: </testSuite>
4930: <testSuite>
4931: <section>6.2.8</section>
4932: <testCase>
4933: <section>6.2.8</section>
4934: <correct>
4935: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4936: <data type="string">
4937: <except>
4938: <choice>
4939: <value>x</value>
4940: <value>y</value>
4941: </choice>
4942: </except>
4943: </data>
4944: </element>
4945: </correct>
4946: <valid>
4947: <foo>xyzzy</foo>
4948: </valid>
4949: <invalid>
4950: <foo>x</foo>
4951: </invalid>
4952: <invalid>
4953: <foo>y</foo>
4954: </invalid>
4955: <invalid>
4956: <foo> x</foo>
4957: </invalid>
4958: </testCase>
4959: <testCase>
4960: <section>6.2.8</section>
4961: <correct>
4962: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4963: <data type="string"/>
4964: </element>
4965: </correct>
4966: <valid>
4967: <foo/>
4968: </valid>
4969: </testCase>
4970: <testCase>
4971: <section>6.2.8</section>
4972: <correct>
4973: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4974: <value/>
4975: </element>
4976: </correct>
4977: <valid>
4978: <foo/>
4979: </valid>
4980: </testCase>
4981: <testCase>
4982: <section>6.2.8</section>
4983: <correct>
4984: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
4985: <data type="string">
4986: <except>
4987: <value/>
4988: </except>
4989: </data>
4990: </element>
4991: </correct>
4992: <invalid>
4993: <foo/>
4994: </invalid>
4995: <valid>
4996: <foo>x</foo>
4997: </valid>
4998: </testCase>
4999: </testSuite>
5000: <testSuite>
5001: <section>6.2.9</section>
5002: <testCase>
5003: <section>6.2.9</section>
5004: <correct>
5005: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5006: <data type="string" datatypeLibrary=""/>
5007: </element>
5008: </correct>
5009: <valid>
5010: <foo>xyzzy</foo>
5011: </valid>
5012: <valid>
5013: <foo>
5014: x
5015: <?target data?>
5016: y
5017: <?target data?>
5018: z
5019: </foo>
5020: </valid>
5021: <valid>
5022: <foo></foo>
5023: </valid>
5024: <valid>
5025: <foo>
5026: </foo>
5027: </valid>
5028: <invalid>
5029: <foo><bar/></foo>
5030: </invalid>
5031: <invalid>
5032: <foo bar=""/>
5033: </invalid>
5034: </testCase>
5035: <testCase>
5036: <section>6.2.9</section>
5037: <correct>
5038: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5039: <data type="token" datatypeLibrary=""/>
5040: </element>
5041: </correct>
5042: <valid>
5043: <foo>xyzzy</foo>
5044: </valid>
5045: <valid>
5046: <foo>
5047: x
5048: <?target data?>
5049: y
5050: <?target data?>
5051: z
5052: </foo>
5053: </valid>
5054: <valid>
5055: <foo></foo>
5056: </valid>
5057: <valid>
5058: <foo>
5059: </foo>
5060: </valid>
5061: <invalid>
5062: <foo><bar/></foo>
5063: </invalid>
5064: <invalid>
5065: <foo bar=""/>
5066: </invalid>
5067: </testCase>
5068: <testCase>
5069: <section>6.2.9</section>
5070: <correct>
5071: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5072: <value type="string" datatypeLibrary="">x</value>
5073: </element>
5074: </correct>
5075: <valid><foo>x</foo></valid>
5076: <invalid><foo>xy</foo></invalid>
5077: <invalid><foo> x</foo></invalid>
5078: <invalid><foo/></invalid>
5079: </testCase>
5080: <testCase>
5081: <section>6.2.9</section>
5082: <correct>
5083: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5084: <value type="string" datatypeLibrary=""> x</value>
5085: </element>
5086: </correct>
5087: <valid><foo> x</foo></valid>
5088: <invalid><foo> xy</foo></invalid>
5089: <invalid><foo>x</foo></invalid>
5090: <invalid><foo/></invalid>
5091: </testCase>
5092: <testCase>
5093: <section>6.2.9</section>
5094: <correct>
5095: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5096: <value type="token" datatypeLibrary="">x</value>
5097: </element>
5098: </correct>
5099: <valid><foo>x</foo></valid>
5100: <valid><foo> x</foo></valid>
5101: <valid><foo>x </foo></valid>
5102: <valid><foo>

	 x

	 </foo></valid>
5103: <invalid><foo/></invalid>
5104: <invalid><foo>xy</foo></invalid>
5105: </testCase>
5106: <testCase>
5107: <section>6.2.9</section>
5108: <correct>
5109: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5110: <value type="token" datatypeLibrary="">x y</value>
5111: </element>
5112: </correct>
5113: <valid><foo>x y</foo></valid>
5114: <valid><foo> x y </foo></valid>
5115: <valid><foo>x

	 y</foo></valid>
5116: <invalid><foo>xy</foo></invalid>
5117: </testCase>
5118: <testCase>
5119: <section>6.2.9</section>
5120: <correct>
5121: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5122: <value type="token" datatypeLibrary="">

	 x

	 </value>
5123: </element>
5124: </correct>
5125: <valid><foo>x</foo></valid>
5126: <valid><foo> x</foo></valid>
5127: <valid><foo>x </foo></valid>
5128: <valid><foo>
	x 
</foo></valid>
5129: <invalid><foo/></invalid>
5130: <invalid><foo>xy</foo></invalid>
5131: </testCase>
5132: <testCase>
5133: <section>6.2.9</section>
5134: <correct>
5135: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5136: <value type="token" datatypeLibrary="">x

	 y</value>
5137: </element>
5138: </correct>
5139: <valid><foo>x y</foo></valid>
5140: <valid><foo>x y</foo></valid>
5141: <valid><foo> x y </foo></valid>
5142: <valid><foo>x
	y</foo></valid>
5143: <valid><foo>x 
y</foo></valid>
5144: <invalid><foo/></invalid>
5145: <invalid><foo>xy</foo></invalid>
5146: </testCase>
5147: <testCase>
5148: <section>6.2.9</section>
5149: <incorrect>
5150: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5151: <data type="decimal" datatypeLibrary=""/>
5152: </element>
5153: </incorrect>
5154: </testCase>
5155: <testCase>
5156: <section>6.2.9</section>
5157: <incorrect>
5158: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5159: <value type="decimal" datatypeLibrary=""/>
5160: </element>
5161: </incorrect>
5162: </testCase>
5163: <testCase>
5164: <section>6.2.9</section>
5165: <incorrect>
5166: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5167: <data type="string" datatypeLibrary="">
5168: <param name="length">2</param>
5169: </data>
5170: </element>
5171: </incorrect>
5172: </testCase>
5173: <testCase>
5174: <section>6.2.9</section>
5175: <incorrect>
5176: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5177: <data type="token" datatypeLibrary="">
5178: <param name="length">2</param>
5179: </data>
5180: </element>
5181: </incorrect>
5182: </testCase>
5183: </testSuite>
5184: <testSuite>
5185: <section>6.2.10</section>
5186: <testCase>
5187: <section>6.2.10</section>
5188: <correct>
5189: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5190: <list>
5191: <value type="string">x</value>
5192: </list>
5193: </element>
5194: </correct>
5195: <valid>
5196: <foo>x</foo>
5197: </valid>
5198: <valid>
5199: <foo> x </foo>
5200: </valid>
5201: <invalid>
5202: <foo>x x</foo>
5203: </invalid>
5204: </testCase>
5205: <testCase>
5206: <section>6.2.10</section>
5207: <correct>
5208: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5209: <list>
5210: <oneOrMore>
5211: <value type="string">x</value>
5212: </oneOrMore>
5213: </list>
5214: </element>
5215: </correct>
5216: <valid>
5217: <foo>x</foo>
5218: </valid>
5219: <valid>
5220: <foo> x x x x </foo>
5221: </valid>
5222: <invalid>
5223: <foo/>
5224: </invalid>
5225: <invalid>
5226: <foo>x y</foo>
5227: </invalid>
5228: </testCase>
5229: <testCase>
5230: <section>6.2.10</section>
5231: <correct>
5232: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5233: <list>
5234: <group>
5235: <value type="string">x</value>
5236: <value type="string">y</value>
5237: </group>
5238: </list>
5239: </element>
5240: </correct>
5241: <valid>
5242: <foo>x y</foo>
5243: </valid>
5244: <valid>
5245: <foo>x y</foo>
5246: </valid>
5247: <valid>
5248: <foo>
x
y	</foo>
5249: </valid>
5250: <invalid>
5251: <foo>x</foo>
5252: </invalid>
5253: </testCase>
5254: <testCase>
5255: <section>6.2.10</section>
5256: <correct>
5257: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5258: <list>
5259: <group>
5260: <data type="token"/>
5261: <data type="token"/>
5262: </group>
5263: </list>
5264: </element>
5265: </correct>
5266: <valid>
5267: <foo>x y</foo>
5268: </valid>
5269: <invalid>
5270: <foo/>
5271: </invalid>
5272: <invalid>
5273: <foo>x y z</foo>
5274: </invalid>
5275: </testCase>
5276: <testCase>
5277: <section>6.2.10</section>
5278: <correct>
5279: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
5280: <list>
5281: <value>x y</value>
5282: </list>
5283: </element>
5284: </correct>
5285: <invalid>
5286: <foo>x y</foo>
5287: </invalid>
5288: </testCase>
5289: </testSuite>
5290: </testSuite>
5291: </testSuite>
5292: <testSuite>
5293: <section>7</section>
5294: <testSuite>
5295: <section>7.1</section>
5296: <testCase>
5297: <section>7.1.1</section>
5298: <incorrect>
5299: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5300: <start>
5301: <element name="foo">
5302: <attribute name="bar">
5303: <element name="baz">
5304: <empty/>
5305: </element>
5306: </attribute>
5307: </element>
5308: </start>
5309: </grammar>
5310: </incorrect>
5311: </testCase>
5312: <testCase>
5313: <section>7.1.1</section>
5314: <incorrect>
5315: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5316: <start>
5317: <element name="foo">
5318: <attribute name="bar">
5319: <choice>
5320: <element name="baz">
5321: <empty/>
5322: </element>
5323: <text/>
5324: </choice>
5325: </attribute>
5326: </element>
5327: </start>
5328: </grammar>
5329: </incorrect>
5330: </testCase>
5331: <testCase>
5332: <section>7.1.1</section>
5333: <incorrect>
5334: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5335: <start>
5336: <element name="foo">
5337: <attribute name="bar">
5338: <attribute name="baz"/>
5339: </attribute>
5340: </element>
5341: </start>
5342: </grammar>
5343: </incorrect>
5344: </testCase>
5345: <testCase>
5346: <section>7.1.1</section>
5347: <incorrect>
5348: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5349: <start>
5350: <element name="foo">
5351: <attribute name="bar">
5352: <choice>
5353: <attribute name="baz"/>
5354: <text/>
5355: </choice>
5356: </attribute>
5357: </element>
5358: </start>
5359: </grammar>
5360: </incorrect>
5361: </testCase>
5362: <testCase>
5363: <section>7.1.2</section>
5364: <incorrect>
5365: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5366: <start>
5367: <element name="foo">
5368: <oneOrMore>
5369: <group>
5370: <attribute name="bar"/>
5371: <attribute name="baz"/>
5372: </group>
5373: </oneOrMore>
5374: </element>
5375: </start>
5376: </grammar>
5377: </incorrect>
5378: </testCase>
5379: <testCase>
5380: <section>7.1.2</section>
5381: <incorrect>
5382: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5383: <start>
5384: <element name="foo">
5385: <oneOrMore>
5386: <group>
5387: <attribute>
5388: <anyName/>
5389: </attribute>
5390: <attribute>
5391: <anyName/>
5392: </attribute>
5393: </group>
5394: </oneOrMore>
5395: </element>
5396: </start>
5397: </grammar>
5398: </incorrect>
5399: </testCase>
5400: <testCase>
5401: <section>7.1.2</section>
5402: <incorrect>
5403: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5404: <start>
5405: <element name="foo">
5406: <oneOrMore>
5407: <choice>
5408: <group>
5409: <choice>
5410: <attribute name="bar"/>
5411: <attribute name="baz"/>
5412: </choice>
5413: <choice>
5414: <attribute name="bar"/>
5415: <attribute name="baz"/>
5416: </choice>
5417: </group>
5418: <attribute name="bar"/>
5419: </choice>
5420: </oneOrMore>
5421: </element>
5422: </start>
5423: </grammar>
5424: </incorrect>
5425: </testCase>
5426: <testCase>
5427: <section>7.1.2</section>
5428: <incorrect>
5429: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5430: <start>
5431: <element name="foo">
5432: <oneOrMore>
5433: <interleave>
5434: <attribute name="bar"/>
5435: <attribute name="baz"/>
5436: </interleave>
5437: </oneOrMore>
5438: </element>
5439: </start>
5440: </grammar>
5441: </incorrect>
5442: </testCase>
5443: <testCase>
5444: <section>7.1.2</section>
5445: <incorrect>
5446: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5447: <start>
5448: <element name="foo">
5449: <oneOrMore>
5450: <interleave>
5451: <attribute>
5452: <anyName/>
5453: </attribute>
5454: <attribute>
5455: <anyName/>
5456: </attribute>
5457: </interleave>
5458: </oneOrMore>
5459: </element>
5460: </start>
5461: </grammar>
5462: </incorrect>
5463: </testCase>
5464: <testCase>
5465: <section>7.1.2</section>
5466: <incorrect>
5467: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5468: <start>
5469: <element name="foo">
5470: <oneOrMore>
5471: <choice>
5472: <interleave>
5473: <choice>
5474: <attribute name="bar"/>
5475: <attribute name="baz"/>
5476: </choice>
5477: <choice>
5478: <attribute name="bar"/>
5479: <attribute name="baz"/>
5480: </choice>
5481: </interleave>
5482: <attribute name="bar"/>
5483: </choice>
5484: </oneOrMore>
5485: </element>
5486: </start>
5487: </grammar>
5488: </incorrect>
5489: </testCase>
5490: <testCase>
5491: <section>7.1.3</section>
5492: <incorrect>
5493: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5494: <start>
5495: <element name="foo">
5496: <list>
5497: <list>
5498: <data type="token"/>
5499: </list>
5500: </list>
5501: </element>
5502: </start>
5503: </grammar>
5504: </incorrect>
5505: </testCase>
5506: <testCase>
5507: <section>7.1.3</section>
5508: <incorrect>
5509: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5510: <start>
5511: <element name="foo">
5512: <list>
5513: <choice>
5514: <list>
5515: <data type="token"/>
5516: </list>
5517: <data type="token"/>
5518: </choice>
5519: </list>
5520: </element>
5521: </start>
5522: </grammar>
5523: </incorrect>
5524: </testCase>
5525: <testCase>
5526: <section>7.1.3</section>
5527: <incorrect>
5528: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5529: <start>
5530: <element name="foo">
5531: <list>
5532: <element name="bar">
5533: <empty/>
5534: </element>
5535: </list>
5536: </element>
5537: </start>
5538: </grammar>
5539: </incorrect>
5540: </testCase>
5541: <testCase>
5542: <section>7.1.3</section>
5543: <incorrect>
5544: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5545: <start>
5546: <element name="foo">
5547: <list>
5548: <choice>
5549: <data type="token"/>
5550: <element name="bar">
5551: <empty/>
5552: </element>
5553: </choice>
5554: </list>
5555: </element>
5556: </start>
5557: </grammar>
5558: </incorrect>
5559: </testCase>
5560: <testCase>
5561: <section>7.1.3</section>
5562: <incorrect>
5563: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5564: <start>
5565: <element name="foo">
5566: <list>
5567: <attribute name="bar">
5568: <empty/>
5569: </attribute>
5570: </list>
5571: </element>
5572: </start>
5573: </grammar>
5574: </incorrect>
5575: </testCase>
5576: <testCase>
5577: <section>7.1.3</section>
5578: <incorrect>
5579: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5580: <start>
5581: <element name="foo">
5582: <list>
5583: <choice>
5584: <attribute name="bar">
5585: <empty/>
5586: </attribute>
5587: <data type="token"/>
5588: </choice>
5589: </list>
5590: </element>
5591: </start>
5592: </grammar>
5593: </incorrect>
5594: </testCase>
5595: <testCase>
5596: <section>7.1.3</section>
5597: <incorrect>
5598: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5599: <start>
5600: <element name="foo">
5601: <list>
5602: <choice>
5603: <text/>
5604: <data type="token"/>
5605: </choice>
5606: </list>
5607: </element>
5608: </start>
5609: </grammar>
5610: </incorrect>
5611: </testCase>
5612: <testCase>
5613: <section>7.1.3</section>
5614: <incorrect>
5615: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5616: <start>
5617: <element name="foo">
5618: <list>
5619: <interleave>
5620: <value>x</value>
5621: <value>y</value>
5622: </interleave>
5623: </list>
5624: </element>
5625: </start>
5626: </grammar>
5627: </incorrect>
5628: </testCase>
5629: <testCase>
5630: <section>7.1.3</section>
5631: <incorrect>
5632: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5633: <start>
5634: <element name="foo">
5635: <list>
5636: <choice>
5637: <interleave>
5638: <value>x</value>
5639: <value>y</value>
5640: </interleave>
5641: <value>z</value>
5642: </choice>
5643: </list>
5644: </element>
5645: </start>
5646: </grammar>
5647: </incorrect>
5648: </testCase>
5649: <testCase>
5650: <section>7.1.4</section>
5651: <incorrect>
5652: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5653: <start>
5654: <element name="foo">
5655: <data type="string">
5656: <except>
5657: <attribute name="bar"/>
5658: </except>
5659: </data>
5660: </element>
5661: </start>
5662: </grammar>
5663: </incorrect>
5664: </testCase>
5665: <testCase>
5666: <section>7.1.4</section>
5667: <incorrect>
5668: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5669: <start>
5670: <element name="foo">
5671: <data type="string">
5672: <except>
5673: <element name="bar">
5674: <empty/>
5675: </element>
5676: </except>
5677: </data>
5678: </element>
5679: </start>
5680: </grammar>
5681: </incorrect>
5682: </testCase>
5683: <testCase>
5684: <section>7.1.4</section>
5685: <incorrect>
5686: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5687: <start>
5688: <element name="foo">
5689: <data type="string">
5690: <except>
5691: <text/>
5692: </except>
5693: </data>
5694: </element>
5695: </start>
5696: </grammar>
5697: </incorrect>
5698: </testCase>
5699: <testCase>
5700: <section>7.1.4</section>
5701: <incorrect>
5702: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5703: <start>
5704: <element name="foo">
5705: <data type="string">
5706: <except>
5707: <list>
5708: <data type="token"/>
5709: </list>
5710: </except>
5711: </data>
5712: </element>
5713: </start>
5714: </grammar>
5715: </incorrect>
5716: </testCase>
5717: <testCase>
5718: <section>7.1.4</section>
5719: <incorrect>
5720: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5721: <start>
5722: <element name="foo">
5723: <data type="string">
5724: <except>
5725: <group>
5726: <data type="token"/>
5727: <data type="token"/>
5728: </group>
5729: </except>
5730: </data>
5731: </element>
5732: </start>
5733: </grammar>
5734: </incorrect>
5735: </testCase>
5736: <testCase>
5737: <section>7.1.4</section>
5738: <incorrect>
5739: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5740: <start>
5741: <element name="foo">
5742: <data type="string">
5743: <except>
5744: <interleave>
5745: <data type="token"/>
5746: <data type="token"/>
5747: </interleave>
5748: </except>
5749: </data>
5750: </element>
5751: </start>
5752: </grammar>
5753: </incorrect>
5754: </testCase>
5755: <testCase>
5756: <section>7.1.4</section>
5757: <incorrect>
5758: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5759: <start>
5760: <element name="foo">
5761: <data type="string">
5762: <except>
5763: <oneOrMore>
5764: <data type="token"/>
5765: </oneOrMore>
5766: </except>
5767: </data>
5768: </element>
5769: </start>
5770: </grammar>
5771: </incorrect>
5772: </testCase>
5773: <testCase>
5774: <section>7.1.4</section>
5775: <incorrect>
5776: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5777: <start>
5778: <element name="foo">
5779: <data type="string">
5780: <except>
5781: <empty/>
5782: </except>
5783: </data>
5784: </element>
5785: </start>
5786: </grammar>
5787: </incorrect>
5788: </testCase>
5789: <testCase>
5790: <section>7.1.5</section>
5791: <incorrect>
5792: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5793: <start>
5794: <attribute name="foo"/>
5795: </start>
5796: </grammar>
5797: </incorrect>
5798: </testCase>
5799: <testCase>
5800: <section>7.1.5</section>
5801: <incorrect>
5802: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5803: <start>
5804: <data type="string"/>
5805: </start>
5806: </grammar>
5807: </incorrect>
5808: </testCase>
5809: <testCase>
5810: <section>7.1.5</section>
5811: <incorrect>
5812: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5813: <start>
5814: <choice>
5815: <data type="string"/>
5816: <element name="foo">
5817: <empty/>
5818: </element>
5819: </choice>
5820: </start>
5821: </grammar>
5822: </incorrect>
5823: </testCase>
5824: <testCase>
5825: <section>7.1.5</section>
5826: <incorrect>
5827: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5828: <start>
5829: <choice>
5830: <value>foo</value>
5831: <element name="foo">
5832: <empty/>
5833: </element>
5834: </choice>
5835: </start>
5836: </grammar>
5837: </incorrect>
5838: </testCase>
5839: <testCase>
5840: <section>7.1.5</section>
5841: <incorrect>
5842: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5843: <start>
5844: <text/>
5845: </start>
5846: </grammar>
5847: </incorrect>
5848: </testCase>
5849: <testCase>
5850: <section>7.1.5</section>
5851: <incorrect>
5852: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5853: <start>
5854: <choice>
5855: <text/>
5856: <element name="foo">
5857: <empty/>
5858: </element>
5859: </choice>
5860: </start>
5861: </grammar>
5862: </incorrect>
5863: </testCase>
5864: <testCase>
5865: <section>7.1.5</section>
5866: <incorrect>
5867: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5868: <start>
5869: <list>
5870: <data type="token"/>
5871: </list>
5872: </start>
5873: </grammar>
5874: </incorrect>
5875: </testCase>
5876: <testCase>
5877: <section>7.1.5</section>
5878: <incorrect>
5879: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5880: <start>
5881: <choice>
5882: <element name="foo">
5883: <empty/>
5884: </element>
5885: <list>
5886: <data type="token"/>
5887: </list>
5888: </choice>
5889: </start>
5890: </grammar>
5891: </incorrect>
5892: </testCase>
5893: <testCase>
5894: <section>7.1.5</section>
5895: <incorrect>
5896: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5897: <start>
5898: <group>
5899: <element name="foo">
5900: <empty/>
5901: </element>
5902: <element name="foo">
5903: <empty/>
5904: </element>
5905: </group>
5906: </start>
5907: </grammar>
5908: </incorrect>
5909: </testCase>
5910: <testCase>
5911: <section>7.1.5</section>
5912: <incorrect>
5913: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5914: <start>
5915: <choice>
5916: <element name="foo">
5917: <empty/>
5918: </element>
5919: <group>
5920: <element name="foo">
5921: <empty/>
5922: </element>
5923: <element name="foo">
5924: <empty/>
5925: </element>
5926: </group>
5927: </choice>
5928: </start>
5929: </grammar>
5930: </incorrect>
5931: </testCase>
5932: <testCase>
5933: <section>7.1.5</section>
5934: <incorrect>
5935: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5936: <start>
5937: <interleave>
5938: <element name="foo">
5939: <empty/>
5940: </element>
5941: <element name="foo">
5942: <empty/>
5943: </element>
5944: </interleave>
5945: </start>
5946: </grammar>
5947: </incorrect>
5948: </testCase>
5949: <testCase>
5950: <section>7.1.5</section>
5951: <incorrect>
5952: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5953: <start>
5954: <choice>
5955: <element name="foo">
5956: <empty/>
5957: </element>
5958: <interleave>
5959: <element name="foo">
5960: <empty/>
5961: </element>
5962: <element name="foo">
5963: <empty/>
5964: </element>
5965: </interleave>
5966: </choice>
5967: </start>
5968: </grammar>
5969: </incorrect>
5970: </testCase>
5971: <testCase>
5972: <section>7.1.5</section>
5973: <incorrect>
5974: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5975: <start>
5976: <oneOrMore>
5977: <element name="foo">
5978: <empty/>
5979: </element>
5980: </oneOrMore>
5981: </start>
5982: </grammar>
5983: </incorrect>
5984: </testCase>
5985: <testCase>
5986: <section>7.1.5</section>
5987: <incorrect>
5988: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
5989: <start>
5990: <choice>
5991: <oneOrMore>
5992: <element name="foo">
5993: <empty/>
5994: </element>
5995: </oneOrMore>
5996: <element name="foo">
5997: <empty/>
5998: </element>
5999: </choice>
6000: </start>
6001: </grammar>
6002: </incorrect>
6003: </testCase>
6004: <testCase>
6005: <section>7.1.5</section>
6006: <incorrect>
6007: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
6008: <start>
6009: <empty/>
6010: </start>
6011: </grammar>
6012: </incorrect>
6013: </testCase>
6014: <testCase>
6015: <section>7.1.5</section>
6016: <incorrect>
6017: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
6018: <start>
6019: <choice>
6020: <element name="foo">
6021: <empty/>
6022: </element>
6023: <empty/>
6024: </choice>
6025: </start>
6026: </grammar>
6027: </incorrect>
6028: </testCase>
6029: <testCase>
6030: <section>7.1.5</section>
6031: <section>7</section>
6032: <section>4.18</section>
6033: <documentation>Tests that constraints are post-normalization</documentation>
6034: <correct>
6035: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
6036: <grammar>
6037: <start>
6038: <text/>
6039: </start>
6040: </grammar>
6041: </element>
6042: </correct>
6043: <valid>
6044: <foo>text</foo>
6045: </valid>
6046: </testCase>
6047: <testCase>
6048: <section>7.1.5</section>
6049: <section>7</section>
6050: <section>4.18</section>
6051: <incorrect>
6052: <text xmlns="http://relaxng.org/ns/structure/1.0"/>
6053: </incorrect>
6054: </testCase>
6055: <testCase>
6056: <section>7.1.1</section>
6057: <section>7</section>
6058: <section>4.20</section>
6059: <correct>
6060: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
6061: <optional>
6062: <attribute name="bar">
6063: <group>
6064: <notAllowed/>
6065: <attribute name="baz"/>
6066: </group>
6067: </attribute>
6068: </optional>
6069: </element>
6070: </correct>
6071: <valid>
6072: <foo/>
6073: </valid>
6074: </testCase>
6075: <testCase>
6076: <section>7.1.1</section>
6077: <section>7</section>
6078: <section>4.20</section>
6079: <documentation>The nested attribute element is normalized out because
6080: of the not allowed.</documentation>
6081: <correct>
6082: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
6083: <attribute name="bar">
6084: <choice>
6085: <text/>
6086: <group>
6087: <notAllowed/>
6088: <attribute name="baz"/>
6089: </group>
6090: </choice>
6091: </attribute>
6092: </element>
6093: </correct>
6094: <valid>
6095: <foo bar="baz"/>
6096: </valid>
6097: </testCase>
6098: <testCase>
6099: <section>7.1.2</section>
6100: <section>7</section>
6101: <section>4.12</section>
6102: <documentation>The group element is normalized out.</documentation>
6103: <correct>
6104: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
6105: <start>
6106: <element name="foo">
6107: <oneOrMore>
6108: <group>
6109: <attribute>
6110: <anyName/>
6111: </attribute>
6112: </group>
6113: </oneOrMore>
6114: </element>
6115: </start>
6116: </grammar>
6117: </correct>
6118: <valid>
6119: <foo xyzzy1="val1" xyzzy2="val2"/>
6120: </valid>
6121: </testCase>
6122: <testCase>
6123: <section>7.1.2</section>
6124: <section>7</section>
6125: <section>4.21</section>
6126: <documentation>The group element is normalized out.</documentation>
6127: <correct>
6128: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
6129: <start>
6130: <element name="foo">
6131: <oneOrMore>
6132: <group>
6133: <attribute>
6134: <anyName/>
6135: </attribute>
6136: <empty/>
6137: </group>
6138: </oneOrMore>
6139: </element>
6140: </start>
6141: </grammar>
6142: </correct>
6143: <valid>
6144: <foo xyzzy1="val1" xyzzy2="val2"/>
6145: </valid>
6146: </testCase>
6147: <testCase>
6148: <section>7.1.2</section>
6149: <section>7</section>
6150: <section>4.20</section>
6151: <documentation>The attribute elements are all normalized out.</documentation>
6152: <correct>
6153: <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
6154: <optional>
6155: <attribute name="a1">
6156: <attribute name="a2">
6157: <attribute name="a3">
6158: <notAllowed/>
6159: </attribute>
6160: </attribute>
6161: </attribute>
6162: </optional>
6163: </element>
6164: </correct>
6165: <valid>
6166: <foo/>
6167: </valid>
6168: </testCase>
6169: </testSuite>
6170: <testSuite>
6171: <section>7.2</section>
6172: <testCase>
6173: <section>7.2</section>
6174: <incorrect>
6175: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
6176: <start>
6177: <element name="foo">
6178: <group>
6179: <data type="token"/>
6180: <data type="token"/>
6181: </group>
6182: </element>
6183: </start>
6184: </grammar>
6185: </incorrect>
6186: </testCase>
6187: <testCase>
6188: <documentation>Checks that normalization of notAllowed happens
6189: before string sequence checking.</documentation>
6190: <section>7.2</section>
6191: <section>4.20</section>
6192: <correct>
6193: <choice xmlns="http://relaxng.org/ns/structure/1.0">
6194: <element name="foo">
6195: <empty/>
6196: </element>
6197: <group>
6198: <notAllowed/>
6199: <element name="bar">
6200: <group>
6201: <data type="token"/>
6202: <data type="token"/>
6203: </group>
6204: </element>
6205: </group>
6206: </choice>
6207: </correct>
6208: <valid>
6209: <foo/>
6210: </valid>
6211: </testCase>
6212: <testCase>
6213: <section>4.20</section>
6214: <section>7.2</section>
6215: <documentation>notAllowed in an element is not normalized</documentation>
6216: <incorrect>
6217: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6218: <choice>
6219: <group>
6220: <element name="bar">
6221: <notAllowed/>
6222: </element>
6223: <data type="token"/>
6224: <data type="token"/>
6225: </group>
6226: <element name="baz">
6227: <empty/>
6228: </element>
6229: </choice>
6230: </element>
6231: </incorrect>
6232: </testCase>
6233: </testSuite>
6234: <testSuite>
6235: <section>7.3</section>
6236: <testCase>
6237: <section>7.3</section>
6238: <incorrect>
6239: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6240: <attribute name="bar"/>
6241: <attribute name="bar"/>
6242: </element>
6243: </incorrect>
6244: </testCase>
6245: <testCase>
6246: <section>7.3</section>
6247: <incorrect>
6248: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6249: <attribute name="bar"/>
6250: <zeroOrMore>
6251: <attribute name="bar"/>
6252: </zeroOrMore>
6253: </element>
6254: </incorrect>
6255: </testCase>
6256: <testCase>
6257: <section>7.3</section>
6258: <correct>
6259: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6260: <oneOrMore>
6261: <attribute name="bar"/>
6262: </oneOrMore>
6263: </element>
6264: </correct>
6265: <valid>
6266: <foo bar="xx"/>
6267: </valid>
6268: </testCase>
6269: <testCase>
6270: <section>7.3</section>
6271: <incorrect>
6272: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6273: <interleave>
6274: <attribute name="bar"/>
6275: <attribute name="bar"/>
6276: </interleave>
6277: </element>
6278: </incorrect>
6279: </testCase>
6280: <testCase>
6281: <section>7.3</section>
6282: <incorrect>
6283: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6284: <optional>
6285: <attribute name="bar"/>
6286: </optional>
6287: <optional>
6288: <attribute name="bar"/>
6289: </optional>
6290: </element>
6291: </incorrect>
6292: </testCase>
6293: <testCase>
6294: <section>7.3</section>
6295: <incorrect>
6296: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6297: <attribute name="bar"/>
6298: <oneOrMore>
6299: <attribute>
6300: <anyName/>
6301: </attribute>
6302: </oneOrMore>
6303: </element>
6304: </incorrect>
6305: </testCase>
6306: <testCase>
6307: <section>7.3</section>
6308: <incorrect>
6309: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6310: <attribute name="bar"/>
6311: <oneOrMore>
6312: <attribute>
6313: <anyName>
6314: <except>
6315: <name>baz</name>
6316: </except>
6317: </anyName>
6318: </attribute>
6319: </oneOrMore>
6320: </element>
6321: </incorrect>
6322: </testCase>
6323: <testCase>
6324: <section>7.3</section>
6325: <correct>
6326: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6327: <attribute name="bar"/>
6328: <oneOrMore>
6329: <attribute>
6330: <anyName>
6331: <except>
6332: <name>bar</name>
6333: </except>
6334: </anyName>
6335: </attribute>
6336: </oneOrMore>
6337: </element>
6338: </correct>
6339: <valid>
6340: <foo bar="val" xyzzy="anotherval"/>
6341: </valid>
6342: <valid>
6343: <foo bar="val" baz=""/>
6344: </valid>
6345: <invalid>
6346: <foo bar="val"/>
6347: </invalid>
6348: <invalid>
6349: <foo/>
6350: </invalid>
6351: <invalid>
6352: <foo xyzzy="val"/>
6353: </invalid>
6354: </testCase>
6355: <testCase>
6356: <section>7.3</section>
6357: <incorrect>
6358: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6359: <attribute name="bar"/>
6360: <oneOrMore>
6361: <attribute>
6362: <nsName ns=""/>
6363: </attribute>
6364: </oneOrMore>
6365: </element>
6366: </incorrect>
6367: </testCase>
6368: <testCase>
6369: <section>7.3</section>
6370: <incorrect>
6371: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6372: <attribute name="bar"/>
6373: <oneOrMore>
6374: <attribute>
6375: <nsName ns="">
6376: <except>
6377: <name>baz</name>
6378: </except>
6379: </nsName>
6380: </attribute>
6381: </oneOrMore>
6382: </element>
6383: </incorrect>
6384: </testCase>
6385: <testCase>
6386: <section>7.3</section>
6387: <incorrect>
6388: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6389: <oneOrMore>
6390: <attribute>
6391: <anyName/>
6392: </attribute>
6393: </oneOrMore>
6394: <oneOrMore>
6395: <attribute>
6396: <nsName ns=""/>
6397: </attribute>
6398: </oneOrMore>
6399: </element>
6400: </incorrect>
6401: </testCase>
6402: <testCase>
6403: <section>7.3</section>
6404: <incorrect>
6405: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6406: <oneOrMore>
6407: <attribute>
6408: <anyName/>
6409: </attribute>
6410: </oneOrMore>
6411: <oneOrMore>
6412: <attribute>
6413: <anyName/>
6414: </attribute>
6415: </oneOrMore>
6416: </element>
6417: </incorrect>
6418: </testCase>
6419: <testCase>
6420: <section>7.3</section>
6421: <incorrect>
6422: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6423: <oneOrMore>
6424: <attribute>
6425: <nsName ns=""/>
6426: </attribute>
6427: </oneOrMore>
6428: <oneOrMore>
6429: <attribute>
6430: <nsName ns="">
6431: <except>
6432: <name>bar</name>
6433: </except>
6434: </nsName>
6435: </attribute>
6436: </oneOrMore>
6437: </element>
6438: </incorrect>
6439: </testCase>
6440: <testCase>
6441: <section>7.3</section>
6442: <incorrect>
6443: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6444: <oneOrMore>
6445: <attribute>
6446: <anyName>
6447: <except>
6448: <nsName>
6449: <except>
6450: <name>foo</name>
6451: </except>
6452: </nsName>
6453: </except>
6454: </anyName>
6455: </attribute>
6456: </oneOrMore>
6457: <attribute name="foo"/>
6458: </element>
6459: </incorrect>
6460: </testCase>
6461: <testCase>
6462: <section>7.3</section>
6463: <incorrect>
6464: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6465: <oneOrMore>
6466: <attribute>
6467: <anyName>
6468: <except>
6469: <nsName>
6470: <except>
6471: <name>foo</name>
6472: </except>
6473: </nsName>
6474: </except>
6475: </anyName>
6476: </attribute>
6477: </oneOrMore>
6478: <oneOrMore>
6479: <attribute>
6480: <nsName/>
6481: </attribute>
6482: </oneOrMore>
6483: </element>
6484: </incorrect>
6485: </testCase>
6486: <testCase>
6487: <section>7.3</section>
6488: <correct>
6489: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6490: <oneOrMore>
6491: <attribute>
6492: <anyName>
6493: <except>
6494: <nsName>
6495: <except>
6496: <name>bar</name>
6497: </except>
6498: </nsName>
6499: </except>
6500: </anyName>
6501: </attribute>
6502: </oneOrMore>
6503: <attribute name="baz"/>
6504: </element>
6505: </correct>
6506: <valid>
6507: <foo bar="xx" baz="yy"/>
6508: </valid>
6509: <invalid>
6510: <foo x="xx" baz="yy"/>
6511: </invalid>
6512: <valid>
6513: <foo xmlns:eg="http://www.example.com/" eg:x="xx" baz="yy"/>
6514: </valid>
6515: </testCase>
6516: <testCase>
6517: <section>7.3</section>
6518: <correct>
6519: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6520: <oneOrMore>
6521: <attribute>
6522: <nsName ns="http://www.example.com/1"/>
6523: </attribute>
6524: </oneOrMore>
6525: <oneOrMore>
6526: <attribute>
6527: <nsName ns="http://www.example.com/2"/>
6528: </attribute>
6529: </oneOrMore>
6530: </element>
6531: </correct>
6532: <valid>
6533: <foo xmlns:eg1="http://www.example.com/1"
6534: xmlns:eg2="http://www.example.com/2"
6535: eg1:x="xx" eg2:y="yy"/>
6536: </valid>
6537: </testCase>
6538: <testCase>
6539: <section>7.3</section>
6540: <correct>
6541: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6542: <choice>
6543: <attribute name="bar"/>
6544: <attribute name="bar"/>
6545: </choice>
6546: </element>
6547: </correct>
6548: <valid>
6549: <foo bar="xx"/>
6550: </valid>
6551: </testCase>
6552: <testCase>
6553: <section>7.3</section>
6554: <incorrect>
6555: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6556: <attribute name="bar"/>
6557: <choice>
6558: <attribute name="baz"/>
6559: <attribute name="bar"/>
6560: </choice>
6561: </element>
6562: </incorrect>
6563: </testCase>
6564: <testCase>
6565: <section>7.3</section>
6566: <incorrect>
6567: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6568: <attribute><anyName/><text/></attribute>
6569: </element>
6570: </incorrect>
6571: </testCase>
6572: <testCase>
6573: <section>7.3</section>
6574: <incorrect>
6575: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6576: <attribute><nsName ns =""/><text/></attribute>
6577: </element>
6578: </incorrect>
6579: </testCase>
6580: <testCase>
6581: <section>7.3</section>
6582: <incorrect>
6583: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6584: <attribute><choice><nsName ns =""/><name>foo</name></choice><text/></attribute>
6585: </element>
6586: </incorrect>
6587: </testCase>
6588: </testSuite>
6589: <testSuite>
6590: <section>7.4</section>
6591: <testCase>
6592: <section>7.4</section>
6593: <incorrect>
6594: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6595: <interleave>
6596: <element name="bar">
6597: <empty/>
6598: </element>
6599: <element name="bar">
6600: <empty/>
6601: </element>
6602: </interleave>
6603: </element>
6604: </incorrect>
6605: </testCase>
6606: <testCase>
6607: <section>7.4</section>
6608: <incorrect>
6609: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6610: <interleave>
6611: <element name="bar">
6612: <empty/>
6613: </element>
6614: <interleave>
6615: <element name="baz">
6616: <empty/>
6617: </element>
6618: <element name="bar">
6619: <empty/>
6620: </element>
6621: </interleave>
6622: </interleave>
6623: </element>
6624: </incorrect>
6625: </testCase>
6626: <testCase>
6627: <section>7.4</section>
6628: <incorrect>
6629: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6630: <interleave>
6631: <element name="bar">
6632: <empty/>
6633: </element>
6634: <group>
6635: <element name="baz">
6636: <empty/>
6637: </element>
6638: <element name="bar">
6639: <empty/>
6640: </element>
6641: </group>
6642: </interleave>
6643: </element>
6644: </incorrect>
6645: </testCase>
6646: <testCase>
6647: <section>7.4</section>
6648: <incorrect>
6649: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6650: <interleave>
6651: <element name="bar">
6652: <empty/>
6653: </element>
6654: <group>
6655: <element name="baz">
6656: <empty/>
6657: </element>
6658: <interleave>
6659: <element name="baz">
6660: <empty/>
6661: </element>
6662: <element name="bar">
6663: <empty/>
6664: </element>
6665: </interleave>
6666: </group>
6667: </interleave>
6668: </element>
6669: </incorrect>
6670: </testCase>
6671: <testCase>
6672: <section>7.4</section>
6673: <incorrect>
6674: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6675: <interleave>
6676: <element name="bar">
6677: <empty/>
6678: </element>
6679: <optional>
6680: <element name="bar">
6681: <empty/>
6682: </element>
6683: </optional>
6684: </interleave>
6685: </element>
6686: </incorrect>
6687: </testCase>
6688: <testCase>
6689: <section>7.4</section>
6690: <incorrect>
6691: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6692: <interleave>
6693: <element name="bar">
6694: <empty/>
6695: </element>
6696: <element>
6697: <nsName ns=""/>
6698: <empty/>
6699: </element>
6700: </interleave>
6701: </element>
6702: </incorrect>
6703: </testCase>
6704: <testCase>
6705: <section>7.4</section>
6706: <incorrect>
6707: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6708: <interleave>
6709: <element name="bar">
6710: <empty/>
6711: </element>
6712: <element>
6713: <anyName/>
6714: <empty/>
6715: </element>
6716: </interleave>
6717: </element>
6718: </incorrect>
6719: </testCase>
6720: <testCase>
6721: <section>7.4</section>
6722: <incorrect>
6723: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6724: <interleave>
6725: <element name="bar">
6726: <empty/>
6727: </element>
6728: <element name="bar">
6729: <notAllowed/>
6730: </element>
6731: </interleave>
6732: </element>
6733: </incorrect>
6734: </testCase>
6735: <testCase>
6736: <section>7.4</section>
6737: <correct>
6738: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6739: <interleave>
6740: <element name="bar">
6741: <empty/>
6742: </element>
6743: <element>
6744: <anyName>
6745: <except>
6746: <name>bar</name>
6747: </except>
6748: </anyName>
6749: <empty/>
6750: </element>
6751: </interleave>
6752: </element>
6753: </correct>
6754: <valid>
6755: <foo><bar/><baz/></foo>
6756: </valid>
6757: </testCase>
6758: <testCase>
6759: <section>7.4</section>
6760: <correct>
6761: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6762: <interleave>
6763: <choice>
6764: <element name="bar">
6765: <empty/>
6766: </element>
6767: <element name="bar">
6768: <text/>
6769: </element>
6770: </choice>
6771: <element name="baz">
6772: <empty/>
6773: </element>
6774: </interleave>
6775: </element>
6776: </correct>
6777: <valid>
6778: <foo><bar/><baz/></foo>
6779: </valid>
6780: </testCase>
6781: <testCase>
6782: <section>7.4</section>
6783: <incorrect>
6784: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6785: <interleave>
6786: <text/>
6787: <text/>
6788: </interleave>
6789: </element>
6790: </incorrect>
6791: </testCase>
6792: <testCase>
6793: <section>7.4</section>
6794: <incorrect>
6795: <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
6796: <mixed>
6797: <mixed>
6798: <element name="bar">
6799: <empty/>
6800: </element>
6801: </mixed>
6802: <element name="baz">
6803: <empty/>
6804: </element>
6805: </mixed>
6806: </element>
6807: </incorrect>
6808: </testCase>
6809: </testSuite>
6810: </testSuite>
6811: <testSuite>
6812: <documentation>Regressions</documentation>
6813: <testCase>
6814: <correct>
6815: <grammar xmlns="http://relaxng.org/ns/structure/1.0">
6816: <start>
6817: <element name="foo">
6818: <choice>
6819: <group>
6820: <attribute name="bar"><empty/></attribute>
6821: <element name="baz1"><empty/></element>
6822: </group>
6823: <group>
6824: <attribute name="bar"><text/></attribute>
6825: <element name="baz2"><empty/></element>
6826: </group>
6827: </choice>
6828: </element>
6829: </start>
6830: </grammar>
6831: </correct>
6832: <valid>
6833: <foo bar=" "><baz1/></foo>
6834: </valid>
6835: </testCase>
6836: <testCase>
6837: <correct>
6838: <notAllowed xmlns="http://relaxng.org/ns/structure/1.0"/>
6839: </correct>
6840: <invalid>
6841: <foo/>
6842: </invalid>
6843: </testCase>
6844: </testSuite>
6845: </testSuite>
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>