<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=“relaxng.org/ns/structure/1.0”>
<anyName> <except> <nsName ns="http://example.org"/> </except> </anyName> <empty/>
</element> </correct> <valid> <foo/> </valid> <valid> <foo xmlns=“example.org/”/> </valid> <valid> <foo xmlns=“EXAMPLE.ORG”/> </valid> <invalid> <foo xmlns=“example.org”/> </invalid> <invalid> <a:foo xmlns:a=“example.org”/> </invalid> </testCase> <testCase> <correct> <element name=“top” xmlns=“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=“example.org”/> <bar xmlns=“example.org”/> </top> </invalid> <valid> <top> <foo xmlns=“example.org”/> <bar/> </top> </valid> <valid> <top> <bar/> <foo xmlns=“example.org”/> </top> </valid> <valid> <top> <foo xmlns=“example.org”/> <bar xmlns=“example.org/”/> </top> </valid> <valid> <top> <bar xmlns=“example.org/”/> <foo xmlns=“example.org”/> </top> </valid> </testCase> </testSuite> <testSuite> <documentation>Test of indeterminism</documentation> <testCase> <correct> <element name=“foo” xmlns=“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=“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=“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=“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=“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=“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=“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=“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=“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=“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=“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=“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=“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=“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=“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=“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=“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=“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=“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=“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=“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=“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=“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=“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=“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=“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=“example.org/ns/proofsystem”>
<p:d/>
</p> </valid> <invalid> <p>
<d/>
</p> </invalid> <valid> <p xmlns:p=“example.org/ns/proofsystem”>
<p:e/>
</p> </valid> <invalid> <p>
<e/>
</p> </invalid> <invalid> <p xmlns:p=“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=“example.org/ns/proofsystem”>
<p:d/> <c/>
</p> </invalid> <invalid> <p xmlns:p=“example.org/ns/proofsystem”>
<p:d/> <p:e/>
</p> </invalid> </testCase> <testCase> <resource name=“ext.rng”> <grammar xmlns=“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=“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=“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=“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=“relaxng.org/ns/structure/1.0” name=“doc” datatypeLibrary=“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=“relaxng.org/ns/structure/1.0” name=“doc” datatypeLibrary=“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=“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>