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

 	foo

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

 	bar

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

 	string

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

 	string

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

 	foo

 	</name>
- <attribute><name>

 	bar

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

 	choice

 	">
- <ref name="

 	x

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

 	y

 	">
- <grammar>
- <start combine="

 	interleave

 	">
- <parentRef name="

 	z

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

	 x

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

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

	 x

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

	 y</value>
-</element>
-</correct>
-<valid><foo>x y</foo></valid>
-<valid><foo>x y</foo></valid>
-<valid><foo> x y </foo></valid>
-<valid><foo>x
	y</foo></valid>
-<valid><foo>x 
y</foo></valid>
-<invalid><foo/></invalid>
-<invalid><foo>xy</foo></invalid>
-</testCase>
-<testCase>
-<section>6.2.9</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <data type="decimal" datatypeLibrary=""/>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>6.2.9</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <value type="decimal" datatypeLibrary=""/>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>6.2.9</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <data type="string" datatypeLibrary="">
- <param name="length">2</param>
- </data>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>6.2.9</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <data type="token" datatypeLibrary="">
- <param name="length">2</param>
- </data>
-</element>
-</incorrect>
-</testCase>
-</testSuite>
-<testSuite>
-<section>6.2.10</section>
-<testCase>
-<section>6.2.10</section>
-<correct>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <list>
- <value type="string">x</value>
- </list>
-</element>
-</correct>
-<valid>
-<foo>x</foo>
-</valid>
-<valid>
-<foo> x </foo>
-</valid>
-<invalid>
-<foo>x x</foo>
-</invalid>
-</testCase>
-<testCase>
-<section>6.2.10</section>
-<correct>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <list>
- <oneOrMore>
- <value type="string">x</value>
- </oneOrMore>
- </list>
-</element>
-</correct>
-<valid>
-<foo>x</foo>
-</valid>
-<valid>
-<foo> x x x x </foo>
-</valid>
-<invalid>
-<foo/>
-</invalid>
-<invalid>
-<foo>x y</foo>
-</invalid>
-</testCase>
-<testCase>
-<section>6.2.10</section>
-<correct>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <list>
- <group>
- <value type="string">x</value>
- <value type="string">y</value>
- </group>
- </list>
-</element>
-</correct>
-<valid>
-<foo>x y</foo>
-</valid>
-<valid>
-<foo>x y</foo>
-</valid>
-<valid>
-<foo>
x
y	</foo>
-</valid>
-<invalid>
-<foo>x</foo>
-</invalid>
-</testCase>
-<testCase>
-<section>6.2.10</section>
-<correct>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <list>
- <group>
- <data type="token"/>
- <data type="token"/>
- </group>
- </list>
-</element>
-</correct>
-<valid>
-<foo>x y</foo>
-</valid>
-<invalid>
-<foo/>
-</invalid>
-<invalid>
-<foo>x y z</foo>
-</invalid>
-</testCase>
-<testCase>
-<section>6.2.10</section>
-<correct>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <list>
- <value>x y</value>
- </list>
-</element>
-</correct>
-<invalid>
-<foo>x y</foo>
-</invalid>
-</testCase>
-</testSuite>
-</testSuite>
-</testSuite>
-<testSuite>
-<section>7</section>
-<testSuite>
-<section>7.1</section>
-<testCase>
-<section>7.1.1</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <attribute name="bar">
- <element name="baz">
- <empty/>
- </element>
- </attribute>
- </element>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.1</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <attribute name="bar">
- <choice>
- <element name="baz">
- <empty/>
- </element>
- <text/>
- </choice>
- </attribute>
- </element>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.1</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <attribute name="bar">
- <attribute name="baz"/>
- </attribute>
- </element>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.1</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <attribute name="bar">
- <choice>
- <attribute name="baz"/>
- <text/>
- </choice>
- </attribute>
- </element>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.2</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <oneOrMore>
- <group>
- <attribute name="bar"/>
- <attribute name="baz"/>
- </group>
- </oneOrMore>
- </element>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.2</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <oneOrMore>
- <group>
- <attribute>
- <anyName/>
- </attribute>
- <attribute>
- <anyName/>
- </attribute>
- </group>
- </oneOrMore>
- </element>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.2</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <oneOrMore>
- <choice>
- <group>
- <choice>
- <attribute name="bar"/>
- <attribute name="baz"/>
- </choice>
- <choice>
- <attribute name="bar"/>
- <attribute name="baz"/>
- </choice>
- </group>
- <attribute name="bar"/>
- </choice>
- </oneOrMore>
- </element>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.2</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <oneOrMore>
- <interleave>
- <attribute name="bar"/>
- <attribute name="baz"/>
- </interleave>
- </oneOrMore>
- </element>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.2</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <oneOrMore>
- <interleave>
- <attribute>
- <anyName/>
- </attribute>
- <attribute>
- <anyName/>
- </attribute>
- </interleave>
- </oneOrMore>
- </element>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.2</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <oneOrMore>
- <choice>
- <interleave>
- <choice>
- <attribute name="bar"/>
- <attribute name="baz"/>
- </choice>
- <choice>
- <attribute name="bar"/>
- <attribute name="baz"/>
- </choice>
- </interleave>
- <attribute name="bar"/>
- </choice>
- </oneOrMore>
- </element>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.3</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <list>
- <list>
- <data type="token"/>
- </list>
- </list>
- </element>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.3</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <list>
- <choice>
- <list>
- <data type="token"/>
- </list>
- <data type="token"/>
- </choice>
- </list>
- </element>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.3</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <list>
- <element name="bar">
- <empty/>
- </element>
- </list>
- </element>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.3</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <list>
- <choice>
- <data type="token"/>
- <element name="bar">
- <empty/>
- </element>
- </choice>
- </list>
- </element>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.3</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <list>
- <attribute name="bar">
- <empty/>
- </attribute>
- </list>
- </element>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.3</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <list>
- <choice>
- <attribute name="bar">
- <empty/>
- </attribute>
- <data type="token"/>
- </choice>
- </list>
- </element>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.3</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <list>
- <choice>
- <text/>
- <data type="token"/>
- </choice>
- </list>
- </element>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.3</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <list>
- <interleave>
- <value>x</value>
- <value>y</value>
- </interleave>
- </list>
- </element>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.3</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <list>
- <choice>
- <interleave>
- <value>x</value>
- <value>y</value>
- </interleave>
- <value>z</value>
- </choice>
- </list>
- </element>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.4</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <data type="string">
- <except>
- <attribute name="bar"/>
- </except>
- </data>
- </element>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.4</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <data type="string">
- <except>
- <element name="bar">
- <empty/>
- </element>
- </except>
- </data>
- </element>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.4</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <data type="string">
- <except>
- <text/>
- </except>
- </data>
- </element>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.4</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <data type="string">
- <except>
- <list>
- <data type="token"/>
- </list>
- </except>
- </data>
- </element>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.4</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <data type="string">
- <except>
- <group>
- <data type="token"/>
- <data type="token"/>
- </group>
- </except>
- </data>
- </element>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.4</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <data type="string">
- <except>
- <interleave>
- <data type="token"/>
- <data type="token"/>
- </interleave>
- </except>
- </data>
- </element>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.4</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <data type="string">
- <except>
- <oneOrMore>
- <data type="token"/>
- </oneOrMore>
- </except>
- </data>
- </element>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.4</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <data type="string">
- <except>
- <empty/>
- </except>
- </data>
- </element>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.5</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <attribute name="foo"/>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.5</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <data type="string"/>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.5</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <choice>
- <data type="string"/>
- <element name="foo">
- <empty/>
- </element>
- </choice>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.5</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <choice>
- <value>foo</value>
- <element name="foo">
- <empty/>
- </element>
- </choice>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.5</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <text/>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.5</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <choice>
- <text/>
- <element name="foo">
- <empty/>
- </element>
- </choice>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.5</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <list>
- <data type="token"/>
- </list>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.5</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <choice>
- <element name="foo">
- <empty/>
- </element>
- <list>
- <data type="token"/>
- </list>
- </choice>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.5</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <group>
- <element name="foo">
- <empty/>
- </element>
- <element name="foo">
- <empty/>
- </element>
- </group>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.5</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <choice>
- <element name="foo">
- <empty/>
- </element>
- <group>
- <element name="foo">
- <empty/>
- </element>
- <element name="foo">
- <empty/>
- </element>
- </group>
- </choice>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.5</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <interleave>
- <element name="foo">
- <empty/>
- </element>
- <element name="foo">
- <empty/>
- </element>
- </interleave>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.5</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <choice>
- <element name="foo">
- <empty/>
- </element>
- <interleave>
- <element name="foo">
- <empty/>
- </element>
- <element name="foo">
- <empty/>
- </element>
- </interleave>
- </choice>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.5</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <oneOrMore>
- <element name="foo">
- <empty/>
- </element>
- </oneOrMore>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.5</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <choice>
- <oneOrMore>
- <element name="foo">
- <empty/>
- </element>
- </oneOrMore>
- <element name="foo">
- <empty/>
- </element>
- </choice>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.5</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <empty/>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.5</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <choice>
- <element name="foo">
- <empty/>
- </element>
- <empty/>
- </choice>
-</start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.5</section>
-<section>7</section>
-<section>4.18</section>
-<documentation>Tests that constraints are post-normalization</documentation>
-<correct>
-<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
- <grammar>
- <start>
- <text/>
- </start>
- </grammar>
-</element>
-</correct>
-<valid>
-<foo>text</foo>
-</valid>
-</testCase>
-<testCase>
-<section>7.1.5</section>
-<section>7</section>
-<section>4.18</section>
-<incorrect>
-<text xmlns="http://relaxng.org/ns/structure/1.0"/>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.1.1</section>
-<section>7</section>
-<section>4.20</section>
-<correct>
-<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
- <optional>
- <attribute name="bar">
- <group>
- <notAllowed/>
- <attribute name="baz"/>
- </group>
- </attribute>
- </optional>
-</element>
-</correct>
-<valid>
-<foo/>
-</valid>
-</testCase>
-<testCase>
-<section>7.1.1</section>
-<section>7</section>
-<section>4.20</section>
-<documentation>The nested attribute element is normalized out because
-of the not allowed.</documentation>
-<correct>
-<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
- <attribute name="bar">
- <choice>
- <text/>
- <group>
- <notAllowed/>
- <attribute name="baz"/>
- </group>
- </choice>
- </attribute>
-</element>
-</correct>
-<valid>
-<foo bar="baz"/>
-</valid>
-</testCase>
-<testCase>
-<section>7.1.2</section>
-<section>7</section>
-<section>4.12</section>
-<documentation>The group element is normalized out.</documentation>
-<correct>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <oneOrMore>
- <group>
- <attribute>
- <anyName/>
- </attribute>
- </group>
- </oneOrMore>
- </element>
-</start>
-</grammar>
-</correct>
-<valid>
-<foo xyzzy1="val1" xyzzy2="val2"/>
-</valid>
-</testCase>
-<testCase>
-<section>7.1.2</section>
-<section>7</section>
-<section>4.21</section>
-<documentation>The group element is normalized out.</documentation>
-<correct>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <oneOrMore>
- <group>
- <attribute>
- <anyName/>
- </attribute>
- <empty/>
- </group>
- </oneOrMore>
- </element>
-</start>
-</grammar>
-</correct>
-<valid>
-<foo xyzzy1="val1" xyzzy2="val2"/>
-</valid>
-</testCase>
-<testCase>
-<section>7.1.2</section>
-<section>7</section>
-<section>4.20</section>
-<documentation>The attribute elements are all normalized out.</documentation>
-<correct>
-<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo">
- <optional>
- <attribute name="a1">
- <attribute name="a2">
- <attribute name="a3">
- <notAllowed/>
- </attribute>
- </attribute>
- </attribute>
- </optional>
-</element>
-</correct>
-<valid>
-<foo/>
-</valid>
-</testCase>
-</testSuite>
-<testSuite>
-<section>7.2</section>
-<testCase>
-<section>7.2</section>
-<incorrect>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
- <start>
- <element name="foo">
- <group>
- <data type="token"/>
- <data type="token"/>
- </group>
- </element>
- </start>
-</grammar>
-</incorrect>
-</testCase>
-<testCase>
-<documentation>Checks that normalization of notAllowed happens
-before string sequence checking.</documentation>
-<section>7.2</section>
-<section>4.20</section>
-<correct>
-<choice xmlns="http://relaxng.org/ns/structure/1.0">
- <element name="foo">
- <empty/>
- </element>
- <group>
- <notAllowed/>
- <element name="bar">
- <group>
- <data type="token"/>
- <data type="token"/>
- </group>
- </element>
- </group>
-</choice>
-</correct>
-<valid>
-<foo/>
-</valid>
-</testCase>
-<testCase>
-<section>4.20</section>
-<section>7.2</section>
-<documentation>notAllowed in an element is not normalized</documentation>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <choice>
- <group>
- <element name="bar">
- <notAllowed/>
- </element>
- <data type="token"/>
- <data type="token"/>
- </group>
- <element name="baz">
- <empty/>
- </element>
- </choice>
-</element>
-</incorrect>
-</testCase>
-</testSuite>
-<testSuite>
-<section>7.3</section>
-<testCase>
-<section>7.3</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <attribute name="bar"/>
- <attribute name="bar"/>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.3</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <attribute name="bar"/>
- <zeroOrMore>
- <attribute name="bar"/>
- </zeroOrMore>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.3</section>
-<correct>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <oneOrMore>
- <attribute name="bar"/>
- </oneOrMore>
-</element>
-</correct>
-<valid>
-<foo bar="xx"/>
-</valid>
-</testCase>
-<testCase>
-<section>7.3</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <interleave>
- <attribute name="bar"/>
- <attribute name="bar"/>
- </interleave>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.3</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <optional>
- <attribute name="bar"/>
- </optional>
- <optional>
- <attribute name="bar"/>
- </optional>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.3</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <attribute name="bar"/>
- <oneOrMore>
- <attribute>
- <anyName/>
- </attribute>
- </oneOrMore>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.3</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <attribute name="bar"/>
- <oneOrMore>
- <attribute>
- <anyName>
- <except>
- <name>baz</name>
- </except>
- </anyName>
- </attribute>
- </oneOrMore>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.3</section>
-<correct>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <attribute name="bar"/>
- <oneOrMore>
- <attribute>
- <anyName>
- <except>
- <name>bar</name>
- </except>
- </anyName>
- </attribute>
- </oneOrMore>
-</element>
-</correct>
-<valid>
-<foo bar="val" xyzzy="anotherval"/>
-</valid>
-<valid>
-<foo bar="val" baz=""/>
-</valid>
-<invalid>
-<foo bar="val"/>
-</invalid>
-<invalid>
-<foo/>
-</invalid>
-<invalid>
-<foo xyzzy="val"/>
-</invalid>
-</testCase>
-<testCase>
-<section>7.3</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <attribute name="bar"/>
- <oneOrMore>
- <attribute>
- <nsName ns=""/>
- </attribute>
- </oneOrMore>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.3</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <attribute name="bar"/>
- <oneOrMore>
- <attribute>
- <nsName ns="">
- <except>
- <name>baz</name>
- </except>
- </nsName>
- </attribute>
- </oneOrMore>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.3</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <oneOrMore>
- <attribute>
- <anyName/>
- </attribute>
- </oneOrMore>
- <oneOrMore>
- <attribute>
- <nsName ns=""/>
- </attribute>
- </oneOrMore>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.3</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <oneOrMore>
- <attribute>
- <anyName/>
- </attribute>
- </oneOrMore>
- <oneOrMore>
- <attribute>
- <anyName/>
- </attribute>
- </oneOrMore>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.3</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <oneOrMore>
- <attribute>
- <nsName ns=""/>
- </attribute>
- </oneOrMore>
- <oneOrMore>
- <attribute>
- <nsName ns="">
- <except>
- <name>bar</name>
- </except>
- </nsName>
- </attribute>
- </oneOrMore>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.3</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <oneOrMore>
- <attribute>
- <anyName>
- <except>
- <nsName>
- <except>
- <name>foo</name>
- </except>
- </nsName>
- </except>
- </anyName>
- </attribute>
- </oneOrMore>
- <attribute name="foo"/>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.3</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <oneOrMore>
- <attribute>
- <anyName>
- <except>
- <nsName>
- <except>
- <name>foo</name>
- </except>
- </nsName>
- </except>
- </anyName>
- </attribute>
- </oneOrMore>
- <oneOrMore>
- <attribute>
- <nsName/>
- </attribute>
- </oneOrMore>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.3</section>
-<correct>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <oneOrMore>
- <attribute>
- <anyName>
- <except>
- <nsName>
- <except>
- <name>bar</name>
- </except>
- </nsName>
- </except>
- </anyName>
- </attribute>
- </oneOrMore>
- <attribute name="baz"/>
-</element>
-</correct>
-<valid>
-<foo bar="xx" baz="yy"/>
-</valid>
-<invalid>
-<foo x="xx" baz="yy"/>
-</invalid>
-<valid>
-<foo xmlns:eg="http://www.example.com/" eg:x="xx" baz="yy"/>
-</valid>
-</testCase>
-<testCase>
-<section>7.3</section>
-<correct>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <oneOrMore>
- <attribute>
- <nsName ns="http://www.example.com/1"/>
- </attribute>
- </oneOrMore>
- <oneOrMore>
- <attribute>
- <nsName ns="http://www.example.com/2"/>
- </attribute>
- </oneOrMore>
-</element>
-</correct>
-<valid>
-<foo xmlns:eg1="http://www.example.com/1"
- xmlns:eg2="http://www.example.com/2"
- eg1:x="xx" eg2:y="yy"/>
-</valid>
-</testCase>
-<testCase>
-<section>7.3</section>
-<correct>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <choice>
- <attribute name="bar"/>
- <attribute name="bar"/>
- </choice>
-</element>
-</correct>
-<valid>
-<foo bar="xx"/>
-</valid>
-</testCase>
-<testCase>
-<section>7.3</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <attribute name="bar"/>
- <choice>
- <attribute name="baz"/>
- <attribute name="bar"/>
- </choice>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.3</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <attribute><anyName/><text/></attribute>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.3</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <attribute><nsName ns =""/><text/></attribute>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.3</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <attribute><choice><nsName ns =""/><name>foo</name></choice><text/></attribute>
-</element>
-</incorrect>
-</testCase>
-</testSuite>
-<testSuite>
-<section>7.4</section>
-<testCase>
-<section>7.4</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <interleave>
- <element name="bar">
- <empty/>
- </element>
- <element name="bar">
- <empty/>
- </element>
- </interleave>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.4</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <interleave>
- <element name="bar">
- <empty/>
- </element>
- <interleave>
- <element name="baz">
- <empty/>
- </element>
- <element name="bar">
- <empty/>
- </element>
- </interleave>
- </interleave>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.4</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <interleave>
- <element name="bar">
- <empty/>
- </element>
- <group>
- <element name="baz">
- <empty/>
- </element>
- <element name="bar">
- <empty/>
- </element>
- </group>
- </interleave>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.4</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <interleave>
- <element name="bar">
- <empty/>
- </element>
- <group>
- <element name="baz">
- <empty/>
- </element>
- <interleave>
- <element name="baz">
- <empty/>
- </element>
- <element name="bar">
- <empty/>
- </element>
- </interleave>
- </group>
- </interleave>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.4</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <interleave>
- <element name="bar">
- <empty/>
- </element>
- <optional>
- <element name="bar">
- <empty/>
- </element>
- </optional>
- </interleave>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.4</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <interleave>
- <element name="bar">
- <empty/>
- </element>
- <element>
- <nsName ns=""/>
- <empty/>
- </element>
- </interleave>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.4</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <interleave>
- <element name="bar">
- <empty/>
- </element>
- <element>
- <anyName/>
- <empty/>
- </element>
- </interleave>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.4</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <interleave>
- <element name="bar">
- <empty/>
- </element>
- <element name="bar">
- <notAllowed/>
- </element>
- </interleave>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.4</section>
-<correct>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <interleave>
- <element name="bar">
- <empty/>
- </element>
- <element>
- <anyName>
- <except>
- <name>bar</name>
- </except>
- </anyName>
- <empty/>
- </element>
- </interleave>
-</element>
-</correct>
-<valid>
-<foo><bar/><baz/></foo>
-</valid>
-</testCase>
-<testCase>
-<section>7.4</section>
-<correct>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <interleave>
- <choice>
- <element name="bar">
- <empty/>
- </element>
- <element name="bar">
- <text/>
- </element>
- </choice>
- <element name="baz">
- <empty/>
- </element>
- </interleave>
-</element>
-</correct>
-<valid>
-<foo><bar/><baz/></foo>
-</valid>
-</testCase>
-<testCase>
-<section>7.4</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <interleave>
- <text/>
- <text/>
- </interleave>
-</element>
-</incorrect>
-</testCase>
-<testCase>
-<section>7.4</section>
-<incorrect>
-<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
- <mixed>
- <mixed>
- <element name="bar">
- <empty/>
- </element>
- </mixed>
- <element name="baz">
- <empty/>
- </element>
- </mixed>
-</element>
-</incorrect>
-</testCase>
-</testSuite>
-</testSuite>
-<testSuite>
-<documentation>Regressions</documentation>
-<testCase>
-<correct>
-<grammar xmlns="http://relaxng.org/ns/structure/1.0">
-<start>
- <element name="foo">
- <choice>
- <group>
- <attribute name="bar"><empty/></attribute>
- <element name="baz1"><empty/></element>
- </group>
- <group>
- <attribute name="bar"><text/></attribute>
- <element name="baz2"><empty/></element>
- </group>
- </choice>
- </element>
-</start>
-</grammar>
-</correct>
-<valid>
-<foo bar=" "><baz1/></foo>
-</valid>
-</testCase>
-<testCase>
-<correct>
-<notAllowed xmlns="http://relaxng.org/ns/structure/1.0"/>
-</correct>
-<invalid>
-<foo/>
-</invalid>
-</testCase>
-</testSuite>
-</testSuite>
+<!DOCTYPE testSuite [ +<!ENTITY dii "<ดี/>"> +]> +<testSuite> +<author>James Clark</author> +<email>jjc@jclark.com</email> +<documentation>For October 26 version of the spec.</documentation> +<testSuite> +<section>3</section> +<testSuite> +<documentation>Various possible syntax errors.</documentation> +<testCase> +<section>3</section> +<incorrect> +<thisIsJunk/> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<grammar xmlns="http://relaxng.org/ns/structure/1.0"> + <element name="foo"> + <empty/> + </element> + <start> + <element name="foo"> + <empty/> + </element> + </start> +</grammar> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> + <define name="bar"> + <text/> + </define> + <text/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> + <name>foo</name> + <empty/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> + <group> + <name>bar</name> + </group> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0"> + <anyName> + <except> + <name>foo</name> + </except> + <except> + <name>bar</name> + </except> + </anyName> + <empty/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0"> + <nsName> + <except> + <name>foo</name> + </except> + <except> + <name>bar</name> + </except> + </nsName> + <empty/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> + <data type="token"> + <except> + <value>foo</value> + </except> + <except> + <value>bar</value> + </except> + </data> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> + <empty name="bar"/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo" extra="bar"> + <empty/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> + <empty> + <empty/> + </empty> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> + <text> + <empty/> + </text> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> + <choice> + <text/> + <notAllowed> + <empty/> + </notAllowed> + </choice> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<grammar xmlns="http://relaxng.org/ns/structure/1.0"> + <start> + <ref name="foo"> + <empty/> + </ref> + </start> + <define name="foo"> + <element name="foo"> + <empty/> + </element> + </define> +</grammar> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<grammar xmlns="http://relaxng.org/ns/structure/1.0"> + <start> + <grammar> + <start> + <parentRef name="foo"> + <empty/> + </parentRef> + </start> + </grammar> + </start> + <define name="foo"> + <element name="foo"> + <empty/> + </element> + </define> +</grammar> +</incorrect> +</testCase> +</testSuite> +<testSuite> +<documentation>Tests for obsolete syntax</documentation> +<testCase> +<section>3</section> +<incorrect> +<grammar xmlns="http://relaxng.org/ns/structure/1.0"> + <start name="foo"> + <element name="foo"> + <empty/> + </element> + </start> +</grammar> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo" ns="http://www.example.com"> + <attribute name="bar" global="true"> + <text/> + </attribute> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0"> + <not> + <name>foo</name> + </not> + <empty/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0"> + <difference> + <anyName/> + <name>foo</name> + </difference> + <empty/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> + <data type="token" key="foo"/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> + <data type="token" keyRef="foo"/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> + <keyRef name="foo"> + <data type="token"/> + </keyRef> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> + <key name="foo"> + <data type="token"/> + </key> +</element> +</incorrect> +</testCase> +</testSuite> +<testSuite> +<documentation>Tests for missing attributes and child elements</documentation> +<testCase> +<section>3</section> +<incorrect> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0"> + <name>foo</name> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0"> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> + <attribute/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> + <group/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> + <interleave/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> + <choice/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> + <optional/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> + <zeroOrMore/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> + <oneOrMore/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> + <list/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> + <mixed/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0"> + <choice/> + <empty/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0"> + <anyName> + <except/> + </anyName> + <empty/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0"> + <nsName ns=""> + <except/> + </nsName> + <empty/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> + <data type="string"> + <except/> + </data> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> + <data/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> + <data type="string"> + <param/> + </data> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> + <grammar> + <start/> + </grammar> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<grammar xmlns="http://relaxng.org/ns/structure/1.0"> + <start> + <element name="bar"> + <empty/> + </element> + </start> + <define name="baz"/> +</grammar> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> + <externalRef/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<grammar xmlns="http://relaxng.org/ns/structure/1.0"> + <include/> + <start> + <element name="foo"> + <empty/> + </element> + </start> +</grammar> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<grammar xmlns="http://relaxng.org/ns/structure/1.0"> + <start> + <element name="foo"> + <empty/> + </element> + </start> + <define> + <element name="bar"> + <empty/> + </element> + </define> +</grammar> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<grammar xmlns="http://relaxng.org/ns/structure/1.0"> + <start> + <ref/> + </start> + <define name="foo"> + <element name="foo"> + <empty/> + </element> + </define> +</grammar> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<grammar xmlns="http://relaxng.org/ns/structure/1.0"> + <start> + <grammar> + <start> + <parentRef/> + </start> + </grammar> + </start> + <define name="foo"> + <element name="foo"> + <empty/> + </element> + </define> +</grammar> +</incorrect> +</testCase> +</testSuite> +<testSuite> +<documentation>Checking of ns attribute</documentation> +<testCase> +<section>3</section> +<correct> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" ns=""> + <empty/> +</element> +</correct> +<valid> +<foo/> +</valid> +</testCase> +<testCase> +<section>3</section> +<documentation>No checking of ns attribute is performed</documentation> +<correct> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" ns="DAV:"> + <empty/> +</element> +</correct> +<valid> +<foo xmlns="DAV:"/> +</valid> +</testCase> +<testCase> +<section>3</section> +<documentation>No checking of ns attribute is performed</documentation> +<correct> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" ns="xyzzy"> + <empty/> +</element> +</correct> +</testCase> +<testCase> +<section>3</section> +<documentation>No checking of ns attribute is performed</documentation> +<correct> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" ns="bad_scheme://"> + <empty/> +</element> +</correct> +</testCase> +</testSuite> +<testSuite> +<documentation>Checking of datatypeLibrary attribute</documentation> +<testCase> +<section>3</section> +<documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation> +<incorrect> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="foo_bar:xyzzy"> + <empty/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation> +<correct> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="foobar:xyzzy"> + <empty/> +</element> +</correct> +<valid> +<foo/> +</valid> +</testCase> +<testCase> +<section>3</section> +<documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation> +<correct> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http:ok"> + <empty/> +</element> +</correct> +<valid> +<foo/> +</valid> +</testCase> +<testCase> +<section>3</section> +<documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation> +<incorrect> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="foo:"> + <empty/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation> +<incorrect> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.example.com/%"> + <empty/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation> +<incorrect> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.example.com/%xx"> + <empty/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<documentation>Value of datatypeLibrary attribute must conform to RFC 2396</documentation> +<correct> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.example.com/%Aa"> + <empty/> +</element> +</correct> +<valid> +<foo/> +</valid> +</testCase> +<testCase> +<section>3</section> +<documentation>Value of datatypeLibrary attribute must not be relative</documentation> +<incorrect> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="xyzzy"> + <empty/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<documentation>Value of datatypeLibrary attribute must not be relative</documentation> +<incorrect> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="xyzzy#foo:bar"> + <empty/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<documentation>Value of datatypeLibrary attribute must not be relative</documentation> +<incorrect> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="xyzzy?foo:bar"> + <empty/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<documentation>Value of datatypeLibrary attribute must not be relative</documentation> +<incorrect> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="xyzzy/foo:bar"> + <empty/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<correct> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="foo:bar"> + <empty/> +</element> +</correct> +<valid> +<foo/> +</valid> +</testCase> +<testCase> +<section>3</section> +<correct> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary=""> + <empty/> +</element> +</correct> +<valid> +<foo/> +</valid> +</testCase> +<testCase> +<section>3</section> +<correct> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> + <data datatypeLibrary="" type="string"/> +</element> +</correct> +<valid> +<foo>x</foo> +</valid> +</testCase> +<testCase> +<section>3</section> +<documentation>Value of datatypeLibrary attribute must not contain fragment identifier</documentation> +<incorrect> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" + datatypeLibrary="http://www.example.com#xyzzy"> + <empty/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<documentation>Value of datatypeLibrary attribute must not contain fragment identifier</documentation> +<incorrect> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0" + datatypeLibrary="http://www.example.com#"> + <empty/> +</element> +</incorrect> +</testCase> +</testSuite> +<testSuite> +<documentation>Tests for QName and NCNames in schemas</documentation> +<testCase> +<section>3</section> +<correct> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> + <element name="ดี"> + <empty/> + </element> +</element> +</correct> +<valid> +<foo>&dii;</foo> +</valid> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element name="ี" xmlns="http://relaxng.org/ns/structure/1.0"> + <empty/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element name="" xmlns="http://relaxng.org/ns/structure/1.0"> + <empty/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0"> + <name>ี</name> + <empty/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"> + <attribute name="ี"/> + <empty/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<grammar xmlns="http://relaxng.org/ns/structure/1.0"> + <start> + <ref name="ี"/> + </start> + <define name="ี"> + <element name="foo"> + <empty/> + </element> + </define> +</grammar> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<correct> +<grammar xmlns="http://relaxng.org/ns/structure/1.0"> + <start> + <ref name="ดี"/> + </start> + <define name="ดี"> + <element name="foo"> + <empty/> + </element> + </define> +</grammar> +</correct> +<valid> +<foo/> +</valid> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<grammar xmlns="http://relaxng.org/ns/structure/1.0"> + <start> + <ref name=""/> + </start> + <define name=""> + <element name="foo"> + <empty/> + </element> + </define> +</grammar> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<grammar xmlns="http://relaxng.org/ns/structure/1.0"> + <start> + <ref name="x y"/> + </start> + <define name="x y"> + <element name="foo"> + <empty/> + </element> + </define> +</grammar> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<grammar xmlns="http://relaxng.org/ns/structure/1.0" + xmlns:x="http://www.example.com/x"> + <start> + <ref name="x:y"/> + </start> + <define name="x:y"> + <element name="foo"> + <empty/> + </element> + </define> +</grammar> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0" + xmlns:x="http://www.example.com/x" + name="x:ี"> + <empty/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0" + xmlns:x="http://www.example.com/x" + name="x:y:z"> + <empty/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0" + xmlns:x="http://www.example.com/x" + name="x:"> + <empty/> +</element> +</incorrect> +</testCase> +</testSuite> +<testSuite> +<documentation>Tests for elements that allow only a single pattern child.</documentation> +<testCase> +<section>3</section> +<incorrect> +<grammar xmlns="http://relaxng.org/ns/structure/1.0"> + <start> + <element name="foo"> + <empty/> + </element> + <empty/> + </start> +</grammar> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> + <attribute name="bar"> + <text/> + <empty/> + </attribute> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> + <attribute> + <name>bar</name> + <text/> + <empty/> + </attribute> +</element> +</incorrect> +</testCase> +</testSuite> +<testSuite> +<documentation>Tests for foreign element and attribute handling.</documentation> +<testCase> +<section>3</section> +<incorrect> +<r:element name="foo" xmlns:r="http://relaxng.org/ns/structure/1.0" r:a="val"> + <r:empty/> +</r:element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0"> + <name>foo<eg:comment xmlns:eg="http://www.example.com"/></name> + <empty/> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<incorrect> +<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> + <value>foo<eg:comment xmlns:eg="http://www.example.com"/></value> +</element> +</incorrect> +</testCase> +<testCase> +<section>3</section> +<correct> +<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> + <data type="string"><eg:comment xmlns:eg="http://www.example.com"/></data> +</element> +</correct> +<valid> +<foo>X</foo> +</valid> +</testCase> +<testCase> +<section>3</section> +<correct> +<element xmlns="http://relaxng.org/ns/structure/1.0" name="foo"> + <empty> + <ext xmlns="http://www.example.com"> + <element xmlns="http://relaxng.org/ns/structure/1.0"/> + </ext> + </empty> +</element> +</correct> +<valid> +<foo/> +</valid> +</testCase> +<testCase> +<section>3</section> +<correct> +<grammar xmlns="http://relaxng.org/ns/structure/1.0" xmlns:eg="http://www.example.com"> + <eg:comment/> + <eg:comment/> + <start> + <eg:comment/> + <element> + <eg:comment/> + <eg:comment/> + <name>foo</name> + <eg:comment/> + <data type="string"/> + <eg:comment/> + <empty> + <eg:comment/> + <eg:comment/> + </empty> + <eg:comment/> + <eg:comment/> + </element> + <eg:comment/> + </start> + <eg:comment/> +</grammar> +</correct> +<valid> +<foo>X</foo> +</valid> +</testCase> +<testCase> +<section>3</section> +<correct> +<grammar xmlns="http://relaxng.org/ns/structure/1.0" xmlns:eg="http://www.example.com" + eg:comment=""> + <start eg:comment=""> + <element eg:comment=""> + <name eg:comment="">foo</name> + <data eg:comment="" type="string"/> + <empty eg:comment=""/> + </element> + </start> +</grammar> +</correct> +<valid> +<foo>X</foo> +</valid> +</testCase> +<testCase> +<section>3</section> +<correct> +<rng:grammar xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns="http://www.example.com"> + <comment/> + <comment/> + <rng:start> + <comment/> + <rng:element> + <comment/> + <comment/> + <rng:name>foo</rng:name> + <comment/> + <rng:data type="string"/> + <comment/> + </rng:element> + <comment/> + </rng:start> + <comment/> +</rng:grammar> +</correct> +<valid> +<foo>X</foo> +</valid> +</testCase> +<testCase> +<section>3</section> +<correct> +<rng:grammar xmlns:rng="http://relaxng.org/ns/structure/1.0"> + <comment/> + <comment/> + <rng:start> + <comment/> + <rng:element> + <comment/> + <comment/> + <rng:name>foo</rng:name> + <comment/> + <rng:data type="string"/> + <comment/> + </rng:element> + <comment/> + </rng:start> + <comment/> +</rng:grammar> +</correct> +<valid> +<foo>X</foo> +</valid> +</testCase> +</testSuite> +</testSuite> +<testSuite> +<section>4</section> +<testSuite> +<section>4.2</section> +<testCase> +<section>4.2</section> +<correct> +<element name="

 	foo

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

 	bar

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

 	string

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

 	string

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

 	foo

 	</name> + <attribute><name>

 	bar

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

 	choice

 	"> + <ref name="

 	x

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

 	y

 	"> + <grammar> + <start combine="

 	interleave

 	"> + <parentRef name="

 	z

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

	 x

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

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

	 x

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

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