ZVON > Tutorials > XML Schema and Relax NG Tutorial |
Intro / Search / ZVON |
Index | >> Example 6 / 10 << | Prev | Next | |
Now, we want the element "root" to contain elements "aaa", "bbb", and "ccc" in any order. We will use the "all" element.
Valid document <root xsi:noNamespaceSchemaLocation="correct_0.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <aaa/> <bbb/> <ccc/> </root> Valid document <root xsi:noNamespaceSchemaLocation="correct_0.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <ccc/> <aaa/> <bbb/> </root> Valid document <root xsi:noNamespaceSchemaLocation="correct_0.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <bbb/> <ccc/> <aaa/> </root> Invalid document <root xsi:noNamespaceSchemaLocation="correct_0.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <aaa/> <ccc/> </root> Invalid document <root xsi:noNamespaceSchemaLocation="correct_0.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <aaa/> <bbb/> <bbb/> <ccc/> </root> |
Correct XML Schema (correct_0.xsd) <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" > <xsd:element name="root"> <xsd:complexType> <xsd:all> <xsd:element name="aaa" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="bbb" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="ccc" type="xsd:string" minOccurs="1" maxOccurs="1"/> </xsd:all> </xsd:complexType> </xsd:element> </xsd:schema> |
We will use the "interleave" pattern.
Valid document <root xmlns=""> <aaa/> <bbb/> <ccc/> </root> Valid document <root xmlns=""> <ccc/> <aaa/> <bbb/> </root> Valid document <root xmlns=""> <bbb/> <ccc/> <aaa/> </root> Invalid document <root xmlns=""> <aaa/> <ccc/> </root> Invalid document <root xmlns=""> <aaa/> <bbb/> <bbb/> <ccc/> </root> |
Correct Relax NG schema (correctRelax_0.rng) <grammar datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0" > <start> <element> <name ns="">root</name> <interleave> <element name="aaa"> <text/> </element> <element name="bbb"> <text/> </element> <element name="ccc"> <text/> </element> </interleave> </element> </start> </grammar> |