summaryrefslogtreecommitdiffstats
path: root/libxml2/test/relaxng/testsuite.xml
diff options
context:
space:
mode:
Diffstat (limited to 'libxml2/test/relaxng/testsuite.xml')
-rw-r--r--libxml2/test/relaxng/testsuite.xml1708
1 files changed, 1708 insertions, 0 deletions
diff --git a/libxml2/test/relaxng/testsuite.xml b/libxml2/test/relaxng/testsuite.xml
new file mode 100644
index 0000000..09a8f38
--- /dev/null
+++ b/libxml2/test/relaxng/testsuite.xml
@@ -0,0 +1,1708 @@
+<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="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt;&#10;]&gt;">
+<doc>foo</doc>
+</valid>
+<valid dtd="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt;&#10;]&gt;">
+<doc> foo </doc>
+</valid>
+<invalid dtd="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt;&#10;]&gt;">
+<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="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt; &#10;&lt;!ENTITY bar SYSTEM 'whatever' NDATA jpeg&gt; &#10;]&gt;">
+<doc> foo bar </doc>
+</valid>
+<valid dtd="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt; &#10;&lt;!ENTITY bar SYSTEM 'whatever' NDATA jpeg&gt; &#10;]&gt;">
+<doc> foo bar foo</doc>
+</valid>
+<invalid dtd="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt;]&gt;">
+<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>