summaryrefslogtreecommitdiffstats
path: root/spectest.xml
diff options
context:
space:
mode:
Diffstat (limited to 'spectest.xml')
-rw-r--r--spectest.xml13690
1 files changed, 6845 insertions, 6845 deletions
diff --git a/spectest.xml b/spectest.xml
index 18afb2e..b43d460 100644
--- a/spectest.xml
+++ b/spectest.xml
@@ -1,6845 +1,6845 @@
-<!DOCTYPE testSuite [
-<!ENTITY dii "<&#xE14;&#xE35;/>">
-]>
-<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="&#xE14;&#xE35;">
- <empty/>
- </element>
-</element>
-</correct>
-<valid>
-<foo>&dii;</foo>
-</valid>
-</testCase>
-<testCase>
-<section>3</section>
-<incorrect>
-<element name="&#xE35;" 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>&#xE35;</name>
- <empty/>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>3</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <attribute name="&#xE35;"/>
- <empty/>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>3</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
- <start>
- <ref name="&#xE35;"/>
- </start>
- <define name="&#xE35;">
- <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="&#xE14;&#xE35;"/>
- </start>
- <define name="&#xE14;&#xE35;">
- <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:&#xE35;">
- <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="&#xA;&#xD;&#x20;&#x9;foo&#xA;&#xD;&#x20;&#x9;" xmlns="http://relaxng.org/ns/structure/1.0">
- <attribute name="&#xA;&#xD;&#x20;&#x9;bar&#xA;&#xD;&#x20;&#x9;"/>
-</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="&#xA;&#xD;&#x20;&#x9;string&#xA;&#xD;&#x20;&#x9;">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="&#xA;&#xD;&#x20;&#x9;string&#xA;&#xD;&#x20;&#x9;"/>
-</element>
-</correct>
-<valid>
-<foo>X</foo>
-</valid>
-</testCase>
-<testCase>
-<section>4.2</section>
-<correct>
-<element xmlns="http://relaxng.org/ns/structure/1.0">
- <name>&#xA;&#xD;&#x20;&#x9;foo&#xA;&#xD;&#x20;&#x9;</name>
- <attribute><name>&#xA;&#xD;&#x20;&#x9;bar&#xA;&#xD;&#x20;&#x9;</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="&#xA;&#xD;&#x20;&#x9;choice&#xA;&#xD;&#x20;&#x9;">
- <ref name="&#xA;&#xD;&#x20;&#x9;x&#xA;&#xD;&#x20;&#x9;"/>
- </start>
- <define name="x">
- <ref name="y"/>
- </define>
- <define name="&#xA;&#xD;&#x20;&#x9;y&#xA;&#xD;&#x20;&#x9;">
- <grammar>
- <start combine="&#xA;&#xD;&#x20;&#x9;interleave&#xA;&#xD;&#x20;&#x9;">
- <parentRef name="&#xA;&#xD;&#x20;&#x9;z&#xA;&#xD;&#x20;&#x9;"/>
- </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/>
-&#xD;
-<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>&#xA;&#xD;&#x9;&#x20;x&#xA;&#xD;&#x9;&#x20;</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&#xA;&#xD;&#x9;&#x20;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="">&#xA;&#xD;&#x9;&#x20;x&#xA;&#xD;&#x9;&#x20;</value>
-</element>
-</correct>
-<valid><foo>x</foo></valid>
-<valid><foo> x</foo></valid>
-<valid><foo>x </foo></valid>
-<valid><foo>&#xD;&#x9;x&#x20;&#xA;</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&#xA;&#xD;&#x9;&#x20;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&#xD;&#x9;y</foo></valid>
-<valid><foo>x&#x20;&#xA;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>&#xD;x&#xA;y&#x9;</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>
+<!DOCTYPE testSuite [
+<!ENTITY dii "<&#xE14;&#xE35;/>">
+]>
+<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="&#xE14;&#xE35;">
+ <empty/>
+ </element>
+</element>
+</correct>
+<valid>
+<foo>&dii;</foo>
+</valid>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element name="&#xE35;" 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>&#xE35;</name>
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute name="&#xE35;"/>
+ <empty/>
+</element>
+</incorrect>
+</testCase>
+<testCase>
+<section>3</section>
+<incorrect>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <ref name="&#xE35;"/>
+ </start>
+ <define name="&#xE35;">
+ <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="&#xE14;&#xE35;"/>
+ </start>
+ <define name="&#xE14;&#xE35;">
+ <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:&#xE35;">
+ <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="&#xA;&#xD;&#x20;&#x9;foo&#xA;&#xD;&#x20;&#x9;" xmlns="http://relaxng.org/ns/structure/1.0">
+ <attribute name="&#xA;&#xD;&#x20;&#x9;bar&#xA;&#xD;&#x20;&#x9;"/>
+</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="&#xA;&#xD;&#x20;&#x9;string&#xA;&#xD;&#x20;&#x9;">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="&#xA;&#xD;&#x20;&#x9;string&#xA;&#xD;&#x20;&#x9;"/>
+</element>
+</correct>
+<valid>
+<foo>X</foo>
+</valid>
+</testCase>
+<testCase>
+<section>4.2</section>
+<correct>
+<element xmlns="http://relaxng.org/ns/structure/1.0">
+ <name>&#xA;&#xD;&#x20;&#x9;foo&#xA;&#xD;&#x20;&#x9;</name>
+ <attribute><name>&#xA;&#xD;&#x20;&#x9;bar&#xA;&#xD;&#x20;&#x9;</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="&#xA;&#xD;&#x20;&#x9;choice&#xA;&#xD;&#x20;&#x9;">
+ <ref name="&#xA;&#xD;&#x20;&#x9;x&#xA;&#xD;&#x20;&#x9;"/>
+ </start>
+ <define name="x">
+ <ref name="y"/>
+ </define>
+ <define name="&#xA;&#xD;&#x20;&#x9;y&#xA;&#xD;&#x20;&#x9;">
+ <grammar>
+ <start combine="&#xA;&#xD;&#x20;&#x9;interleave&#xA;&#xD;&#x20;&#x9;">
+ <parentRef name="&#xA;&#xD;&#x20;&#x9;z&#xA;&#xD;&#x20;&#x9;"/>
+ </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/>
+&#xD;
+<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>&#xA;&#xD;&#x9;&#x20;x&#xA;&#xD;&#x9;&#x20;</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&#xA;&#xD;&#x9;&#x20;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="">&#xA;&#xD;&#x9;&#x20;x&#xA;&#xD;&#x9;&#x20;</value>
+</element>
+</correct>
+<valid><foo>x</foo></valid>
+<valid><foo> x</foo></valid>
+<valid><foo>x </foo></valid>
+<valid><foo>&#xD;&#x9;x&#x20;&#xA;</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&#xA;&#xD;&#x9;&#x20;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&#xD;&#x9;y</foo></valid>
+<valid><foo>x&#x20;&#xA;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>&#xD;x&#xA;y&#x9;</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>