<!DOCTYPE testSuite [ <!ENTITY dii "<ดี/>"> ]> <testSuite> <author>James Clark</author> <email>jjc@jclark.com</email> <documentation>For October 26 version of the spec.</documentation> <testSuite> <section>3</section> <testSuite> <documentation>Various possible syntax errors.</documentation> <testCase> <section>3</section> <incorrect> <thisIsJunk/> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <element name="foo"> <empty/> </element> <start> <element name="foo"> <empty/> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> <define name="bar"> <text/> </define> <text/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> <name>foo</name> <empty/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> <group> <name>bar</name> </group> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0"> <anyName> <except> <name>foo</name> </except> <except> <name>bar</name> </except> </anyName> <empty/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0"> <nsName> <except> <name>foo</name> </except> <except> <name>bar</name> </except> </nsName> <empty/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> <data type="token"> <except> <value>foo</value> </except> <except> <value>bar</value> </except> </data> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> <empty name="bar"/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo" extra="bar"> <empty/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> <empty> <empty/> </empty> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> <text> <empty/> </text> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> <choice> <text/> <notAllowed> <empty/> </notAllowed> </choice> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <ref name="foo"> <empty/> </ref> </start> <define name="foo"> <element name="foo"> <empty/> </element> </define> </grammar> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <grammar> <start> <parentRef name="foo"> <empty/> </parentRef> </start> </grammar> </start> <define name="foo"> <element name="foo"> <empty/> </element> </define> </grammar> </incorrect> </testCase> </testSuite> <testSuite> <documentation>Tests for obsolete syntax</documentation> <testCase> <section>3</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start name="foo"> <element name="foo"> <empty/> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo" ns="http://www.example.com"> <attribute name="bar" global="true"> <text/> </attribute> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0"> <not> <name>foo</name> </not> <empty/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0"> <difference> <anyName/> <name>foo</name> </difference> <empty/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> <data type="token" key="foo"/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> <data type="token" keyRef="foo"/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> <keyRef name="foo"> <data type="token"/> </keyRef> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> <key name="foo"> <data type="token"/> </key> </element> </incorrect> </testCase> </testSuite> <testSuite> <documentation>Tests for missing attributes and child elements</documentation> <testCase> <section>3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0"> <name>foo</name> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0"> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <group/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <interleave/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <choice/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <optional/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <zeroOrMore/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <oneOrMore/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <list/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <mixed/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0"> <choice/> <empty/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0"> <anyName> <except/> </anyName> <empty/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0"> <nsName ns=""> <except/> </nsName> <empty/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <data type="string"> <except/> </data> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <data/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <data type="string"> <param/> </data> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <grammar> <start/> </grammar> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="bar"> <empty/> </element> </start> <define name="baz"/> </grammar> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <externalRef/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <include/> <start> <element name="foo"> <empty/> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <empty/> </element> </start> <define> <element name="bar"> <empty/> </element> </define> </grammar> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <ref/> </start> <define name="foo"> <element name="foo"> <empty/> </element> </define> </grammar> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <grammar> <start> <parentRef/> </start> </grammar> </start> <define name="foo"> <element name="foo"> <empty/> </element> </define> </grammar> </incorrect> </testCase> </testSuite> <testSuite> <documentation>Checking of ns attribute</documentation> <testCase> <section>3</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" ns=""> <empty/> </element> </correct> <valid> <foo/> </valid> </testCase> <testCase> <section>3</section> <documentation>No checking of ns attribute is performed</documentation> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" ns="DAV:"> <empty/> </element> </correct> <valid> <foo xmlns="DAV:"/> </valid> </testCase> <testCase> <section>3</section> <documentation>No checking of ns attribute is performed</documentation> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" ns="xyzzy"> <empty/> </element> </correct> </testCase> <testCase> <section>3</section> <documentation>No checking of ns attribute is performed</documentation> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" ns="bad_scheme://"> <empty/> </element> </correct> </testCase> </testSuite> <testSuite> <documentation>Checking of datatypeLibrary attribute</documentation> <testCase> <section>3</section> <documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="foo_bar:xyzzy"> <empty/> </element> </incorrect> </testCase> <testCase> <section>3</section> <documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="foobar:xyzzy"> <empty/> </element> </correct> <valid> <foo/> </valid> </testCase> <testCase> <section>3</section> <documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http:ok"> <empty/> </element> </correct> <valid> <foo/> </valid> </testCase> <testCase> <section>3</section> <documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="foo:"> <empty/> </element> </incorrect> </testCase> <testCase> <section>3</section> <documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.example.com/%"> <empty/> </element> </incorrect> </testCase> <testCase> <section>3</section> <documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.example.com/%xx"> <empty/> </element> </incorrect> </testCase> <testCase> <section>3</section> <documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.example.com/%Aa"> <empty/> </element> </correct> <valid> <foo/> </valid> </testCase> <testCase> <section>3</section> <documentation>Value of datatypeLibrary attribute must not be relative</documentation> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="xyzzy"> <empty/> </element> </incorrect> </testCase> <testCase> <section>3</section> <documentation>Value of datatypeLibrary attribute must not be relative</documentation> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="xyzzy#foo:bar"> <empty/> </element> </incorrect> </testCase> <testCase> <section>3</section> <documentation>Value of datatypeLibrary attribute must not be relative</documentation> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="xyzzy?foo:bar"> <empty/> </element> </incorrect> </testCase> <testCase> <section>3</section> <documentation>Value of datatypeLibrary attribute must not be relative</documentation> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="xyzzy/foo:bar"> <empty/> </element> </incorrect> </testCase> <testCase> <section>3</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="foo:bar"> <empty/> </element> </correct> <valid> <foo/> </valid> </testCase> <testCase> <section>3</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary=""> <empty/> </element> </correct> <valid> <foo/> </valid> </testCase> <testCase> <section>3</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <data datatypeLibrary="" type="string"/> </element> </correct> <valid> <foo>x</foo> </valid> </testCase> <testCase> <section>3</section> <documentation>Value of datatypeLibrary attribute must not contain fragment identifier</documentation> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.example.com#xyzzy"> <empty/> </element> </incorrect> </testCase> <testCase> <section>3</section> <documentation>Value of datatypeLibrary attribute must not contain fragment identifier</documentation> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.example.com#"> <empty/> </element> </incorrect> </testCase> </testSuite> <testSuite> <documentation>Tests for QName and NCNames in schemas</documentation> <testCase> <section>3</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <element name="ดี"> <empty/> </element> </element> </correct> <valid> <foo>&dii;</foo> </valid> </testCase> <testCase> <section>3</section> <incorrect> <element name="ี" xmlns="http://relaxng.org/ns/structure/1.0"> <empty/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element name="" xmlns="http://relaxng.org/ns/structure/1.0"> <empty/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0"> <name>ี</name> <empty/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute name="ี"/> <empty/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <ref name="ี"/> </start> <define name="ี"> <element name="foo"> <empty/> </element> </define> </grammar> </incorrect> </testCase> <testCase> <section>3</section> <correct> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <ref name="ดี"/> </start> <define name="ดี"> <element name="foo"> <empty/> </element> </define> </grammar> </correct> <valid> <foo/> </valid> </testCase> <testCase> <section>3</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <ref name=""/> </start> <define name=""> <element name="foo"> <empty/> </element> </define> </grammar> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <ref name="x y"/> </start> <define name="x y"> <element name="foo"> <empty/> </element> </define> </grammar> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0" xmlns:x="http://www.example.com/x"> <start> <ref name="x:y"/> </start> <define name="x:y"> <element name="foo"> <empty/> </element> </define> </grammar> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0" xmlns:x="http://www.example.com/x" name="x:ี"> <empty/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0" xmlns:x="http://www.example.com/x" name="x:y:z"> <empty/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0" xmlns:x="http://www.example.com/x" name="x:"> <empty/> </element> </incorrect> </testCase> </testSuite> <testSuite> <documentation>Tests for elements that allow only a single pattern child.</documentation> <testCase> <section>3</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <empty/> </element> <empty/> </start> </grammar> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> <attribute name="bar"> <text/> <empty/> </attribute> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> <attribute> <name>bar</name> <text/> <empty/> </attribute> </element> </incorrect> </testCase> </testSuite> <testSuite> <documentation>Tests for foreign element and attribute handling.</documentation> <testCase> <section>3</section> <incorrect> <r:element name="foo" xmlns:r="http://relaxng.org/ns/structure/1.0" r:a="val"> <r:empty/> </r:element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0"> <name>foo<eg:comment xmlns:eg="http://www.example.com"/></name> <empty/> </element> </incorrect> </testCase> <testCase> <section>3</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> <value>foo<eg:comment xmlns:eg="http://www.example.com"/></value> </element> </incorrect> </testCase> <testCase> <section>3</section> <correct> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> <data type="string"><eg:comment xmlns:eg="http://www.example.com"/></data> </element> </correct> <valid> <foo>X</foo> </valid> </testCase> <testCase> <section>3</section> <correct> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> <empty> <ext xmlns="http://www.example.com"> <element xmlns="http://relaxng.org/ns/structure/1.0"/> </ext> </empty> </element> </correct> <valid> <foo/> </valid> </testCase> <testCase> <section>3</section> <correct> <grammar xmlns="http://relaxng.org/ns/structure/1.0" xmlns:eg="http://www.example.com"> <eg:comment/> <eg:comment/> <start> <eg:comment/> <element> <eg:comment/> <eg:comment/> <name>foo</name> <eg:comment/> <data type="string"/> <eg:comment/> <empty> <eg:comment/> <eg:comment/> </empty> <eg:comment/> <eg:comment/> </element> <eg:comment/> </start> <eg:comment/> </grammar> </correct> <valid> <foo>X</foo> </valid> </testCase> <testCase> <section>3</section> <correct> <grammar xmlns="http://relaxng.org/ns/structure/1.0" xmlns:eg="http://www.example.com" eg:comment=""> <start eg:comment=""> <element eg:comment=""> <name eg:comment="">foo</name> <data eg:comment="" type="string"/> <empty eg:comment=""/> </element> </start> </grammar> </correct> <valid> <foo>X</foo> </valid> </testCase> <testCase> <section>3</section> <correct> <rng:grammar xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns="http://www.example.com"> <comment/> <comment/> <rng:start> <comment/> <rng:element> <comment/> <comment/> <rng:name>foo</rng:name> <comment/> <rng:data type="string"/> <comment/> </rng:element> <comment/> </rng:start> <comment/> </rng:grammar> </correct> <valid> <foo>X</foo> </valid> </testCase> <testCase> <section>3</section> <correct> <rng:grammar xmlns:rng="http://relaxng.org/ns/structure/1.0"> <comment/> <comment/> <rng:start> <comment/> <rng:element> <comment/> <comment/> <rng:name>foo</rng:name> <comment/> <rng:data type="string"/> <comment/> </rng:element> <comment/> </rng:start> <comment/> </rng:grammar> </correct> <valid> <foo>X</foo> </valid> </testCase> </testSuite> </testSuite> <testSuite> <section>4</section> <testSuite> <section>4.2</section> <testCase> <section>4.2</section> <correct> <element name="

 	foo

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

 	bar

 	"/> </element> </correct> <valid> <foo bar=""/> </valid> </testCase> <testCase> <section>4.2</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <value type="

 	string

 	">bar</value> </element> </correct> <valid> <foo>bar</foo> </valid> <invalid> <foo>bar </foo> </invalid> </testCase> <testCase> <section>4.2</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <data type="

 	string

 	"/> </element> </correct> <valid> <foo>X</foo> </valid> </testCase> <testCase> <section>4.2</section> <correct> <element xmlns="http://relaxng.org/ns/structure/1.0"> <name>

 	foo

 	</name> <attribute><name>

 	bar

 	</name></attribute> </element> </correct> <valid> <foo bar=""/> </valid> </testCase> <testCase> <section>4.2</section> <correct> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start combine="

 	choice

 	"> <ref name="

 	x

 	"/> </start> <define name="x"> <ref name="y"/> </define> <define name="

 	y

 	"> <grammar> <start combine="

 	interleave

 	"> <parentRef name="

 	z

 	"/> </start> </grammar> </define> <define name="z"> <element name="foo"> <empty/> </element> </define> </grammar> </correct> <valid> <foo/> </valid> </testCase> </testSuite> <testCase> <section>4.4</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <value datatypeLibrary="http://www.example.com/this-does-not-exist">bar</value> </element> </correct> <valid> <foo>bar</foo> </valid> <valid> <foo> bar </foo> </valid> <valid> <foo> bar </foo> </valid> <invalid> <foo>baz</foo> </invalid> <invalid> <foo>ba r</foo> </invalid> </testCase> <testSuite> <section>4.5</section> <testCase> <section>4.5</section> <dir name="sub"> <resource name="x"> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> <empty/> </element> </resource> </dir> <correct> <externalRef xmlns="http://relaxng.org/ns/structure/1.0" xml:base="sub/y" href="x"/> </correct> <valid> <foo/> </valid> <invalid> <bar/> </invalid> </testCase> <testCase> <section>4.5</section> <resource name="x"> <element xmlns="http://relaxng.org/ns/structure/1.0" name="bar"> <empty/> </element> </resource> <dir name="sub1"> <resource name="x"> <element xmlns="http://relaxng.org/ns/structure/1.0" name="bar"> <empty/> </element> </resource> <dir name="sub3"> <resource name="x"> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> <empty/> </element> </resource> </dir> </dir> <correct> <group xmlns="http://relaxng.org/ns/structure/1.0" xml:base="sub1/"> <group> <group xml:base="sub2"> <group> <group xml:base="sub3/y"> <externalRef href="x"/> </group> </group> </group> </group> </group> </correct> <valid> <foo/> </valid> <invalid> <bar/> </invalid> </testCase> <testCase> <section>4.5</section> <resource name="x"> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <empty/> </element> </resource> <incorrect> <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x#foo"/> </incorrect> </testCase> </testSuite> <testSuite> <section>4.6</section> <testCase> <section>4.6</section> <resource name="x"> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> <empty/> </element> </resource> <correct> <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x"/> </correct> <valid> <foo/> </valid> <invalid> <bar/> </invalid> </testCase> <testCase> <section>4.6</section> <resource name="x"> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> <empty/> </element> </resource> <correct> <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x" ns="http://www.example.com"/> </correct> <valid> <foo xmlns="http://www.example.com"/> </valid> <invalid> <foo/> </invalid> </testCase> <testCase> <section>4.6</section> <resource name="x"> <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x"/> </resource> <incorrect> <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x"/> </incorrect> </testCase> <testCase> <section>4.6</section> <resource name="x"> <start xmlns="http://relaxng.org/ns/structure/1.0"> <element name="foo"> <empty/> </element> </start> </resource> <incorrect> <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x"/> </incorrect> </testCase> <testCase> <section>4.6</section> <resource name="x"> <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="y"/> </resource> <resource name="y"> <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x"/> </resource> <incorrect> <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="x"/> </incorrect> </testCase> <testCase> <section>4.6</section> <documentation>Same value of href before resolution, but not a loop.</documentation> <dir name="sub"> <resource name="x"> <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="sub/x"/> </resource> <dir name="sub"> <resource name="x"> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> <empty/> </element> </resource> </dir> </dir> <correct> <externalRef xmlns="http://relaxng.org/ns/structure/1.0" href="sub/x"/> </correct> <valid> <foo/> </valid> <invalid> <bar/> </invalid> </testCase> </testSuite> <testSuite> <section>4.7</section> <testCase> <section>4.7</section> <resource name="x"> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <empty/> </element> </start> </grammar> </resource> <correct> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <include href="x"/> </grammar> </correct> <valid> <foo/> </valid> <invalid> <bar/> </invalid> </testCase> <testCase> <section>4.7</section> <resource name="x"> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <empty/> </element> </start> </grammar> </resource> <correct> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <include href="x" ns="http://www.example.com"/> </grammar> </correct> <valid> <foo xmlns="http://www.example.com"/> </valid> <invalid> <foo/> </invalid> </testCase> <testCase> <section>4.7</section> <resource name="x"> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <include href="y"/> </grammar> </resource> <resource name="y"> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <empty/> </element> </start> </grammar> </resource> <correct> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <include href="x"/> </grammar> </correct> <valid> <foo/> </valid> <invalid> <bar/> </invalid> </testCase> <testCase> <section>4.7</section> <resource name="x"> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <empty/> </element> </resource> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <include href="x"/> </grammar> </incorrect> </testCase> <testCase> <section>4.7</section> <resource name="x"> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <include href="x"/> </grammar> </resource> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <include href="x"/> </grammar> </incorrect> </testCase> <testCase> <section>4.7</section> <resource name="x"> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <include href="y"/> </grammar> </resource> <resource name="y"> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <include href="x"/> </grammar> </resource> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <include href="x"/> </grammar> </incorrect> </testCase> <testCase> <section>4.7</section> <dir name="sub"> <resource name="x"> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <include href="sub/x"/> </grammar> </resource> <dir name="sub"> <resource name="x"> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <empty/> </element> </start> </grammar> </resource> </dir> </dir> <correct> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <include href="sub/x"/> </grammar> </correct> <valid> <foo/> </valid> <invalid> <bar/> </invalid> </testCase> <testCase> <section>4.7</section> <resource name="x"> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <define name="foo"> <element name="foo"> <empty/> </element> </define> </grammar> </resource> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <include href="x"> <start> <ref name="foo"/> </start> </include> </grammar> </incorrect> </testCase> <testCase> <section>4.7</section> <resource name="x"> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <define name="foo"> <element name="foo"> <empty/> </element> </define> </grammar> </resource> <correct> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <include href="x"/> <start> <ref name="foo"/> </start> </grammar> </correct> <valid><foo/></valid> <invalid><bar/></invalid> </testCase> <testCase> <section>4.7</section> <resource name="x"> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <ref name="foo"/> </start> </grammar> </resource> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <include href="x"> <define name="foo"> <element name="foo"> <empty/> </element> </define> </include> </grammar> </incorrect> </testCase> <testCase> <section>4.7</section> <resource name="x"> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <ref name="foo"/> </start> </grammar> </resource> <correct> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <include href="x"/> <define name="foo"> <element name="foo"> <empty/> </element> </define> </grammar> </correct> <valid><foo/></valid> <invalid><bar/></invalid> </testCase> <testCase> <section>4.7</section> <resource name="x"> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <define name="foo" combine="choice"> <element name="foo3"> <empty/> </element> </define> </grammar> </resource> <correct> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <ref name="foo"/> </start> <include href="x"> <define name="foo" combine="choice"> <element name="foo1"> <empty/> </element> </define> </include> <define name="foo"> <element name="foo2"> <empty/> </element> </define> </grammar> </correct> <valid><foo1/></valid> <valid><foo2/></valid> <invalid><foo3/></invalid> </testCase> <testCase> <section>4.7</section> <resource name="level1.rng"> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <include href="level2.rng"> <define name="foo"> <element name="bar"> <empty/> </element> </define> </include> </grammar> </resource> <resource name="level2.rng"> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <define name="bar"> <element name="bar"> <empty/> </element> </define> </grammar> </resource> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <ref name="foo"/> </start> <include href="level1.rng"> <define name="foo"> <element name="foo"> <empty/> </element> </define> </include> </grammar> </incorrect> </testCase> </testSuite> <testSuite> <section>4.8</section> <testCase> <section>4.8</section> <correct> <element xmlns="http://relaxng.org/ns/structure/1.0" ns="http://www.example.com" name="foo"> <attribute name="bar" ns="http://www.example.com"/> </element> </correct> <valid> <eg:foo eg:bar="x" xmlns:eg="http://www.example.com"/> </valid> <invalid> <eg:foo xmlns:eg="http://www.example.com" bar="x"/> </invalid> </testCase> <testCase> <section>4.8</section> <correct> <element xmlns="http://relaxng.org/ns/structure/1.0" ns="http://www.example.com" name="foo"> <attribute name="bar"/> </element> </correct> <invalid> <eg:foo xmlns:eg="http://www.example.com" eg:bar="x"/> </invalid> <valid> <eg:foo xmlns:eg="http://www.example.com" bar="x"/> </valid> </testCase> </testSuite> <testSuite> <section>4.9</section> <testCase> <section>4.9</section> <correct> <element xmlns="http://relaxng.org/ns/structure/1.0" ns="http://www.example.com" name="foo"> <attribute> <name>bar</name> </attribute> </element> </correct> <valid> <eg:foo xmlns:eg="http://www.example.com" eg:bar="x"/> </valid> <invalid> <eg:foo xmlns:eg="http://www.example.com" bar="x"/> </invalid> </testCase> <testCase> <section>4.6</section> <section>4.9</section> <resource name="x"> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> <empty/> </element> </resource> <correct> <group ns="http://www.example.com" xmlns="http://relaxng.org/ns/structure/1.0" > <externalRef href="x"/> </group> </correct> <valid> <foo xmlns="http://www.example.com"/> </valid> <invalid> <foo/> </invalid> </testCase> <testCase> <correct> <group xmlns="http://relaxng.org/ns/structure/1.0"> <element ns="http://www.example.com"> <name>foo</name> <empty/> </element> </group> </correct> <valid><foo xmlns="http://www.example.com"/></valid> <invalid><foo/></invalid> </testCase> <testCase> <correct> <element ns="http://www.example.com" xmlns="http://relaxng.org/ns/structure/1.0"> <name>foo</name> <empty/> </element> </correct> <valid><foo xmlns="http://www.example.com"/></valid> <invalid><foo/></invalid> </testCase> <testCase> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute ns="http://www.example.com"> <name>bar</name> <text/> </attribute> </element> </correct> <valid><foo xmlns:x="http://www.example.com" x:bar="whatever"/></valid> <invalid><foo bar="whatever"/></invalid> </testCase> </testSuite> <testSuite> <section>4.10</section> <testCase> <section>4.10</section> <incorrect> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo:bar"> <empty/> </element> </incorrect> </testCase> <testCase> <section>4.10</section> <correct> <element xmlns="http://relaxng.org/ns/structure/1.0" name="eg:foo" xmlns:eg="http://www.example.com"> <empty/> </element> </correct> <valid> <foo xmlns="http://www.example.com"/> </valid> <invalid> <foo xmlns="http://www.example.com/"/> </invalid> </testCase> <testCase> <section>4.10</section> <correct> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo" xmlns:eg="http://www.example.com"> <attribute name="eg:bar"/> </element> </correct> <valid> <foo xmlns:ex="http://www.example.com" ex:bar="x"/> </valid> <invalid> <foo xmlns:ex="http://www.example.com/" ex:bar="x"/> </invalid> </testCase> <testCase> <section>4.10</section> <correct> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> <attribute name="xml:lang"/> </element> </correct> <valid> <foo xml:lang="en"/> </valid> <invalid> <foo lang="en"/> </invalid> </testCase> </testSuite> <testSuite> <section>4.11</section> <testCase> <section>4.11</section> <correct> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <div ns="http://www.example.com"> <div> <start> <ref name="foo"/> </start> </div> <define name="foo"> <element name="foo"> <empty/> </element> </define> </div> <div/> </grammar> </correct> <valid> <foo xmlns="http://www.example.com"/> </valid> <invalid> <foo/> </invalid> </testCase> </testSuite> <testSuite> <testCase> <section>4.12</section> <correct> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <ref name="bars"/> </element> </start> <define name="bars"> <element name="bar"> <empty/> </element> <element name="bar"> <empty/> </element> <element name="bar"> <empty/> </element> </define> </grammar> </correct> <valid> <foo><bar/><bar/><bar/></foo> </valid> <invalid> <foo><bar/><bar/><bar/><bar/><bar/><bar/></foo> </invalid> <invalid> <foo><bar/><bar/></foo> </invalid> <invalid> <foo><bar/></foo> </invalid> <invalid> <foo></foo> </invalid> <invalid> <foo>X</foo> </invalid> <invalid> <foo><bar/>X<bar/><bar/></foo> </invalid> <invalid> <foo><bar/><bar/><bar/><bar/></foo> </invalid> </testCase> <testCase> <section>4.12</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <oneOrMore> <element name="bar"> <empty/> </element> <element name="bar"> <empty/> </element> <element name="bar"> <empty/> </element> </oneOrMore> </element> </correct> <valid> <foo><bar/><bar/><bar/></foo> </valid> <valid> <foo><bar/><bar/><bar/><bar/><bar/><bar/></foo> </valid> <invalid> <foo><bar/><bar/></foo> </invalid> <invalid> <foo><bar/></foo> </invalid> <invalid> <foo></foo> </invalid> <invalid> <foo>X</foo> </invalid> <invalid> <foo><bar/>X<bar/><bar/></foo> </invalid> <invalid> <foo><bar/><bar/><bar/><bar/></foo> </invalid> </testCase> <testCase> <section>4.12</section> <section>4.15</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <zeroOrMore> <element name="bar"> <empty/> </element> <element name="bar"> <empty/> </element> <element name="bar"> <empty/> </element> </zeroOrMore> </element> </correct> <valid> <foo><bar/><bar/><bar/></foo> </valid> <valid> <foo><bar/><bar/><bar/><bar/><bar/><bar/></foo> </valid> <invalid> <foo><bar/><bar/></foo> </invalid> <invalid> <foo><bar/></foo> </invalid> <valid> <foo></foo> </valid> <invalid> <foo>X</foo> </invalid> <invalid> <foo><bar/>X<bar/><bar/></foo> </invalid> <invalid> <foo><bar/><bar/><bar/><bar/></foo> </invalid> </testCase> <testCase> <section>4.12</section> <section>4.14</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <optional> <element name="bar"> <empty/> </element> <element name="bar"> <empty/> </element> <element name="bar"> <empty/> </element> </optional> </element> </correct> <valid> <foo><bar/><bar/><bar/></foo> </valid> <invalid> <foo><bar/><bar/><bar/><bar/><bar/><bar/></foo> </invalid> <invalid> <foo><bar/><bar/></foo> </invalid> <invalid> <foo><bar/></foo> </invalid> <valid> <foo></foo> </valid> <invalid> <foo>X</foo> </invalid> <invalid> <foo><bar/>X<bar/><bar/></foo> </invalid> <invalid> <foo><bar/><bar/><bar/><bar/></foo> </invalid> </testCase> <testCase> <section>4.12</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <list> <value>x</value> <value>y</value> <value>z</value> </list> </element> </correct> <valid> <foo>x y z</foo> </valid> <invalid> <foo>x</foo> </invalid> </testCase> <testCase> <section>4.12</section> <section>4.13</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <mixed> <element name="bar"> <empty/> </element> <element name="bar"> <empty/> </element> <element name="bar"> <empty/> </element> </mixed> </element> </correct> <valid> <foo><bar/><bar/><bar/></foo> </valid> <invalid> <foo><bar/><bar/><bar/><bar/><bar/><bar/></foo> </invalid> <invalid> <foo><bar/><bar/></foo> </invalid> <invalid> <foo><bar/></foo> </invalid> <invalid> <foo></foo> </invalid> <valid> <foo><bar/>X<bar/><bar/></foo> </valid> <invalid> <foo>X</foo> </invalid> <invalid> <foo><bar/><bar/><bar/><bar/></foo> </invalid> </testCase> <testCase> <section>4.12</section> <correct> <element xmlns="http://relaxng.org/ns/structure/1.0"> <name>foo</name> <element name="bar"> <empty/> </element> <element name="bar"> <empty/> </element> <element name="bar"> <empty/> </element> </element> </correct> <valid> <foo><bar/><bar/><bar/></foo> </valid> <invalid> <foo><bar/><bar/><bar/><bar/><bar/><bar/></foo> </invalid> <invalid> <foo><bar/><bar/></foo> </invalid> <invalid> <foo><bar/></foo> </invalid> <invalid> <foo></foo> </invalid> <invalid> <foo>X</foo> </invalid> <invalid> <foo><bar/>X<bar/><bar/></foo> </invalid> <invalid> <foo><bar/><bar/><bar/><bar/></foo> </invalid> </testCase> <testCase> <section>4.12</section> <correct> <element xmlns="http://relaxng.org/ns/structure/1.0"> <anyName> <except> <name>foo</name> <name>bar</name> <name>baz</name> </except> </anyName> <empty/> </element> </correct> <valid><xyzzy/></valid> <invalid><foo/></invalid> <invalid><bar/></invalid> <invalid><baz/></invalid> </testCase> <testCase> <section>4.12</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <data type="token"> <except> <value>x</value> <value>y</value> <value>z</value> </except> </data> </element> </correct> <valid><foo/></valid> <valid><foo>xyz</foo></valid> <invalid><foo>x</foo></invalid> <invalid><foo>y</foo></invalid> <invalid><foo>y</foo></invalid> </testCase> <testCase> <section>4.12</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute name="bar"/> </element> </correct> <valid> <foo bar=""/> </valid> <valid> <foo bar="x"/> </valid> <invalid> <foo/> </invalid> </testCase> <testCase> <section>4.12</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute> <name>bar</name> </attribute> </element> </correct> <valid> <foo bar=""/> </valid> <valid> <foo bar="x"/> </valid> <invalid> <foo/> </invalid> </testCase> <testCase> <section>4.12</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <group> <element name="bar"> <empty/> </element> <element name="bar"> <empty/> </element> <element name="bar"> <empty/> </element> </group> </element> </correct> <valid> <foo><bar/><bar/><bar/></foo> </valid> <invalid> <foo><bar/><bar/><bar/><bar/><bar/><bar/></foo> </invalid> <invalid> <foo><bar/><bar/></foo> </invalid> <invalid> <foo><bar/></foo> </invalid> <invalid> <foo></foo> </invalid> <invalid> <foo>X</foo> </invalid> <invalid> <foo><bar/>X<bar/><bar/></foo> </invalid> <invalid> <foo><bar/><bar/><bar/><bar/></foo> </invalid> </testCase> <testCase> <section>4.12</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <choice> <element name="bar1"> <empty/> </element> <element name="bar2"> <empty/> </element> <element name="bar3"> <empty/> </element> </choice> </element> </correct> <valid><foo><bar1/></foo></valid> <valid><foo><bar2/></foo></valid> <valid><foo><bar3/></foo></valid> <invalid><foo/></invalid> </testCase> <testCase> <section>4.12</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <interleave> <element name="bar1"> <empty/> </element> <element name="bar2"> <empty/> </element> <element name="bar3"> <empty/> </element> </interleave> </element> </correct> <valid><foo><bar1/><bar2/><bar3/></foo></valid> <valid><foo><bar1/><bar3/><bar2/></foo></valid> <valid><foo><bar2/><bar1/><bar3/></foo></valid> <valid><foo><bar2/><bar3/><bar1/></foo></valid> <valid><foo><bar3/><bar1/><bar2/></foo></valid> <valid><foo><bar3/><bar2/><bar1/></foo></valid> <invalid><foo><bar2/><bar1/></foo></invalid> <invalid><foo><bar1/><bar3/><bar2/><bar1/></foo></invalid> </testCase> <testCase> <section>4.12</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <group> <element name="bar"> <empty/> </element> </group> </element> </correct> <valid><foo><bar/></foo></valid> <invalid><foo/></invalid> </testCase> <testCase> <section>4.12</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <interleave> <element name="bar"> <empty/> </element> </interleave> </element> </correct> <valid><foo><bar/></foo></valid> <invalid><foo/></invalid> </testCase> <testCase> <section>4.12</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <choice> <element name="bar"> <empty/> </element> </choice> </element> </correct> <valid><foo><bar/></foo></valid> <invalid><foo/></invalid> </testCase> </testSuite> <testSuite> <section>4.13</section> <testCase> <section>4.13</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <mixed> <element name="bar"> <empty/> </element> </mixed> </element> </correct> <valid><foo>x<bar/></foo></valid> <valid><foo><bar/></foo></valid> <valid><foo><bar/>x</foo></valid> <valid><foo>x<bar/>y</foo></valid> <invalid><foo/></invalid> <invalid><foo><bar/><bar/></foo></invalid> </testCase> </testSuite> <testSuite> <section>4.14</section> <testCase> <section>4.14</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <optional> <element name="bar"> <empty/> </element> </optional> </element> </correct> <valid><foo><bar/></foo></valid> <valid><foo/></valid> <invalid><foo>x<bar/></foo></invalid> <invalid><foo><bar/><bar/></foo></invalid> </testCase> </testSuite> <testSuite> <section>4.15</section> <testCase> <section>4.15</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <zeroOrMore> <element name="bar"> <empty/> </element> </zeroOrMore> </element> </correct> <valid><foo><bar/></foo></valid> <valid><foo/></valid> <invalid><foo>x<bar/></foo></invalid> <invalid><foo><baz/></foo></invalid> <valid><foo><bar/><bar/></foo></valid> </testCase> </testSuite> <testSuite> <section>4.16</section> <testCase> <section>4.16</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element> <anyName> <except> <anyName/> </except> </anyName> <empty/> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>4.16</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element> <anyName> <except> <choice> <anyName/> <name>foo</name> </choice> </except> </anyName> <empty/> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>4.16</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element> <nsName ns=""> <except> <nsName ns=""/> </except> </nsName> <empty/> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>4.16</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element> <nsName ns=""> <except> <choice> <nsName ns=""/> <name>foo</name> </choice> </except> </nsName> <empty/> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>4.16</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element> <nsName ns=""> <except> <anyName/> </except> </nsName> <empty/> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>4.16</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element> <nsName ns=""> <except> <choice> <anyName/> <name>foo</name> </choice> </except> </nsName> <empty/> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>4.16</section> <documentation>Tests that 4.16 is before 4.20.</documentation> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <zeroOrMore> <attribute> <anyName> <except> <anyName/> </except> </anyName> <text/> </attribute> <notAllowed/> </zeroOrMore> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>4.16</section> <documentation>Tests that 4.16 is before removal of unreachable definitions.</documentation> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <empty/> </element> </start> <define name="bar"> <element> <anyName> <except> <anyName/> </except> </anyName> <empty/> </element> </define> </grammar> </incorrect> </testCase> <testCase> <section>4.16</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute name="xmlns"> <text/> </attribute> </element> </incorrect> </testCase> <testCase> <section>4.16</section> <correct> <element name="xmlns" xmlns="http://relaxng.org/ns/structure/1.0"> <empty/> </element> </correct> <valid><xmlns/></valid> </testCase> <testCase> <section>4.16</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute name=" xmlns"> <text/> </attribute> </element> </incorrect> </testCase> <testCase> <section>4.16</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <optional> <notAllowed/> <attribute name="xmlns"> <text/> </attribute> </optional> </element> </incorrect> </testCase> <testCase> <section>4.16</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <empty/> </element> </start> <define name="foo"> <attribute name="xmlns"> <text/> </attribute> </define> </grammar> </incorrect> </testCase> <testCase> <section>4.16</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute name="xmlns" ns=""> <text/> </attribute> </element> </incorrect> </testCase> <testCase> <section>4.16</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute> <choice> <name ns="">xmlns</name> <name>foo</name> </choice> <text/> </attribute> </element> </incorrect> </testCase> <testCase> <section>4.16</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute> <name ns="">xmlns</name> <text/> </attribute> </element> </incorrect> </testCase> <testCase> <section>4.16</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute> <name>xmlns</name> <text/> </attribute> </element> </incorrect> </testCase> <testCase> <section>4.16</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute> <name> xmlns </name> <text/> </attribute> </element> </incorrect> </testCase> <testCase> <section>4.16</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute> <choice> <name>foo</name> <name ns="">xmlns</name> </choice> <text/> </attribute> </element> </incorrect> </testCase> <testCase> <section>4.16</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <oneOrMore> <attribute> <anyName> <except> <name>xmlns</name> </except> </anyName> <text/> </attribute> </oneOrMore> </element> </incorrect> </testCase> <testCase> <section>4.16</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <oneOrMore> <attribute> <nsName ns=""> <except> <name>xmlns</name> </except> </nsName> <text/> </attribute> </oneOrMore> </element> </incorrect> </testCase> <testCase> <section>4.16</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute ns="http://www.w3.org/2000/xmlns" name="bar"> <text/> </attribute> </element> </incorrect> </testCase> <testCase> <section>4.16</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" ns="http://www.w3.org/2000/xmlns"> <empty/> </element> </correct> <valid><foo xmlns="http://www.w3.org/2000/xmlns"/></valid> </testCase> <testCase> <section>4.16</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <data type="token"> <param name="minLength">2</param> </data> </element> </incorrect> </testCase> <testCase> <section>4.16</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <data type="tok"/> </element> </incorrect> </testCase> <testCase> <section>4.16</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <value type="tok"/> </element> </incorrect> </testCase> <testCase> <section>4.16</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <optional> <notAllowed/> <data type="token"> <param name="minLength">2</param> </data> </optional> </element> </incorrect> </testCase> <testCase> <section>4.16</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <optional> <notAllowed/> <data type="tok"/> </optional> </element> </incorrect> </testCase> <testCase> <section>4.16</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <optional> <notAllowed/> <value type="tok"/> </optional> </element> </incorrect> </testCase> <testCase> <section>4.16</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <empty/> </element> </start> <define name="foo"> <data type="token"> <param name="minLength">2</param> </data> </define> </grammar> </incorrect> </testCase> <testCase> <section>4.16</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <empty/> </element> </start> <define name="foo"> <data type="tok"/> </define> </grammar> </incorrect> </testCase> <testCase> <section>4.16</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <empty/> </element> </start> <define name="foo"> <value type="tok"/> </define> </grammar> </incorrect> </testCase> </testSuite> <testSuite> <section>4.17</section> <testCase> <section>4.17</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <ref name="x"/> </start> <define name="x"> <element name="foo1"> <empty/> </element> </define> <define name="x" combine="choice"> <element name="foo2"> <empty/> </element> </define> <define name="x"> <element name="foo3"> <empty/> </element> </define> </grammar> </incorrect> </testCase> <testCase> <section>4.17</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start name="x"> <element name="foo1"> <empty/> </element> </start> <start name="x" combine="choice"> <element name="foo2"> <empty/> </element> </start> <start name="x"> <element name="foo3"> <empty/> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>4.17</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <ref name="x"/> </start> <define name="x"> <element name="foo1"> <empty/> </element> </define> <define name="x"> <element name="foo2"> <empty/> </element> </define> </grammar> </incorrect> </testCase> <testCase> <section>4.17</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start name="x"> <element name="foo1"> <empty/> </element> </start> <start name="x"> <element name="foo2"> <empty/> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>4.17</section> <correct> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <ref name="x"/> </start> <define name="x" combine="choice"> <element name="foo1"> <empty/> </element> </define> <define name="x" combine="choice"> <element name="foo2"> <empty/> </element> </define> <define name="x"> <element name="foo3"> <empty/> </element> </define> </grammar> </correct> <valid> <foo1/> </valid> <valid> <foo2/> </valid> <valid> <foo3/> </valid> <invalid> <foo4/> </invalid> </testCase> <testCase> <section>4.17</section> <correct> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start combine="choice"> <element name="foo1"> <empty/> </element> </start> <start combine="choice"> <element name="foo2"> <empty/> </element> </start> <start> <element name="foo3"> <empty/> </element> </start> </grammar> </correct> <valid> <foo1/> </valid> <valid> <foo2/> </valid> <valid> <foo3/> </valid> <invalid> <foo4/> </invalid> </testCase> <testCase> <section>4.17</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <ref name="x"/> </element> </start> <define name="x" combine="choice"> <element name="bar1"> <empty/> </element> </define> <define name="x"> <element name="bar2"> <empty/> </element> </define> <define name="x" combine="interleave"> <element name="bar3"> <empty/> </element> </define> </grammar> </incorrect> </testCase> <testCase> <section>4.17</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <grammar> <start name="x" combine="choice"> <element name="bar1"> <empty/> </element> </start> <start name="x"> <element name="bar2"> <empty/> </element> </start> <start name="x" combine="interleave"> <element name="bar3"> <empty/> </element> </start> </grammar> </element> </incorrect> </testCase> <testCase> <section>4.17</section> <correct> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <ref name="x"/> </element> </start> <define name="x" combine="interleave"> <element name="bar1"> <empty/> </element> </define> <define name="x" combine="interleave"> <element name="bar2"> <empty/> </element> </define> <define name="x"> <element name="bar3"> <empty/> </element> </define> </grammar> </correct> <valid> <foo><bar1/><bar2/><bar3/></foo> </valid> <valid> <foo><bar1/><bar3/><bar2/></foo> </valid> <valid> <foo><bar2/><bar3/><bar1/></foo> </valid> <invalid> <foo><bar2/><bar3/><bar1/><bar2/></foo> </invalid> </testCase> <testCase> <section>4.17</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <grammar> <start combine="interleave"> <element name="bar1"> <empty/> </element> </start> <start> <element name="bar2"> <empty/> </element> </start> <start combine="interleave"> <element name="bar3"> <empty/> </element> </start> </grammar> </element> </correct> <valid> <foo><bar1/><bar2/><bar3/></foo> </valid> <valid> <foo><bar1/><bar3/><bar2/></foo> </valid> <valid> <foo><bar2/><bar3/><bar1/></foo> </valid> <invalid> <foo><bar2/><bar3/><bar1/><bar2/></foo> </invalid> </testCase> <testCase> <section>4.17</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <ref name="x"/> </element> </start> <define name="x"> <element name="bar1"> <empty/> </element> </define> <define name="x" combine="interleave"> <element name="bar2"> <empty/> </element> </define> <define name="x"> <element name="bar3"> <empty/> </element> </define> </grammar> </incorrect> </testCase> <testCase> <section>4.17</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <grammar> <start name="x"> <element name="bar1"> <empty/> </element> </start> <start name="x" combine="interleave"> <element name="bar2"> <empty/> </element> </start> <start name="x"> <element name="bar3"> <empty/> </element> </start> </grammar> </element> </incorrect> </testCase> </testSuite> <testSuite> <section>4.18</section> <testCase> <section>4.18</section> <documentation>grammar must have a start</documentation> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <define name="foo"> <element name="foo"> <empty/> </element> </define> </grammar> </incorrect> </testCase> <testCase> <section>4.18</section> <documentation>4.17 is before 4.18</documentation> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <empty/> </element> </start> <define name="bar"> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <define name="foo"> <element name="foo"> <empty/> </element> </define> </grammar> </define> </grammar> </incorrect> </testCase> <testCase> <section>4.18</section> <documentation>4.17 is before 4.19</documentation> <incorrect> <choice xmlns="http://relaxng.org/ns/structure/1.0"> <element name="foo"> <empty/> </element> <group> <notAllowed/> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <define name="foo"> <element name="foo"> <empty/> </element> </define> </grammar> </group> </choice> </incorrect> </testCase> <testCase> <section>4.18</section> <documentation>every ref must have a def</documentation> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <ref name="foo"/> </start> </grammar> </incorrect> </testCase> <testCase> <section>4.18</section> <documentation>4.17 is before 4.18</documentation> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <empty/> </element> </start> <define name="foo"> <ref name="bar"/> </define> </grammar> </incorrect> </testCase> <testCase> <section>4.18</section> <documentation>4.17 is before 4.19</documentation> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <choice> <element name="foo"> <empty/> </element> <group> <notAllowed/> <ref name="foo"/> </group> </choice> </start> </grammar> </incorrect> </testCase> <testCase> <section>4.18</section> <documentation>every parentRef must have a def</documentation> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <parentRef name="foo"/> </start> <define name="foo"> <element name="foo"> <empty/> </element> </define> </grammar> </start> </grammar> </incorrect> </testCase> <testCase> <section>4.18</section> <documentation>4.17 is before 4.18</documentation> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <empty/> </element> </start> <define name="bar"> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <parentRef name="foo"/> </start> <define name="foo"> <element name="foo"> <empty/> </element> </define> </grammar> </define> </grammar> </incorrect> </testCase> <testCase> <section>4.18</section> <documentation>4.17 is before 4.19</documentation> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <choice> <element name="foo"> <empty/> </element> <group> <notAllowed/> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <parentRef name="foo"/> </start> <define name="foo"> <element name="foo"> <empty/> </element> </define> </grammar> </group> </choice> </start> </grammar> </incorrect> </testCase> <testCase> <section>4.18</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <ref name="foo"/> </start> <define name="foo"> <choice> <element name="foo"> <empty/> </element> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <parentRef name="foo"/> </start> </grammar> </choice> </define> </grammar> </incorrect> </testCase> <testCase> <section>4.18</section> <correct> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <ref name="foo"/> </start> <define name="foo"> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <ref name="foo"/> </start> <define name="foo"> <element name="foo"> <empty/> </element> </define> </grammar> </define> </grammar> </correct> <valid><foo/></valid> </testCase> <testCase> <section>4.18</section> <correct> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <grammar> <start> <ref name="foo"/> </start> <define name="foo"> <element name="innerFoo"> <parentRef name="foo"/> </element> </define> </grammar> </start> <define name="foo"> <element name="outerFoo"> <empty/> </element> </define> </grammar> </correct> <valid><innerFoo><outerFoo/></innerFoo></valid> <invalid><outerFoo/></invalid> </testCase> <testCase> <section>4.18</section> <correct> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <ref name="foo"/> </start> <define name="foo"> <element name="outerFoo"> <grammar> <start> <ref name="foo"/> </start> <define name="foo"> <element name="innerFoo"> <empty/> </element> </define> </grammar> </element> </define> </grammar> </correct> <valid><outerFoo><innerFoo/></outerFoo></valid> <invalid><innerFoo/></invalid> </testCase> </testSuite> <testSuite> <section>4.19</section> <testCase> <section>4.19</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <ref name="bar"/> </element> </start> <define name="bar"> <optional> <element name="bar"> <empty/> </element> <ref name="bar"/> </optional> </define> </grammar> </incorrect> </testCase> <testCase> <section>4.19</section> <correct> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <ref name="bar"/> </element> </start> <define name="bar"> <element name="bar"> <optional> <ref name="bar"/> </optional> </element> </define> </grammar> </correct> <valid> <foo><bar/></foo> </valid> <valid> <foo><bar><bar/></bar></foo> </valid> <invalid> <foo/> </invalid> </testCase> <testCase> <section>4.19</section> <correct> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <empty/> </element> </start> <define name="bar"> <ref name="bar"/> </define> </grammar> </correct> <valid><foo/></valid> </testCase> <testCase> <section>4.19</section> <section>4.20</section> <documentation>Tests that recursion detection happens before normalization of notAllowed.</documentation> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <choice> <element name="foo"> <empty/> </element> <group> <notAllowed/> <ref name="bar"/> </group> </choice> </start> <define name="bar"> <element name="bar"> <empty/> </element> <optional> <ref name="bar"/> </optional> </define> </grammar> </incorrect> </testCase> </testSuite> </testSuite> <testSuite> <section>6</section> <testSuite> <section>6.1</section> <testCase> <section>6.1</section> <correct> <element xmlns="http://relaxng.org/ns/structure/1.0"> <anyName/> <empty/> </element> </correct> <valid> <foo/> </valid> <valid> <foo xmlns="http://www.example.com"/> </valid> </testCase> <testCase> <section>6.1</section> <correct> <element xmlns="http://relaxng.org/ns/structure/1.0"> <anyName> <except> <name ns="">foo</name> </except> </anyName> <empty/> </element> </correct> <invalid> <foo/> </invalid> <valid> <foo xmlns="http://www.example.com"/> </valid> <valid> <bar/> </valid> </testCase> <testCase> <section>6.1</section> <correct> <element xmlns="http://relaxng.org/ns/structure/1.0"> <anyName> <except> <nsName ns=""/> </except> </anyName> <empty/> </element> </correct> <invalid> <foo/> </invalid> <valid> <foo xmlns="http://www.example.com"/> </valid> </testCase> <testCase> <section>6.1</section> <correct> <element xmlns="http://relaxng.org/ns/structure/1.0"> <nsName ns=""/> <empty/> </element> </correct> <valid> <foo/> </valid> <invalid> <foo xmlns="http://www.example.com"/> </invalid> </testCase> <testCase> <section>6.1</section> <correct> <element xmlns="http://relaxng.org/ns/structure/1.0"> <nsName ns="http://www.example.com"/> <empty/> </element> </correct> <invalid> <foo/> </invalid> <invalid> <foo xmlns="HTTP://www.example.com"/> </invalid> <invalid> <foo xmlns="http://www.example.com/"/> </invalid> <valid> <foo xmlns="http://www.example.com"/> </valid> </testCase> <testCase> <section>6.1</section> <correct> <element xmlns="http://relaxng.org/ns/structure/1.0"> <nsName ns="http://www.example.com"> <except> <name ns="http://www.example.com">foo</name> </except> </nsName> <empty/> </element> </correct> <invalid> <foo/> </invalid> <invalid> <foo xmlns="http://www.example.com"/> </invalid> <valid> <bar xmlns="http://www.example.com"/> </valid> </testCase> <testCase> <section>6.1</section> <correct> <element xmlns="http://relaxng.org/ns/structure/1.0"> <nsName ns="http://www.example.com"> <except> <name ns="">foo</name> </except> </nsName> <empty/> </element> </correct> <invalid> <bar/> </invalid> <invalid> <foo/> </invalid> <valid> <foo xmlns="http://www.example.com"/> </valid> <valid> <bar xmlns="http://www.example.com"/> </valid> </testCase> <testCase> <section>6.1</section> <correct> <element xmlns="http://relaxng.org/ns/structure/1.0"> <name ns="http://www.example.com">foo</name> <empty/> </element> </correct> <valid> <foo xmlns="http://www.example.com"/> </valid> <invalid> <foo/> </invalid> <invalid> <bar xmlns="http://www.example.com"/> </invalid> <invalid> <foo xmlns="http://www.example.org"/> </invalid> </testCase> <testCase> <section>6.1</section> <correct> <element xmlns="http://relaxng.org/ns/structure/1.0"> <name ns="">foo</name> <empty/> </element> </correct> <invalid> <foo xmlns="http://www.example.com"/> </invalid> <valid> <foo/> </valid> <invalid> <bar xmlns="http://www.example.com"/> </invalid> <invalid> <bar/> </invalid> </testCase> <testCase> <section>6.1</section> <correct> <element xmlns="http://relaxng.org/ns/structure/1.0"> <choice> <name ns="">foo</name> <name ns="">bar</name> </choice> <empty/> </element> </correct> <invalid> <baz/> </invalid> <valid> <foo/> </valid> <valid> <bar/> </valid> </testCase> </testSuite> <testSuite> <section>6.2</section> <testSuite> <section>6.2.1</section> <testCase> <section>6.2.1</section> <correct> <choice xmlns="http://relaxng.org/ns/structure/1.0"> <element name="foo"> <empty/> </element> <element name="bar"> <empty/> </element> </choice> </correct> <valid> <foo/> </valid> <valid> <bar/> </valid> <invalid> <baz/> </invalid> </testCase> <testCase> <section>6.2.1</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <choice> <group> <element name="bar1"> <empty/> </element> <element name="bar2"> <empty/> </element> </group> <group> <element name="bar1"> <empty/> </element> <element name="bar3"> <empty/> </element> </group> </choice> </element> </correct> <valid> <foo><bar1/><bar2/></foo> </valid> <valid> <foo><bar1/><bar3/></foo> </valid> <invalid> <foo><bar1/></foo> </invalid> <invalid> <foo/> </invalid> <invalid> <foo><bar2/></foo> </invalid> <invalid> <foo><bar3/></foo> </invalid> <invalid> <foo><bar1/><bar2/><bar3/></foo> </invalid> </testCase> <testCase> <section>6.2.1</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <choice> <group> <attribute name="bar1"> <text/> </attribute> <attribute name="bar2"> <text/> </attribute> </group> <group> <attribute name="bar1"> <text/> </attribute> <attribute name="bar3"> <text/> </attribute> </group> </choice> </element> </correct> <valid> <foo bar1="x" bar2="x"/> </valid> <valid> <foo bar1="x" bar3="x"/> </valid> <invalid> <foo/> </invalid> <invalid> <foo bar1="x"/> </invalid> <invalid> <foo bar2="x"/> </invalid> <invalid> <foo bar3="x"/> </invalid> <invalid> <foo bar1="x" bar2="x" bar3="x"/> </invalid> </testCase> <testCase> <section>6.2.1</section> <correct> <choice xmlns="http://relaxng.org/ns/structure/1.0"> <element name="foo"> <element name="bar"> <empty/> </element> </element> <element name="foo"> <element name="baz"> <empty/> </element> </element> </choice> </correct> <valid> <foo><bar/></foo> </valid> <valid> <foo><baz/></foo> </valid> <invalid> <foo/> </invalid> <invalid> <foo><bar/><bar/></foo> </invalid> <invalid> <foo><foo/></foo> </invalid> <invalid> <bar/> </invalid> <invalid> <fobaz/> </invalid> </testCase> </testSuite> <testSuite> <section>6.2.2</section> <testCase> <section>6.2.2</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <group> <element name="bar"> <empty/> </element> <element name="baz"> <empty/> </element> </group> </element> </correct> <valid> <foo><bar/><baz/></foo> </valid> <invalid> <foo><baz/><bar/></foo> </invalid> <invalid> <foo><bar/><baz/><bar/><baz/></foo> </invalid> <invalid> <foo/> </invalid> <invalid> <foo><bar/></foo> </invalid> <invalid> <foo><baz/></foo> </invalid> </testCase> <testCase> <section>6.2.2</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <group> <attribute name="bar"> <text/> </attribute> <attribute name="baz"> <text/> </attribute> </group> </element> </correct> <valid> <foo bar="x" baz="x"/> </valid> <invalid> <foo/> </invalid> </testCase> <testCase> <section>6.2.2</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <group> <attribute name="bar"> <text/> </attribute> <attribute name="baz"> <text/> </attribute> </group> </element> </correct> <valid> <foo bar="x" baz="x"/> </valid> <invalid> <foo/> </invalid> <invalid> <foo bar="x"/> </invalid> <invalid> <foo baz="x"/> </invalid> </testCase> <testCase> <section>6.2.2</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <group> <attribute name="baz"> <text/> </attribute> <attribute name="bar"> <text/> </attribute> </group> </element> </correct> <valid> <foo bar="x" baz="x"/> </valid> <invalid> <foo/> </invalid> <invalid> <foo bar="x"/> </invalid> <invalid> <foo baz="x"/> </invalid> </testCase> <testCase> <section>6.2.2</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <group> <attribute name="bar"> <text/> </attribute> <element name="baz"> <empty/> </element> </group> </element> </correct> <valid> <foo bar="x"><baz/></foo> </valid> <invalid> <foo><baz/></foo> </invalid> <invalid> <foo bar="x"/> </invalid> <invalid> <foo baz="x"><bar/></foo> </invalid> </testCase> <testCase> <section>6.2.2</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <group> <element name="baz"> <empty/> </element> <attribute name="bar"> <text/> </attribute> </group> </element> </correct> <valid> <foo bar="x"><baz/></foo> </valid> <invalid> <foo><baz/></foo> </invalid> <invalid> <foo bar="x"/> </invalid> <invalid> <foo baz="x"><bar/></foo> </invalid> </testCase> </testSuite> <testSuite> <section>6.2.3</section> <testCase> <section>6.2.3</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <empty/> </element> </correct> <valid> <foo/> </valid> <valid> <foo> </foo> </valid> <valid> <foo> </foo> </valid> <valid> <foo> <?target data?> <?target data?> <?target data?> <?target data?> </foo> </valid> <invalid> <foo>x</foo> </invalid> <invalid> <foo><bar/></foo> </invalid> <invalid> <foo bar="x"/> </invalid> </testCase> <testCase> <section>6.2.3</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute name="bar"> <empty/> </attribute> </element> </correct> <valid><foo bar=""/></valid> <valid><foo bar=" "/></valid> <invalid><foo bar="x"/></invalid> </testCase> <testCase> <section>6.2.3</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <list> <empty/> </list> </element> </correct> <valid><foo/></valid> <valid><foo> </foo></valid> <invalid><foo>x</foo></invalid> <invalid><foo><bar/></foo></invalid> <invalid><foo bar=""/></invalid> </testCase> <testCase> <section>6.2.3</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute name="bar"> <list> <empty/> </list> </attribute> </element> </correct> <valid><foo bar=""/></valid> <valid><foo bar=" "/></valid> <invalid><foo bar="x"/></invalid> </testCase> <testCase> <section>6.2.3</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <group> <element name="bar"> <empty/> </element> <choice> <empty/> <element name="baz"> <empty/> </element> </choice> </group> </element> </correct> <valid> <foo><bar/><baz/></foo> </valid> <valid> <foo><bar/></foo> </valid> <invalid> <foo></foo> </invalid> <invalid> <foo><bar/><baz/><baz/></foo> </invalid> </testCase> <testCase> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <choice> <empty/> <attribute name="bar"> <text/> </attribute> </choice> </element> </correct> <valid> <foo bar="x"/> </valid> <valid> <foo/> </valid> <invalid> <foo baz="x"/> </invalid> <invalid> <foo><bar/></foo> </invalid> </testCase> </testSuite> <testSuite> <section>6.2.4</section> <testCase> <section>6.2.4</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <text/> </element> </correct> <valid> <foo/> </valid> <valid> <foo> </foo> </valid> <valid> <foo>x</foo> </valid> <valid> <foo> x <?target data?> y </foo> </valid> <invalid> <foo><bar/></foo> </invalid> </testCase> <testCase> <section>6.2.4</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <group> <text/> <element name="bar"> <empty/> </element> </group> </element> </correct> <valid> <foo><bar/></foo> </valid> <valid> <foo> <bar/> </foo> </valid> <valid> <foo> x <bar/> </foo> </valid> <valid> <foo> x <?target data?> y <bar/></foo> </valid> <invalid> <foo/> </invalid> <invalid> <foo><bar/>x</foo> </invalid> </testCase> <testCase> <section>6.2.4</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <group> <element name="bar"> <empty/> </element> <text/> </group> </element> </correct> <valid> <foo><bar/></foo> </valid> <valid> <foo> <bar/> </foo> </valid> <invalid> <foo> x <bar/> </foo> </invalid> <valid> <foo> <bar/> x <?target data?> y </foo> </valid> <invalid> <foo/> </invalid> <valid> <foo><bar/>x</foo> </valid> </testCase> <testCase> <section>6.2.4</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <interleave> <element name="bar"> <empty/> </element> <text/> </interleave> </element> </correct> <valid> <foo><bar/></foo> </valid> <valid> <foo> <bar/> </foo> </valid> <valid> <foo> x <bar/> </foo> </valid> <valid> <foo> <bar/> x <?target data?> y </foo> </valid> <invalid> <foo/> </invalid> <valid> <foo><bar/>x</foo> </valid> <valid> <foo>x<bar/>x</foo> </valid> <invalid> <foo>x<bar/>x<bar/></foo> </invalid> </testCase> <testCase> <section>6.2.4</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute name="bar"> <text/> </attribute> </element> </correct> <valid> <foo bar=""/> </valid> <valid> <foo bar="x"/> </valid> <valid> <foo bar=" "/> </valid> <invalid> <foo/> </invalid> <invalid> <foo><bar/>x<bar/></foo> </invalid> </testCase> </testSuite> <testSuite> <section>6.2.5</section> <testCase> <section>6.2.5</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <oneOrMore> <element name="bar"> <empty/> </element> </oneOrMore> </element> </correct> <valid> <foo><bar/></foo> </valid> <valid> <foo><bar/><bar/></foo> </valid> <valid> <foo><bar/><bar/><bar/></foo> </valid> <invalid> <foo/> </invalid> </testCase> <testCase> <section>6.2.5</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <oneOrMore> <group> <element name="bar"> <empty/> </element> <element name="bar"> <empty/> </element> </group> </oneOrMore> </element> </correct> <valid> <foo><bar/><bar/></foo> </valid> <valid> <foo><bar/><bar/><bar/><bar/></foo> </valid> <valid> <foo><bar/><bar/><bar/><bar/><bar/><bar/></foo> </valid> <invalid> <foo><bar/></foo> </invalid> <invalid> <foo/> </invalid> <invalid> <foo><bar/><bar/><bar/></foo> </invalid> </testCase> <testCase> <section>6.2.5</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <oneOrMore> <attribute> <nsName ns=""/> <text/> </attribute> </oneOrMore> </element> </correct> <valid> <foo x=""/> </valid> <valid> <foo x="" y=""/> </valid> <valid> <foo x="" y="" z=""/> </valid> <invalid> <foo/> </invalid> <invalid> <foo xmlns:ns="http://www.example.com" ns:x=""/> </invalid> <invalid> <foo x="" xmlns:ns="http://www.example.com" ns:x=""/> </invalid> </testCase> <testCase> <section>6.2.5</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <oneOrMore> <choice> <attribute name="bar"> <text/> </attribute> <element name="bar"> <text/> </element> </choice> </oneOrMore> </element> </correct> <valid> <foo bar=""><bar/><bar/></foo> </valid> <valid> <foo><bar/></foo> </valid> <valid> <foo bar=""/> </valid> <invalid> <foo/> </invalid> </testCase> </testSuite> <testSuite> <section>6.2.6</section> <testCase> <section>6.2.6</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <interleave> <element name="bar"> <empty/> </element> <element name="baz"> <empty/> </element> </interleave> </element> </correct> <valid> <foo><bar/><baz/></foo> </valid> <valid> <foo><baz/><bar/></foo> </valid> <invalid> <foo><bar/></foo> </invalid> <invalid> <foo><baz/></foo> </invalid> <invalid> <foo><bar/><bar/></foo> </invalid> <invalid> <foo/> </invalid> </testCase> <testCase> <section>6.2.6</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <interleave> <group> <element name="bar1"> <empty/> </element> <element name="bar2"> <empty/> </element> </group> <element name="baz"> <empty/> </element> </interleave> </element> </correct> <valid> <foo><baz/><bar1/><bar2/></foo> </valid> <valid> <foo><bar1/><baz/><bar2/></foo> </valid> <valid> <foo><bar1/><bar2/><baz/></foo> </valid> <invalid> <foo><baz/><bar2/><bar1/></foo> </invalid> <invalid> <foo><bar2/><bar1/></foo> </invalid> <invalid> <foo><baz/><bar2/><bar1/></foo> </invalid> <invalid> <foo><baz/><bar1/></foo> </invalid> <invalid> <foo><baz/><bar2/></foo> </invalid> </testCase> <testCase> <section>6.2.6</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <interleave> <attribute name="bar"> <text/> </attribute> <attribute name="baz"> <text/> </attribute> </interleave> </element> </correct> <valid> <foo bar="" baz=""/> </valid> <invalid> <foo/> </invalid> <invalid> <foo/> </invalid> <invalid> <foo bar=""/> </invalid> <invalid> <foo baz=""/> </invalid> </testCase> <testCase> <section>6.2.6</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <interleave> <element name="bar"> <empty/> </element> <attribute name="baz"> <text/> </attribute> </interleave> </element> </correct> <valid> <foo baz=""><bar/></foo> </valid> <invalid> <foo/> </invalid> <invalid> <foo bar=""/> </invalid> <invalid> <foo bar=""><baz/><baz/></foo> </invalid> <invalid> <foo><baz/><baz/></foo> </invalid> </testCase> </testSuite> <testSuite> <section>6.2.7</section> <testCase> <section>6.2.7</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute> <name ns="">bar</name> <value type="string" datatypeLibrary="">baz</value> </attribute> </element> </correct> <valid> <foo bar="baz"/> </valid> <invalid> <foo bar=" baz"/> </invalid> <invalid> <foo bar="b"/> </invalid> <invalid> <foo bar=""/> </invalid> <invalid> <foo bar=" "/> </invalid> <invalid> <foo><bar>baz</bar></foo> </invalid> </testCase> <testCase> <section>6.2.7</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute> <name ns="">bar</name> <choice> <value type="string" datatypeLibrary="">baz</value> <empty/> </choice> </attribute> </element> </correct> <valid> <foo bar="baz"/> </valid> <valid> <foo bar=""/> </valid> <invalid> <foo bar=" baz"/> </invalid> <invalid> <foo bar="b"/> </invalid> <invalid> <foo><bar>baz</bar></foo> </invalid> <invalid> <foo><bar/></foo> </invalid> <invalid> <foo/> </invalid> </testCase> <testCase> <section>6.2.7</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute> <name ns="">bar</name> <value type="string"/> </attribute> </element> </correct> <valid> <foo bar=""/> </valid> <invalid> <foo bar=" "/> </invalid> <invalid> <foo bar="x"/> </invalid> </testCase> <testCase> <section>6.2.7</section> <correct> <element xmlns="http://relaxng.org/ns/structure/1.0"> <name ns="">foo</name> <group> <element> <name ns="">bar</name> <empty/> </element> <element> <name ns="">baz</name> <empty/> </element> </group> </element> </correct> <valid> <foo><bar/><baz/></foo> </valid> <valid> <foo> <bar/> <baz/> </foo> </valid> <valid> <foo> <bar/> 
 <baz/> </foo> </valid> <invalid> <foo/> </invalid> <invalid> <bar><bar/><baz/></bar> </invalid> </testCase> <testCase> <section>6.2.7</section> <section>6.2.8</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <value type="string"/> </element> </correct> <valid><foo/></valid> <invalid><foo> </foo></invalid> <invalid><foo>x</foo></invalid> </testCase> <testCase> <section>6.2.7</section> <section>6.2.8</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <choice> <value type="string"/> <empty/> </choice> </element> </correct> <valid><foo/></valid> <valid><foo> </foo></valid> <invalid><foo>x</foo></invalid> </testCase> <testCase> <section>6.2.7</section> <section>6.2.8</section> <section>6.2.10</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <list> <data type="token"/> </list> </element> </correct> <invalid><foo/></invalid> <invalid><foo> </foo></invalid> <valid><foo>x</foo></valid> <valid><foo> x </foo></valid> <invalid><foo>x y</foo></invalid> </testCase> <testCase> <section>6.2.7</section> <section>6.2.8</section> <requires datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <data type="string" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> <param name="minLength">2</param> </data> </element> </correct> <valid><foo>xx</foo></valid> <valid><foo>xxx</foo></valid> <valid><foo> </foo></valid> <valid><foo> </foo></valid> <invalid><foo>x</foo></invalid> <invalid><foo> </foo></invalid> <invalid><foo/></invalid> </testCase> <testCase> <section>6.2.7</section> <section>6.2.8</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <choice> <value>x</value> <element name="bar"> <empty/> </element> </choice> </element> </correct> <valid><foo> x </foo></valid> <valid><foo>x</foo></valid> <invalid><foo>y</foo></invalid> <valid><foo><bar/></foo></valid> <valid> <foo> <bar/> </foo> </valid> <invalid><foo>x<bar/></foo></invalid> <invalid><foo/></invalid> <invalid><foo><bar/>x</foo></invalid> </testCase> <testCase> <section>6.2.7</section> <section>6.2.8</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <choice> <value>x</value> <mixed> <element name="bar"> <empty/> </element> </mixed> </choice> </element> </correct> <valid><foo> x </foo></valid> <valid><foo>x</foo></valid> <invalid><foo>y</foo></invalid> <valid><foo><bar/></foo></valid> <valid> <foo> <bar/> </foo> </valid> <valid><foo>x<bar/></foo></valid> <invalid><foo/></invalid> <valid><foo><bar/>x</foo></valid> </testCase> </testSuite> <testSuite> <section>6.2.8</section> <testCase> <section>6.2.8</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <data type="string"> <except> <choice> <value>x</value> <value>y</value> </choice> </except> </data> </element> </correct> <valid> <foo>xyzzy</foo> </valid> <invalid> <foo>x</foo> </invalid> <invalid> <foo>y</foo> </invalid> <invalid> <foo> x</foo> </invalid> </testCase> <testCase> <section>6.2.8</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <data type="string"/> </element> </correct> <valid> <foo/> </valid> </testCase> <testCase> <section>6.2.8</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <value/> </element> </correct> <valid> <foo/> </valid> </testCase> <testCase> <section>6.2.8</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <data type="string"> <except> <value/> </except> </data> </element> </correct> <invalid> <foo/> </invalid> <valid> <foo>x</foo> </valid> </testCase> </testSuite> <testSuite> <section>6.2.9</section> <testCase> <section>6.2.9</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <data type="string" datatypeLibrary=""/> </element> </correct> <valid> <foo>xyzzy</foo> </valid> <valid> <foo> x <?target data?> y <?target data?> z </foo> </valid> <valid> <foo></foo> </valid> <valid> <foo> </foo> </valid> <invalid> <foo><bar/></foo> </invalid> <invalid> <foo bar=""/> </invalid> </testCase> <testCase> <section>6.2.9</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <data type="token" datatypeLibrary=""/> </element> </correct> <valid> <foo>xyzzy</foo> </valid> <valid> <foo> x <?target data?> y <?target data?> z </foo> </valid> <valid> <foo></foo> </valid> <valid> <foo> </foo> </valid> <invalid> <foo><bar/></foo> </invalid> <invalid> <foo bar=""/> </invalid> </testCase> <testCase> <section>6.2.9</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <value type="string" datatypeLibrary="">x</value> </element> </correct> <valid><foo>x</foo></valid> <invalid><foo>xy</foo></invalid> <invalid><foo> x</foo></invalid> <invalid><foo/></invalid> </testCase> <testCase> <section>6.2.9</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <value type="string" datatypeLibrary=""> x</value> </element> </correct> <valid><foo> x</foo></valid> <invalid><foo> xy</foo></invalid> <invalid><foo>x</foo></invalid> <invalid><foo/></invalid> </testCase> <testCase> <section>6.2.9</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <value type="token" datatypeLibrary="">x</value> </element> </correct> <valid><foo>x</foo></valid> <valid><foo> x</foo></valid> <valid><foo>x </foo></valid> <valid><foo>

	 x

	 </foo></valid> <invalid><foo/></invalid> <invalid><foo>xy</foo></invalid> </testCase> <testCase> <section>6.2.9</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <value type="token" datatypeLibrary="">x y</value> </element> </correct> <valid><foo>x y</foo></valid> <valid><foo> x y </foo></valid> <valid><foo>x

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

	 x

	 </value> </element> </correct> <valid><foo>x</foo></valid> <valid><foo> x</foo></valid> <valid><foo>x </foo></valid> <valid><foo>
	x 
