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