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