</foo></valid> <invalid><foo/></invalid> <invalid><foo>xy</foo></invalid> </testCase> <testCase> <section>6.2.9</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <value type="token" datatypeLibrary="">x

	 y</value> </element> </correct> <valid><foo>x y</foo></valid> <valid><foo>x y</foo></valid> <valid><foo> x y </foo></valid> <valid><foo>x
	y</foo></valid> <valid><foo>x 
y</foo></valid> <invalid><foo/></invalid> <invalid><foo>xy</foo></invalid> </testCase> <testCase> <section>6.2.9</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <data type="decimal" datatypeLibrary=""/> </element> </incorrect> </testCase> <testCase> <section>6.2.9</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <value type="decimal" datatypeLibrary=""/> </element> </incorrect> </testCase> <testCase> <section>6.2.9</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <data type="string" datatypeLibrary=""> <param name="length">2</param> </data> </element> </incorrect> </testCase> <testCase> <section>6.2.9</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <data type="token" datatypeLibrary=""> <param name="length">2</param> </data> </element> </incorrect> </testCase> </testSuite> <testSuite> <section>6.2.10</section> <testCase> <section>6.2.10</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <list> <value type="string">x</value> </list> </element> </correct> <valid> <foo>x</foo> </valid> <valid> <foo> x </foo> </valid> <invalid> <foo>x x</foo> </invalid> </testCase> <testCase> <section>6.2.10</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <list> <oneOrMore> <value type="string">x</value> </oneOrMore> </list> </element> </correct> <valid> <foo>x</foo> </valid> <valid> <foo> x x x x </foo> </valid> <invalid> <foo/> </invalid> <invalid> <foo>x y</foo> </invalid> </testCase> <testCase> <section>6.2.10</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <list> <group> <value type="string">x</value> <value type="string">y</value> </group> </list> </element> </correct> <valid> <foo>x y</foo> </valid> <valid> <foo>x y</foo> </valid> <valid> <foo>
x
y	</foo> </valid> <invalid> <foo>x</foo> </invalid> </testCase> <testCase> <section>6.2.10</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <list> <group> <data type="token"/> <data type="token"/> </group> </list> </element> </correct> <valid> <foo>x y</foo> </valid> <invalid> <foo/> </invalid> <invalid> <foo>x y z</foo> </invalid> </testCase> <testCase> <section>6.2.10</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <list> <value>x y</value> </list> </element> </correct> <invalid> <foo>x y</foo> </invalid> </testCase> </testSuite> </testSuite> </testSuite> <testSuite> <section>7</section> <testSuite> <section>7.1</section> <testCase> <section>7.1.1</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <attribute name="bar"> <element name="baz"> <empty/> </element> </attribute> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.1</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <attribute name="bar"> <choice> <element name="baz"> <empty/> </element> <text/> </choice> </attribute> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.1</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <attribute name="bar"> <attribute name="baz"/> </attribute> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.1</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <attribute name="bar"> <choice> <attribute name="baz"/> <text/> </choice> </attribute> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.2</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <oneOrMore> <group> <attribute name="bar"/> <attribute name="baz"/> </group> </oneOrMore> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.2</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <oneOrMore> <group> <attribute> <anyName/> </attribute> <attribute> <anyName/> </attribute> </group> </oneOrMore> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.2</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <oneOrMore> <choice> <group> <choice> <attribute name="bar"/> <attribute name="baz"/> </choice> <choice> <attribute name="bar"/> <attribute name="baz"/> </choice> </group> <attribute name="bar"/> </choice> </oneOrMore> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.2</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <oneOrMore> <interleave> <attribute name="bar"/> <attribute name="baz"/> </interleave> </oneOrMore> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.2</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <oneOrMore> <interleave> <attribute> <anyName/> </attribute> <attribute> <anyName/> </attribute> </interleave> </oneOrMore> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.2</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <oneOrMore> <choice> <interleave> <choice> <attribute name="bar"/> <attribute name="baz"/> </choice> <choice> <attribute name="bar"/> <attribute name="baz"/> </choice> </interleave> <attribute name="bar"/> </choice> </oneOrMore> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.3</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <list> <list> <data type="token"/> </list> </list> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.3</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <list> <choice> <list> <data type="token"/> </list> <data type="token"/> </choice> </list> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.3</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <list> <element name="bar"> <empty/> </element> </list> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.3</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <list> <choice> <data type="token"/> <element name="bar"> <empty/> </element> </choice> </list> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.3</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <list> <attribute name="bar"> <empty/> </attribute> </list> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.3</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <list> <choice> <attribute name="bar"> <empty/> </attribute> <data type="token"/> </choice> </list> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.3</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <list> <choice> <text/> <data type="token"/> </choice> </list> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.3</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <list> <interleave> <value>x</value> <value>y</value> </interleave> </list> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.3</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <list> <choice> <interleave> <value>x</value> <value>y</value> </interleave> <value>z</value> </choice> </list> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.4</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <data type="string"> <except> <attribute name="bar"/> </except> </data> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.4</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <data type="string"> <except> <element name="bar"> <empty/> </element> </except> </data> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.4</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <data type="string"> <except> <text/> </except> </data> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.4</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <data type="string"> <except> <list> <data type="token"/> </list> </except> </data> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.4</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <data type="string"> <except> <group> <data type="token"/> <data type="token"/> </group> </except> </data> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.4</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <data type="string"> <except> <interleave> <data type="token"/> <data type="token"/> </interleave> </except> </data> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.4</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <data type="string"> <except> <oneOrMore> <data type="token"/> </oneOrMore> </except> </data> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.4</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <data type="string"> <except> <empty/> </except> </data> </element> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.5</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <attribute name="foo"/> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.5</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <data type="string"/> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.5</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <choice> <data type="string"/> <element name="foo"> <empty/> </element> </choice> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.5</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <choice> <value>foo</value> <element name="foo"> <empty/> </element> </choice> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.5</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <text/> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.5</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <choice> <text/> <element name="foo"> <empty/> </element> </choice> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.5</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <list> <data type="token"/> </list> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.5</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <choice> <element name="foo"> <empty/> </element> <list> <data type="token"/> </list> </choice> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.5</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <group> <element name="foo"> <empty/> </element> <element name="foo"> <empty/> </element> </group> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.5</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <choice> <element name="foo"> <empty/> </element> <group> <element name="foo"> <empty/> </element> <element name="foo"> <empty/> </element> </group> </choice> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.5</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <interleave> <element name="foo"> <empty/> </element> <element name="foo"> <empty/> </element> </interleave> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.5</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <choice> <element name="foo"> <empty/> </element> <interleave> <element name="foo"> <empty/> </element> <element name="foo"> <empty/> </element> </interleave> </choice> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.5</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <oneOrMore> <element name="foo"> <empty/> </element> </oneOrMore> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.5</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <choice> <oneOrMore> <element name="foo"> <empty/> </element> </oneOrMore> <element name="foo"> <empty/> </element> </choice> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.5</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <empty/> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.5</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <choice> <element name="foo"> <empty/> </element> <empty/> </choice> </start> </grammar> </incorrect> </testCase> <testCase> <section>7.1.5</section> <section>7</section> <section>4.18</section> <documentation>Tests that constraints are post-normalization</documentation> <correct> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> <grammar> <start> <text/> </start> </grammar> </element> </correct> <valid> <foo>text</foo> </valid> </testCase> <testCase> <section>7.1.5</section> <section>7</section> <section>4.18</section> <incorrect> <text xmlns="http://relaxng.org/ns/structure/1.0"/> </incorrect> </testCase> <testCase> <section>7.1.1</section> <section>7</section> <section>4.20</section> <correct> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> <optional> <attribute name="bar"> <group> <notAllowed/> <attribute name="baz"/> </group> </attribute> </optional> </element> </correct> <valid> <foo/> </valid> </testCase> <testCase> <section>7.1.1</section> <section>7</section> <section>4.20</section> <documentation>The nested attribute element is normalized out because of the not allowed.</documentation> <correct> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> <attribute name="bar"> <choice> <text/> <group> <notAllowed/> <attribute name="baz"/> </group> </choice> </attribute> </element> </correct> <valid> <foo bar="baz"/> </valid> </testCase> <testCase> <section>7.1.2</section> <section>7</section> <section>4.12</section> <documentation>The group element is normalized out.</documentation> <correct> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <oneOrMore> <group> <attribute> <anyName/> </attribute> </group> </oneOrMore> </element> </start> </grammar> </correct> <valid> <foo xyzzy1="val1" xyzzy2="val2"/> </valid> </testCase> <testCase> <section>7.1.2</section> <section>7</section> <section>4.21</section> <documentation>The group element is normalized out.</documentation> <correct> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <oneOrMore> <group> <attribute> <anyName/> </attribute> <empty/> </group> </oneOrMore> </element> </start> </grammar> </correct> <valid> <foo xyzzy1="val1" xyzzy2="val2"/> </valid> </testCase> <testCase> <section>7.1.2</section> <section>7</section> <section>4.20</section> <documentation>The attribute elements are all normalized out.</documentation> <correct> <element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> <optional> <attribute name="a1"> <attribute name="a2"> <attribute name="a3"> <notAllowed/> </attribute> </attribute> </attribute> </optional> </element> </correct> <valid> <foo/> </valid> </testCase> </testSuite> <testSuite> <section>7.2</section> <testCase> <section>7.2</section> <incorrect> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <group> <data type="token"/> <data type="token"/> </group> </element> </start> </grammar> </incorrect> </testCase> <testCase> <documentation>Checks that normalization of notAllowed happens before string sequence checking.</documentation> <section>7.2</section> <section>4.20</section> <correct> <choice xmlns="http://relaxng.org/ns/structure/1.0"> <element name="foo"> <empty/> </element> <group> <notAllowed/> <element name="bar"> <group> <data type="token"/> <data type="token"/> </group> </element> </group> </choice> </correct> <valid> <foo/> </valid> </testCase> <testCase> <section>4.20</section> <section>7.2</section> <documentation>notAllowed in an element is not normalized</documentation> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <choice> <group> <element name="bar"> <notAllowed/> </element> <data type="token"/> <data type="token"/> </group> <element name="baz"> <empty/> </element> </choice> </element> </incorrect> </testCase> </testSuite> <testSuite> <section>7.3</section> <testCase> <section>7.3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute name="bar"/> <attribute name="bar"/> </element> </incorrect> </testCase> <testCase> <section>7.3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute name="bar"/> <zeroOrMore> <attribute name="bar"/> </zeroOrMore> </element> </incorrect> </testCase> <testCase> <section>7.3</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <oneOrMore> <attribute name="bar"/> </oneOrMore> </element> </correct> <valid> <foo bar="xx"/> </valid> </testCase> <testCase> <section>7.3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <interleave> <attribute name="bar"/> <attribute name="bar"/> </interleave> </element> </incorrect> </testCase> <testCase> <section>7.3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <optional> <attribute name="bar"/> </optional> <optional> <attribute name="bar"/> </optional> </element> </incorrect> </testCase> <testCase> <section>7.3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute name="bar"/> <oneOrMore> <attribute> <anyName/> </attribute> </oneOrMore> </element> </incorrect> </testCase> <testCase> <section>7.3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute name="bar"/> <oneOrMore> <attribute> <anyName> <except> <name>baz</name> </except> </anyName> </attribute> </oneOrMore> </element> </incorrect> </testCase> <testCase> <section>7.3</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute name="bar"/> <oneOrMore> <attribute> <anyName> <except> <name>bar</name> </except> </anyName> </attribute> </oneOrMore> </element> </correct> <valid> <foo bar="val" xyzzy="anotherval"/> </valid> <valid> <foo bar="val" baz=""/> </valid> <invalid> <foo bar="val"/> </invalid> <invalid> <foo/> </invalid> <invalid> <foo xyzzy="val"/> </invalid> </testCase> <testCase> <section>7.3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute name="bar"/> <oneOrMore> <attribute> <nsName ns=""/> </attribute> </oneOrMore> </element> </incorrect> </testCase> <testCase> <section>7.3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute name="bar"/> <oneOrMore> <attribute> <nsName ns=""> <except> <name>baz</name> </except> </nsName> </attribute> </oneOrMore> </element> </incorrect> </testCase> <testCase> <section>7.3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <oneOrMore> <attribute> <anyName/> </attribute> </oneOrMore> <oneOrMore> <attribute> <nsName ns=""/> </attribute> </oneOrMore> </element> </incorrect> </testCase> <testCase> <section>7.3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <oneOrMore> <attribute> <anyName/> </attribute> </oneOrMore> <oneOrMore> <attribute> <anyName/> </attribute> </oneOrMore> </element> </incorrect> </testCase> <testCase> <section>7.3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <oneOrMore> <attribute> <nsName ns=""/> </attribute> </oneOrMore> <oneOrMore> <attribute> <nsName ns=""> <except> <name>bar</name> </except> </nsName> </attribute> </oneOrMore> </element> </incorrect> </testCase> <testCase> <section>7.3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <oneOrMore> <attribute> <anyName> <except> <nsName> <except> <name>foo</name> </except> </nsName> </except> </anyName> </attribute> </oneOrMore> <attribute name="foo"/> </element> </incorrect> </testCase> <testCase> <section>7.3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <oneOrMore> <attribute> <anyName> <except> <nsName> <except> <name>foo</name> </except> </nsName> </except> </anyName> </attribute> </oneOrMore> <oneOrMore> <attribute> <nsName/> </attribute> </oneOrMore> </element> </incorrect> </testCase> <testCase> <section>7.3</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <oneOrMore> <attribute> <anyName> <except> <nsName> <except> <name>bar</name> </except> </nsName> </except> </anyName> </attribute> </oneOrMore> <attribute name="baz"/> </element> </correct> <valid> <foo bar="xx" baz="yy"/> </valid> <invalid> <foo x="xx" baz="yy"/> </invalid> <valid> <foo xmlns:eg="http://www.example.com/" eg:x="xx" baz="yy"/> </valid> </testCase> <testCase> <section>7.3</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <oneOrMore> <attribute> <nsName ns="http://www.example.com/1"/> </attribute> </oneOrMore> <oneOrMore> <attribute> <nsName ns="http://www.example.com/2"/> </attribute> </oneOrMore> </element> </correct> <valid> <foo xmlns:eg1="http://www.example.com/1" xmlns:eg2="http://www.example.com/2" eg1:x="xx" eg2:y="yy"/> </valid> </testCase> <testCase> <section>7.3</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <choice> <attribute name="bar"/> <attribute name="bar"/> </choice> </element> </correct> <valid> <foo bar="xx"/> </valid> </testCase> <testCase> <section>7.3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute name="bar"/> <choice> <attribute name="baz"/> <attribute name="bar"/> </choice> </element> </incorrect> </testCase> <testCase> <section>7.3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute><anyName/><text/></attribute> </element> </incorrect> </testCase> <testCase> <section>7.3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute><nsName ns =""/><text/></attribute> </element> </incorrect> </testCase> <testCase> <section>7.3</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <attribute><choice><nsName ns =""/><name>foo</name></choice><text/></attribute> </element> </incorrect> </testCase> </testSuite> <testSuite> <section>7.4</section> <testCase> <section>7.4</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <interleave> <element name="bar"> <empty/> </element> <element name="bar"> <empty/> </element> </interleave> </element> </incorrect> </testCase> <testCase> <section>7.4</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <interleave> <element name="bar"> <empty/> </element> <interleave> <element name="baz"> <empty/> </element> <element name="bar"> <empty/> </element> </interleave> </interleave> </element> </incorrect> </testCase> <testCase> <section>7.4</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <interleave> <element name="bar"> <empty/> </element> <group> <element name="baz"> <empty/> </element> <element name="bar"> <empty/> </element> </group> </interleave> </element> </incorrect> </testCase> <testCase> <section>7.4</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <interleave> <element name="bar"> <empty/> </element> <group> <element name="baz"> <empty/> </element> <interleave> <element name="baz"> <empty/> </element> <element name="bar"> <empty/> </element> </interleave> </group> </interleave> </element> </incorrect> </testCase> <testCase> <section>7.4</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <interleave> <element name="bar"> <empty/> </element> <optional> <element name="bar"> <empty/> </element> </optional> </interleave> </element> </incorrect> </testCase> <testCase> <section>7.4</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <interleave> <element name="bar"> <empty/> </element> <element> <nsName ns=""/> <empty/> </element> </interleave> </element> </incorrect> </testCase> <testCase> <section>7.4</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <interleave> <element name="bar"> <empty/> </element> <element> <anyName/> <empty/> </element> </interleave> </element> </incorrect> </testCase> <testCase> <section>7.4</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <interleave> <element name="bar"> <empty/> </element> <element name="bar"> <notAllowed/> </element> </interleave> </element> </incorrect> </testCase> <testCase> <section>7.4</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <interleave> <element name="bar"> <empty/> </element> <element> <anyName> <except> <name>bar</name> </except> </anyName> <empty/> </element> </interleave> </element> </correct> <valid> <foo><bar/><baz/></foo> </valid> </testCase> <testCase> <section>7.4</section> <correct> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <interleave> <choice> <element name="bar"> <empty/> </element> <element name="bar"> <text/> </element> </choice> <element name="baz"> <empty/> </element> </interleave> </element> </correct> <valid> <foo><bar/><baz/></foo> </valid> </testCase> <testCase> <section>7.4</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <interleave> <text/> <text/> </interleave> </element> </incorrect> </testCase> <testCase> <section>7.4</section> <incorrect> <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> <mixed> <mixed> <element name="bar"> <empty/> </element> </mixed> <element name="baz"> <empty/> </element> </mixed> </element> </incorrect> </testCase> </testSuite> </testSuite> <testSuite> <documentation>Regressions</documentation> <testCase> <correct> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="foo"> <choice> <group> <attribute name="bar"><empty/></attribute> <element name="baz1"><empty/></element> </group> <group> <attribute name="bar"><text/></attribute> <element name="baz2"><empty/></element> </group> </choice> </element> </start> </grammar> </correct> <valid> <foo bar=" "><baz1/></foo> </valid> </testCase> <testCase> <correct> <notAllowed xmlns="http://relaxng.org/ns/structure/1.0"/> </correct> <invalid> <foo/> </invalid> </testCase> </testSuite> </testSuite>