You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
6846 lines
131 KiB
6846 lines
131 KiB
<!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>
|