<testSuite> | |
<author>Daniel Veillard</author> | |
<email>daniel@veillard.com</email> | |
<documentation>For libxml2 implementation of Relax NG spec.</documentation> | |
<testSuite> | |
<documentation>Test of node matches</documentation> | |
<testCase> | |
<correct> | |
<element xmlns="http://relaxng.org/ns/structure/1.0"> | |
<anyName> | |
<except> | |
<nsName ns="http://example.org"/> | |
</except> | |
</anyName> | |
<empty/> | |
</element> | |
</correct> | |
<valid> | |
<foo/> | |
</valid> | |
<valid> | |
<foo xmlns="http://example.org/"/> | |
</valid> | |
<valid> | |
<foo xmlns="http://EXAMPLE.ORG"/> | |
</valid> | |
<invalid> | |
<foo xmlns="http://example.org"/> | |
</invalid> | |
<invalid> | |
<a:foo xmlns:a="http://example.org"/> | |
</invalid> | |
</testCase> | |
<testCase> | |
<correct> | |
<element name="top" xmlns="http://relaxng.org/ns/structure/1.0"> | |
<interleave> | |
<element name="foo" ns="http://example.org"> | |
<empty/> | |
</element> | |
<element> | |
<anyName> | |
<except> | |
<nsName ns="http://example.org"/> | |
</except> | |
</anyName> | |
<empty/> | |
</element> | |
</interleave> | |
</element> | |
</correct> | |
<invalid> | |
<top> | |
<foo/> | |
<bar/> | |
</top> | |
</invalid> | |
<invalid> | |
<top> | |
<foo xmlns="http://example.org"/> | |
<bar xmlns="http://example.org"/> | |
</top> | |
</invalid> | |
<valid> | |
<top> | |
<foo xmlns="http://example.org"/> | |
<bar/> | |
</top> | |
</valid> | |
<valid> | |
<top> | |
<bar/> | |
<foo xmlns="http://example.org"/> | |
</top> | |
</valid> | |
<valid> | |
<top> | |
<foo xmlns="http://example.org"/> | |
<bar xmlns="http://example.org/"/> | |
</top> | |
</valid> | |
<valid> | |
<top> | |
<bar xmlns="http://example.org/"/> | |
<foo xmlns="http://example.org"/> | |
</top> | |
</valid> | |
</testCase> | |
</testSuite> | |
<testSuite> | |
<documentation>Test of indeterminism</documentation> | |
<testCase> | |
<correct> | |
<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> | |
<zeroOrMore> | |
<element name="bar"> | |
<empty/> | |
</element> | |
</zeroOrMore> | |
<element name="baz"> | |
<empty/> | |
</element> | |
</element> | |
</correct> | |
<invalid> | |
<foo/> | |
</invalid> | |
<valid> | |
<foo> | |
<baz/> | |
</foo> | |
</valid> | |
<valid> | |
<foo> | |
<bar/> | |
<baz/> | |
</foo> | |
</valid> | |
<valid> | |
<foo> | |
<bar/> | |
<bar/> | |
<bar/> | |
<baz/> | |
</foo> | |
</valid> | |
</testCase> | |
<testCase> | |
<correct> | |
<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> | |
<zeroOrMore> | |
<element name="bar"> | |
<empty/> | |
</element> | |
</zeroOrMore> | |
<element name="bar"> | |
<empty/> | |
</element> | |
</element> | |
</correct> | |
<invalid> | |
<foo/> | |
</invalid> | |
<valid> | |
<foo> | |
<bar/> | |
</foo> | |
</valid> | |
<valid> | |
<foo> | |
<bar/> | |
<bar/> | |
</foo> | |
</valid> | |
<valid> | |
<foo> | |
<bar/> | |
<bar/> | |
<bar/> | |
<bar/> | |
</foo> | |
</valid> | |
</testCase> | |
<testCase> | |
<correct> | |
<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> | |
<group> | |
<zeroOrMore> | |
<element name="bar"> | |
<empty/> | |
</element> | |
</zeroOrMore> | |
<element name="baz"> | |
<empty/> | |
</element> | |
</group> | |
</element> | |
</correct> | |
<invalid> | |
<foo/> | |
</invalid> | |
<valid> | |
<foo> | |
<baz/> | |
</foo> | |
</valid> | |
<valid> | |
<foo> | |
<bar/> | |
<baz/> | |
</foo> | |
</valid> | |
<valid> | |
<foo> | |
<bar/> | |
<bar/> | |
<bar/> | |
<baz/> | |
</foo> | |
</valid> | |
</testCase> | |
<testCase> | |
<correct> | |
<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> | |
<group> | |
<zeroOrMore> | |
<element name="bar"> | |
<empty/> | |
</element> | |
</zeroOrMore> | |
<element name="bar"> | |
<empty/> | |
</element> | |
</group> | |
</element> | |
</correct> | |
<invalid> | |
<foo/> | |
</invalid> | |
<valid> | |
<foo> | |
<bar/> | |
</foo> | |
</valid> | |
<valid> | |
<foo> | |
<bar/> | |
<bar/> | |
</foo> | |
</valid> | |
<valid> | |
<foo> | |
<bar/> | |
<bar/> | |
<bar/> | |
<bar/> | |
</foo> | |
</valid> | |
</testCase> | |
<testCase> | |
<correct> | |
<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> | |
<choice> | |
<zeroOrMore> | |
<element name="bar"> | |
<empty/> | |
</element> | |
</zeroOrMore> | |
<element name="baz"> | |
<empty/> | |
</element> | |
</choice> | |
</element> | |
</correct> | |
<valid> | |
<foo/> | |
</valid> | |
<valid> | |
<foo> | |
<baz/> | |
</foo> | |
</valid> | |
<valid> | |
<foo> | |
<bar/> | |
<bar/> | |
<bar/> | |
</foo> | |
</valid> | |
<invalid> | |
<foo> | |
<bar/> | |
<baz/> | |
</foo> | |
</invalid> | |
<invalid> | |
<foo> | |
<bar/> | |
<bar/> | |
<bar/> | |
<bar/> | |
<baz/> | |
</foo> | |
</invalid> | |
</testCase> | |
<testCase> | |
<correct> | |
<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> | |
<choice> | |
<zeroOrMore> | |
<element name="bar"> | |
<empty/> | |
</element> | |
</zeroOrMore> | |
<element name="baz"> | |
<empty/> | |
</element> | |
</choice> | |
<element name="baz"> | |
<empty/> | |
</element> | |
</element> | |
</correct> | |
<invalid> | |
<foo/> | |
</invalid> | |
<valid> | |
<foo> | |
<baz/> | |
</foo> | |
</valid> | |
<valid> | |
<foo> | |
<baz/> | |
<baz/> | |
</foo> | |
</valid> | |
<valid> | |
<foo> | |
<bar/> | |
<bar/> | |
<bar/> | |
<baz/> | |
</foo> | |
</valid> | |
<invalid> | |
<foo> | |
<bar/> | |
<baz/> | |
<baz/> | |
</foo> | |
</invalid> | |
<invalid> | |
<foo> | |
<baz/> | |
<bar/> | |
<baz/> | |
</foo> | |
</invalid> | |
</testCase> | |
<testCase> | |
<correct> | |
<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> | |
<choice> | |
<zeroOrMore> | |
<element name="bar"> | |
<empty/> | |
</element> | |
</zeroOrMore> | |
<element name="bar"> | |
<empty/> | |
</element> | |
</choice> | |
</element> | |
</correct> | |
<valid> | |
<foo/> | |
</valid> | |
<valid> | |
<foo> | |
<bar/> | |
</foo> | |
</valid> | |
<valid> | |
<foo> | |
<bar/> | |
<bar/> | |
</foo> | |
</valid> | |
<valid> | |
<foo> | |
<bar/> | |
<bar/> | |
<bar/> | |
<bar/> | |
</foo> | |
</valid> | |
</testCase> | |
<testCase> | |
<correct> | |
<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> | |
<choice> | |
<zeroOrMore> | |
<choice> | |
<element name="bar"> | |
<empty/> | |
</element> | |
<element name="baz"> | |
<empty/> | |
</element> | |
</choice> | |
</zeroOrMore> | |
<element name="bar"> | |
<empty/> | |
</element> | |
</choice> | |
</element> | |
</correct> | |
<valid> | |
<foo/> | |
</valid> | |
<valid> | |
<foo> | |
<bar/> | |
</foo> | |
</valid> | |
<valid> | |
<foo> | |
<baz/> | |
<bar/> | |
</foo> | |
</valid> | |
<valid> | |
<foo> | |
<bar/> | |
<bar/> | |
<bar/> | |
<bar/> | |
</foo> | |
</valid> | |
<valid> | |
<foo> | |
<baz/> | |
<baz/> | |
<baz/> | |
<baz/> | |
</foo> | |
</valid> | |
<valid> | |
<foo> | |
<baz/> | |
<bar/> | |
<baz/> | |
<bar/> | |
</foo> | |
</valid> | |
</testCase> | |
<testCase> | |
<correct> | |
<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> | |
<optional> | |
<element name="bar"> | |
<empty/> | |
</element> | |
</optional> | |
<element name="baz"> | |
<empty/> | |
</element> | |
</element> | |
</correct> | |
<invalid> | |
<foo/> | |
</invalid> | |
<valid> | |
<foo> | |
<baz/> | |
</foo> | |
</valid> | |
<valid> | |
<foo> | |
<bar/> | |
<baz/> | |
</foo> | |
</valid> | |
<invalid> | |
<foo> | |
<bar/> | |
<bar/> | |
<baz/> | |
</foo> | |
</invalid> | |
</testCase> | |
<testCase> | |
<correct> | |
<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> | |
<optional> | |
<element name="bar"> | |
<empty/> | |
</element> | |
</optional> | |
<element name="bar"> | |
<empty/> | |
</element> | |
</element> | |
</correct> | |
<invalid> | |
<foo/> | |
</invalid> | |
<valid> | |
<foo> | |
<bar/> | |
</foo> | |
</valid> | |
<valid> | |
<foo> | |
<bar/> | |
<bar/> | |
</foo> | |
</valid> | |
<invalid> | |
<foo> | |
<bar/> | |
<bar/> | |
<bar/> | |
</foo> | |
</invalid> | |
</testCase> | |
<testCase> | |
<correct> | |
<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> | |
<optional> | |
<oneOrMore> | |
<element name="bar"> | |
<empty/> | |
</element> | |
</oneOrMore> | |
</optional> | |
<element name="baz"> | |
<empty/> | |
</element> | |
</element> | |
</correct> | |
<invalid> | |
<foo/> | |
</invalid> | |
<valid> | |
<foo> | |
<baz/> | |
</foo> | |
</valid> | |
<valid> | |
<foo> | |
<bar/> | |
<baz/> | |
</foo> | |
</valid> | |
<valid> | |
<foo> | |
<bar/> | |
<bar/> | |
<baz/> | |
</foo> | |
</valid> | |
<invalid> | |
<foo> | |
<bar/> | |
<bar/> | |
</foo> | |
</invalid> | |
</testCase> | |
<testCase> | |
<correct> | |
<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> | |
<optional> | |
<oneOrMore> | |
<element name="bar"> | |
<empty/> | |
</element> | |
</oneOrMore> | |
</optional> | |
<element name="bar"> | |
<empty/> | |
</element> | |
</element> | |
</correct> | |
<invalid> | |
<foo/> | |
</invalid> | |
<valid> | |
<foo> | |
<bar/> | |
</foo> | |
</valid> | |
<valid> | |
<foo> | |
<bar/> | |
<bar/> | |
</foo> | |
</valid> | |
<valid> | |
<foo> | |
<bar/> | |
<bar/> | |
<bar/> | |
</foo> | |
</valid> | |
</testCase> | |
<testCase> | |
<correct> | |
<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> | |
<group> | |
<zeroOrMore> | |
<choice> | |
<element name="bar"> | |
<empty/> | |
</element> | |
<element name="baz"> | |
<empty/> | |
</element> | |
</choice> | |
</zeroOrMore> | |
<element name="bar"> | |
<empty/> | |
</element> | |
</group> | |
</element> | |
</correct> | |
<invalid> | |
<foo/> | |
</invalid> | |
<valid> | |
<foo> | |
<bar/> | |
</foo> | |
</valid> | |
<valid> | |
<foo> | |
<baz/> | |
<bar/> | |
</foo> | |
</valid> | |
<valid> | |
<foo> | |
<bar/> | |
<bar/> | |
<bar/> | |
<bar/> | |
</foo> | |
</valid> | |
<valid> | |
<foo> | |
<baz/> | |
<baz/> | |
<baz/> | |
<bar/> | |
</foo> | |
</valid> | |
<valid> | |
<foo> | |
<baz/> | |
<bar/> | |
<baz/> | |
<bar/> | |
</foo> | |
</valid> | |
<invalid> | |
<foo> | |
<bar/> | |
<baz/> | |
<bar/> | |
<baz/> | |
</foo> | |
</invalid> | |
</testCase> | |
<testCase> | |
<correct> | |
<element name="list" xmlns="http://relaxng.org/ns/structure/1.0"> | |
<oneOrMore> | |
<element name="label"> | |
<empty/> | |
</element> | |
<optional> | |
<element name="opt"> | |
<empty/> | |
</element> | |
</optional> | |
<element name="item"> | |
<empty/> | |
</element> | |
</oneOrMore> | |
</element> | |
</correct> | |
<invalid> | |
<list> | |
</list> | |
</invalid> | |
<valid> | |
<list> | |
<label/> | |
<item/> | |
</list> | |
</valid> | |
<valid> | |
<list> | |
<label/> | |
<item/> | |
<label/> | |
<item/> | |
</list> | |
</valid> | |
<valid> | |
<list> | |
<label/> | |
<opt/> | |
<item/> | |
<label/> | |
<opt/> | |
<item/> | |
</list> | |
</valid> | |
<invalid> | |
<list> | |
<label/> | |
<item/> | |
<label/> | |
<opt/> | |
<opt/> | |
<item/> | |
</list> | |
</invalid> | |
</testCase> | |
<testCase> | |
<correct> | |
<element name="list" xmlns="http://relaxng.org/ns/structure/1.0"> | |
<oneOrMore> | |
<element name="label"> | |
<empty/> | |
</element> | |
<zeroOrMore> | |
<element name="opt"> | |
<empty/> | |
</element> | |
</zeroOrMore> | |
<element name="item"> | |
<empty/> | |
</element> | |
</oneOrMore> | |
</element> | |
</correct> | |
<invalid> | |
<list> | |
</list> | |
</invalid> | |
<valid> | |
<list> | |
<label/> | |
<item/> | |
</list> | |
</valid> | |
<valid> | |
<list> | |
<label/> | |
<item/> | |
<label/> | |
<item/> | |
</list> | |
</valid> | |
<valid> | |
<list> | |
<label/> | |
<opt/> | |
<item/> | |
<label/> | |
<opt/> | |
<item/> | |
</list> | |
</valid> | |
<valid> | |
<list> | |
<label/> | |
<item/> | |
<label/> | |
<opt/> | |
<opt/> | |
<item/> | |
</list> | |
</valid> | |
</testCase> | |
<testCase> | |
<correct> | |
<element name="list" xmlns="http://relaxng.org/ns/structure/1.0"> | |
<oneOrMore> | |
<element name="label"> | |
<empty/> | |
</element> | |
<zeroOrMore> | |
<element name="opt"> | |
<empty/> | |
</element> | |
<element name="opt2"> | |
<empty/> | |
</element> | |
</zeroOrMore> | |
<element name="item"> | |
<empty/> | |
</element> | |
</oneOrMore> | |
</element> | |
</correct> | |
<invalid> | |
<list> | |
</list> | |
</invalid> | |
<valid> | |
<list> | |
<label/> | |
<item/> | |
</list> | |
</valid> | |
<valid> | |
<list> | |
<label/> | |
<item/> | |
<label/> | |
<item/> | |
</list> | |
</valid> | |
<valid> | |
<list> | |
<label/> | |
<opt/> | |
<opt2/> | |
<item/> | |
<label/> | |
<opt/> | |
<opt2/> | |
<item/> | |
</list> | |
</valid> | |
<valid> | |
<list> | |
<label/> | |
<item/> | |
<label/> | |
<opt/> | |
<opt2/> | |
<opt/> | |
<opt2/> | |
<item/> | |
</list> | |
</valid> | |
<invalid> | |
<list> | |
<label/> | |
<opt/> | |
<item/> | |
<label/> | |
<item/> | |
</list> | |
</invalid> | |
<invalid> | |
<list> | |
<label/> | |
<item/> | |
<label/> | |
<opt2/> | |
<opt/> | |
<item/> | |
</list> | |
</invalid> | |
<invalid> | |
<list> | |
<label/> | |
<item/> | |
<label/> | |
<opt/> | |
<opt2/> | |
<opt/> | |
<item/> | |
</list> | |
</invalid> | |
</testCase> | |
</testSuite> | |
<testSuite> | |
<documentation>Test of grammars merging</documentation> | |
<testCase> | |
<resource name="dbk.rng"> | |
<grammar xmlns="http://relaxng.org/ns/structure/1.0"> | |
<start> | |
<ref name="p"/> | |
</start> | |
<define name="p.ext"> | |
<notAllowed/> | |
</define> | |
<define name="p"> | |
<element name="p"> | |
<choice> | |
<ref name="p.ext"/> | |
<empty/> | |
<element name="a"> | |
<text/> | |
</element> | |
</choice> | |
</element> | |
</define> | |
</grammar> | |
</resource> | |
<correct> | |
<grammar xmlns="http://relaxng.org/ns/structure/1.0"> | |
<start> | |
<grammar> | |
<include href="dbk.rng"/> | |
<define name="p.ext" combine="choice"> | |
<element name="b"> | |
<text/> | |
</element> | |
</define> | |
</grammar> | |
</start> | |
</grammar> | |
</correct> | |
<valid> | |
<p/> | |
</valid> | |
<valid> | |
<p> | |
<a/> | |
</p> | |
</valid> | |
<valid> | |
<p> | |
<b/> | |
</p> | |
</valid> | |
<invalid> | |
<b/> | |
</invalid> | |
<invalid> | |
<p> | |
<b/> | |
<b/> | |
</p> | |
</invalid> | |
</testCase> | |
<testCase> | |
<resource name="dbk.rng"> | |
<grammar xmlns="http://relaxng.org/ns/structure/1.0"> | |
<start> | |
<ref name="p"/> | |
</start> | |
<define name="p.ext"> | |
<notAllowed/> | |
</define> | |
<define name="p"> | |
<element name="p"> | |
<choice> | |
<ref name="p.ext"/> | |
<empty/> | |
<element name="a"> | |
<text/> | |
</element> | |
</choice> | |
</element> | |
</define> | |
<define name="c"> | |
<element name="c"> | |
<empty/> | |
</element> | |
</define> | |
</grammar> | |
</resource> | |
<correct> | |
<grammar xmlns="http://relaxng.org/ns/structure/1.0"> | |
<start> | |
<grammar> | |
<include href="dbk.rng"/> | |
<define name="p.ext" combine="choice"> | |
<choice> | |
<ref name="c"/> | |
<parentRef name="d"/> | |
<element name="b"> | |
<text/> | |
</element> | |
</choice> | |
</define> | |
</grammar> | |
</start> | |
<define name="d"> | |
<element name="d"> | |
<empty/> | |
</element> | |
</define> | |
</grammar> | |
</correct> | |
<valid> | |
<p/> | |
</valid> | |
<valid> | |
<p> | |
<a/> | |
</p> | |
</valid> | |
<valid> | |
<p> | |
<b/> | |
</p> | |
</valid> | |
<valid> | |
<p> | |
<c/> | |
</p> | |
</valid> | |
<valid> | |
<p> | |
<d/> | |
</p> | |
</valid> | |
<invalid> | |
<b/> | |
</invalid> | |
<invalid> | |
<c/> | |
</invalid> | |
<invalid> | |
<d/> | |
</invalid> | |
<invalid> | |
<p> | |
<b/> | |
<c/> | |
</p> | |
</invalid> | |
<invalid> | |
<p> | |
<d/> | |
<c/> | |
</p> | |
</invalid> | |
</testCase> | |
<testCase> | |
<resource name="dbk.rng"> | |
<grammar xmlns="http://relaxng.org/ns/structure/1.0"> | |
<start> | |
<ref name="p"/> | |
</start> | |
<define name="p.ext"> | |
<notAllowed/> | |
</define> | |
<define name="p"> | |
<element name="p"> | |
<choice> | |
<ref name="p.ext"/> | |
<empty/> | |
<element name="a"> | |
<text/> | |
</element> | |
</choice> | |
</element> | |
</define> | |
<define name="c"> | |
<element name="c"> | |
<empty/> | |
</element> | |
</define> | |
</grammar> | |
</resource> | |
<resource name="proof.rng"> | |
<grammar xmlns="http://relaxng.org/ns/structure/1.0"> | |
<start> | |
<ref name="e"/> | |
</start> | |
<define name="d"> | |
<element name="d"> | |
<empty/> | |
</element> | |
</define> | |
<define name="e"> | |
<element name="e"> | |
<empty/> | |
</element> | |
</define> | |
<define name="f"> | |
<element name="f"> | |
<empty/> | |
</element> | |
</define> | |
</grammar> | |
</resource> | |
<correct> | |
<grammar xmlns="http://relaxng.org/ns/structure/1.0"> | |
<start> | |
<grammar> | |
<include href="dbk.rng"/> | |
<define name="p.ext" combine="choice"> | |
<choice> | |
<ref name="c"/> | |
<grammar> | |
<include href="proof.rng"/> | |
<start combine="choice"> | |
<ref name="d"/> | |
</start> | |
</grammar> | |
<element name="b"> | |
<text/> | |
</element> | |
</choice> | |
</define> | |
</grammar> | |
</start> | |
<define name="g"> | |
<element name="g"> | |
<empty/> | |
</element> | |
</define> | |
</grammar> | |
</correct> | |
<valid> | |
<p/> | |
</valid> | |
<valid> | |
<p> | |
<a/> | |
</p> | |
</valid> | |
<valid> | |
<p> | |
<b/> | |
</p> | |
</valid> | |
<valid> | |
<p> | |
<c/> | |
</p> | |
</valid> | |
<valid> | |
<p> | |
<d/> | |
</p> | |
</valid> | |
<valid> | |
<p> | |
<e/> | |
</p> | |
</valid> | |
<invalid> | |
<p> | |
<f/> | |
</p> | |
</invalid> | |
<invalid> | |
<p> | |
<g/> | |
</p> | |
</invalid> | |
<invalid> | |
<b/> | |
</invalid> | |
<invalid> | |
<c/> | |
</invalid> | |
<invalid> | |
<d/> | |
</invalid> | |
<invalid> | |
<e/> | |
</invalid> | |
<invalid> | |
<f/> | |
</invalid> | |
<invalid> | |
<g/> | |
</invalid> | |
<invalid> | |
<p> | |
<d/> | |
<c/> | |
</p> | |
</invalid> | |
<invalid> | |
<p> | |
<d/> | |
<e/> | |
</p> | |
</invalid> | |
</testCase> | |
<testCase> | |
<resource name="dbk.rng"> | |
<grammar xmlns="http://relaxng.org/ns/structure/1.0"> | |
<start> | |
<ref name="p"/> | |
</start> | |
<define name="p.ext"> | |
<notAllowed/> | |
</define> | |
<define name="p"> | |
<element name="p"> | |
<choice> | |
<ref name="p.ext"/> | |
<empty/> | |
<element name="a"> | |
<text/> | |
</element> | |
</choice> | |
</element> | |
</define> | |
<define name="c"> | |
<element name="c"> | |
<empty/> | |
</element> | |
</define> | |
</grammar> | |
</resource> | |
<resource name="proof.rng"> | |
<grammar xmlns="http://relaxng.org/ns/structure/1.0" | |
ns="http://example.org/ns/proofsystem"> | |
<start> | |
<ref name="e"/> | |
</start> | |
<define name="d"> | |
<element name="d"> | |
<empty/> | |
</element> | |
</define> | |
<define name="e"> | |
<element name="e"> | |
<empty/> | |
</element> | |
</define> | |
<define name="f"> | |
<element name="f"> | |
<empty/> | |
</element> | |
</define> | |
</grammar> | |
</resource> | |
<correct> | |
<grammar xmlns="http://relaxng.org/ns/structure/1.0"> | |
<start> | |
<grammar> | |
<include href="dbk.rng"/> | |
<define name="p.ext" combine="choice"> | |
<choice> | |
<ref name="c"/> | |
<grammar> | |
<include href="proof.rng"/> | |
<start combine="choice"> | |
<ref name="d"/> | |
</start> | |
</grammar> | |
<element name="b"> | |
<text/> | |
</element> | |
</choice> | |
</define> | |
</grammar> | |
</start> | |
<define name="g"> | |
<element name="g"> | |
<empty/> | |
</element> | |
</define> | |
</grammar> | |
</correct> | |
<valid> | |
<p/> | |
</valid> | |
<valid> | |
<p> | |
<a/> | |
</p> | |
</valid> | |
<valid> | |
<p> | |
<b/> | |
</p> | |
</valid> | |
<valid> | |
<p> | |
<c/> | |
</p> | |
</valid> | |
<valid> | |
<p xmlns:p="http://example.org/ns/proofsystem"> | |
<p:d/> | |
</p> | |
</valid> | |
<invalid> | |
<p> | |
<d/> | |
</p> | |
</invalid> | |
<valid> | |
<p xmlns:p="http://example.org/ns/proofsystem"> | |
<p:e/> | |
</p> | |
</valid> | |
<invalid> | |
<p> | |
<e/> | |
</p> | |
</invalid> | |
<invalid> | |
<p xmlns:p="http://example.org/ns/proofsystem"> | |
<p:f/> | |
</p> | |
</invalid> | |
<invalid> | |
<p> | |
<f/> | |
</p> | |
</invalid> | |
<invalid> | |
<p> | |
<g/> | |
</p> | |
</invalid> | |
<invalid> | |
<b/> | |
</invalid> | |
<invalid> | |
<c/> | |
</invalid> | |
<invalid> | |
<d/> | |
</invalid> | |
<invalid> | |
<e/> | |
</invalid> | |
<invalid> | |
<f/> | |
</invalid> | |
<invalid> | |
<g/> | |
</invalid> | |
<invalid> | |
<p xmlns:p="http://example.org/ns/proofsystem"> | |
<p:d/> | |
<c/> | |
</p> | |
</invalid> | |
<invalid> | |
<p xmlns:p="http://example.org/ns/proofsystem"> | |
<p:d/> | |
<p:e/> | |
</p> | |
</invalid> | |
</testCase> | |
<testCase> | |
<resource name="ext.rng"> | |
<grammar xmlns="http://relaxng.org/ns/structure/1.0"> | |
<start> | |
<ref name="p"/> | |
</start> | |
<define name="p"> | |
<element name="p"> | |
<empty/> | |
</element> | |
</define> | |
</grammar> | |
</resource> | |
<correct> | |
<grammar xmlns="http://relaxng.org/ns/structure/1.0"> | |
<start> | |
<element name="top"> | |
<choice> | |
<ref name="include1"/> | |
<ref name="include2"/> | |
</choice> | |
</element> | |
</start> | |
<define name="include1"> | |
<grammar> | |
<include href="ext.rng"> | |
<start> | |
<element name="a"> | |
<choice> | |
<empty/> | |
<ref name="p"/> | |
</choice> | |
</element> | |
</start> | |
</include> | |
</grammar> | |
</define> | |
<define name="include2"> | |
<grammar> | |
<include href="ext.rng"> | |
<start> | |
<element name="b"> | |
<choice> | |
<empty/> | |
<ref name="p"/> | |
</choice> | |
</element> | |
</start> | |
</include> | |
</grammar> | |
</define> | |
</grammar> | |
</correct> | |
<invalid> | |
<top/> | |
</invalid> | |
<invalid> | |
<a/> | |
</invalid> | |
<invalid> | |
<b/> | |
</invalid> | |
<invalid> | |
<p/> | |
</invalid> | |
<valid> | |
<top> | |
<a/> | |
</top> | |
</valid> | |
<valid> | |
<top> | |
<b/> | |
</top> | |
</valid> | |
<valid> | |
<top> | |
<a> | |
<p/> | |
</a> | |
</top> | |
</valid> | |
<valid> | |
<top> | |
<b> | |
<p/> | |
</b> | |
</top> | |
</valid> | |
</testCase> | |
</testSuite> | |
<testSuite> | |
<documentation>Test of ID/IDREF</documentation> | |
<testCase> | |
<correct> | |
<element name="top" xmlns="http://relaxng.org/ns/structure/1.0" | |
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> | |
<zeroOrMore> | |
<choice> | |
<element name="ref"> | |
<attribute name="id"> | |
<data type="ID"/> | |
</attribute> | |
<text/> | |
</element> | |
<element name="xref"> | |
<attribute name="link"> | |
<data type="IDREF"/> | |
</attribute> | |
<text/> | |
</element> | |
</choice> | |
</zeroOrMore> | |
</element> | |
</correct> | |
<valid> | |
<top> | |
</top> | |
</valid> | |
<invalid> | |
<top> | |
<xref link="id1"/> | |
</top> | |
</invalid> | |
<valid> | |
<top> | |
<ref id="id1"/> | |
</top> | |
</valid> | |
<valid> | |
<top> | |
<xref link="id1"/> | |
<ref id="id1"/> | |
</top> | |
</valid> | |
<valid> | |
<top> | |
<xref link=" id1 "/> | |
<ref id=" id1 "/> | |
<xref link="id1 "/> | |
<xref link=" id1"/> | |
</top> | |
</valid> | |
<valid> | |
<top> | |
<ref id="id1"/> | |
<xref link="id1"/> | |
</top> | |
</valid> | |
<invalid> | |
<top> | |
<ref id="id1"/> | |
<ref id="id1"/> | |
</top> | |
</invalid> | |
</testCase> | |
<testCase> | |
<correct> | |
<element name="top" xmlns="http://relaxng.org/ns/structure/1.0" | |
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> | |
<zeroOrMore> | |
<choice> | |
<element name="ref"> | |
<attribute name="id"> | |
<data type="ID"/> | |
</attribute> | |
<text/> | |
</element> | |
<element name="xref"> | |
<attribute name="link"> | |
<data type="IDREFS"/> | |
</attribute> | |
<text/> | |
</element> | |
</choice> | |
</zeroOrMore> | |
</element> | |
</correct> | |
<valid> | |
<top> | |
</top> | |
</valid> | |
<invalid> | |
<top> | |
<xref link="id1"/> | |
</top> | |
</invalid> | |
<valid> | |
<top> | |
<ref id="id1"/> | |
</top> | |
</valid> | |
<valid> | |
<top> | |
<xref link="id1"/> | |
<ref id="id1"/> | |
</top> | |
</valid> | |
<valid> | |
<top> | |
<xref link="id1 id1"/> | |
<ref id="id1"/> | |
</top> | |
</valid> | |
<valid> | |
<top> | |
<ref id="id1"/> | |
<xref link="id1"/> | |
</top> | |
</valid> | |
<valid> | |
<top> | |
<ref id="id2"/> | |
<xref link="id1 id2"/> | |
<ref id="id1"/> | |
</top> | |
</valid> | |
<valid> | |
<top> | |
<ref id="id2"/> | |
<xref link=" id2 id1 id2 "/> | |
<ref id="id1"/> | |
</top> | |
</valid> | |
<invalid> | |
<top> | |
<ref id="id2"/> | |
<xref link="id1 id2"/> | |
</top> | |
</invalid> | |
<invalid> | |
<top> | |
<xref link="id1 id2"/> | |
<ref id="id1"/> | |
</top> | |
</invalid> | |
<invalid> | |
<top> | |
<ref id="id1"/> | |
<ref id="id1"/> | |
</top> | |
</invalid> | |
</testCase> | |
</testSuite> | |
<testSuite> | |
<documentation>Test of ENTITY/ENTITIES</documentation> | |
<testCase> | |
<correct> | |
<element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> | |
<data type="ENTITY"/> | |
</element> | |
</correct> | |
<invalid> | |
<doc></doc> | |
</invalid> | |
<invalid> | |
<doc>foo</doc> | |
</invalid> | |
<valid dtd=" <!DOCTYPE doc [ <!ENTITY foo SYSTEM 'whatever' NDATA jpeg> ]>"> | |
<doc>foo</doc> | |
</valid> | |
<valid dtd=" <!DOCTYPE doc [ <!ENTITY foo SYSTEM 'whatever' NDATA jpeg> ]>"> | |
<doc> foo </doc> | |
</valid> | |
<invalid dtd=" <!DOCTYPE doc [ <!ENTITY foo SYSTEM 'whatever' NDATA jpeg> ]>"> | |
<doc>foo bar</doc> | |
</invalid> | |
</testCase> | |
<testCase> | |
<correct> | |
<element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> | |
<data type="ENTITIES"/> | |
</element> | |
</correct> | |
<invalid> | |
<doc></doc> | |
</invalid> | |
<invalid> | |
<doc>foo</doc> | |
</invalid> | |
<valid dtd=" <!DOCTYPE doc [ <!ENTITY foo SYSTEM 'whatever' NDATA jpeg> <!ENTITY bar SYSTEM 'whatever' NDATA jpeg> ]>"> | |
<doc> foo bar </doc> | |
</valid> | |
<valid dtd=" <!DOCTYPE doc [ <!ENTITY foo SYSTEM 'whatever' NDATA jpeg> <!ENTITY bar SYSTEM 'whatever' NDATA jpeg> ]>"> | |
<doc> foo bar foo</doc> | |
</valid> | |
<invalid dtd=" <!DOCTYPE doc [ <!ENTITY foo SYSTEM 'whatever' NDATA jpeg>]>"> | |
<doc>foo bar</doc> | |
</invalid> | |
</testCase> | |
</testSuite> | |
<testSuite> | |
<documentation>Test of Mixed</documentation> | |
<testCase> | |
<correct> | |
<element name="mix" xmlns="http://relaxng.org/ns/structure/1.0"> | |
<mixed> | |
<zeroOrMore> | |
<choice> | |
<element name="a"> | |
<empty/> | |
</element> | |
<element name="b"> | |
<empty/> | |
</element> | |
<element name="c"> | |
<empty/> | |
</element> | |
</choice> | |
</zeroOrMore> | |
</mixed> | |
<element name="d"> | |
<empty/> | |
</element> | |
</element> | |
</correct> | |
<valid> | |
<mix> | |
<d/> | |
</mix> | |
</valid> | |
<valid> | |
<mix> | |
<b/> | |
<a/> | |
<c/> | |
<b/> | |
<d/> | |
</mix> | |
</valid> | |
<valid> | |
<mix> | |
mixed | |
<c/> | |
<d/> | |
</mix> | |
</valid> | |
<valid> | |
<mix> | |
<c/> | |
mixed | |
<d/> | |
</mix> | |
</valid> | |
<valid> | |
<mix> | |
<b/> | |
is | |
<a/> | |
inter | |
<c/> | |
mixed | |
<b/> | |
<d/> | |
</mix> | |
</valid> | |
<valid> | |
<mix> | |
mixed | |
<b/> | |
. | |
<d/> | |
</mix> | |
</valid> | |
<valid> | |
<mix> | |
this | |
<b/> | |
is | |
<a/> | |
inter | |
<c/> | |
mixed | |
<b/> | |
. | |
<d/> | |
</mix> | |
</valid> | |
</testCase> | |
</testSuite> | |
</testSuite> |