| <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> |