ZVON > Tutorials > XML Schema and Relax NG Tutorial |
Intro / Search / ZVON |
Index | >> Example 5 / 9 << | Prev | Next | |
We want to have the root element to be named "AAA", from null namespace and contains one "BBB" element, followed by one "CCC" element. Use the "sequence" pattern to specify exact order of the elements. The attributes "minOccurs" and "maxOccurs" are not necessary, because their default value is 1.
Valid document <AAA xsi:noNamespaceSchemaLocation="correct_0.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <BBB>ZZZ</BBB> <CCC>YYY</CCC> </AAA> Invalid document <AAA xsi:noNamespaceSchemaLocation="correct_0.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <CCC/> <BBB/> </AAA> Invalid document <AAA xsi:noNamespaceSchemaLocation="correct_0.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <BBB/> </AAA> |
Correct XML Schema (correct_0.xsd) <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" > <xsd:element name="AAA"> <xsd:complexType mixed="false"> <xsd:sequence minOccurs="1" maxOccurs="1"> <xsd:element name="BBB" type="xsd:string"/> <xsd:element name="CCC" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> |
You need not to use any pattern, because the order is implicitly important - it's quite intuitive: if you do not specify otherwise, you want the elements to appear in the same order as you put them in your schema.
Valid document <AAA xmlns=""> <BBB>XXX</BBB> <CCC> cc </CCC> </AAA> Invalid document <AAA xmlns=""> <CCC/> <BBB>XXX</BBB> </AAA> Invalid document <AAA xmlns=""> <BBB/> </AAA> |
Correct Relax NG schema (correctRelax_0.rng) <grammar xmlns="http://relaxng.org/ns/structure/1.0" > <start> <element> <name ns="">AAA</name> <element> <name ns="">BBB</name> <text/> </element> <element> <name ns="">CCC</name> <text/> </element> </element> </start> </grammar> Correct Relax NG schema (correctRelax_1.rng) |