ZVON > Tutorials > XML Schema and Relax NG Tutorial |
Intro / Search / ZVON |
Index | >> Example 7 / 9 << | Prev | Next | |
We want to have the root element to be named "AAA", from null namespace and contains either "BBB" or "CCC" elements (but not both). Use the "choice" element.
Valid document <AAA xsi:noNamespaceSchemaLocation="correct_0.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <BBB>111</BBB> </AAA> Valid document <AAA xsi:noNamespaceSchemaLocation="correct_0.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <CCC>aaa</CCC> </AAA> Invalid document <AAA xsi:noNamespaceSchemaLocation="correct_0.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" /> Invalid document <AAA xsi:noNamespaceSchemaLocation="correct_0.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <BBB>111</BBB> <CCC>aaa</CCC> </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:choice minOccurs="1" maxOccurs="1"> <xsd:element name="BBB" type="xsd:string"/> <xsd:element name="CCC" type="xsd:string"/> </xsd:choice> </xsd:complexType> </xsd:element> </xsd:schema> |
We will use the "choice" patterns.
Valid document <AAA xmlns=""> <BBB>111</BBB> </AAA> Valid document <AAA xmlns=""> <CCC>aaa</CCC> </AAA> Invalid document <AAA xmlns=""/> Invalid document <AAA xmlns=""> <BBB>111</BBB> <CCC>aaa</CCC> </AAA> |
Correct Relax NG schema (correctRelax_0.rng) <grammar xmlns="http://relaxng.org/ns/structure/1.0" > <start> <element> <name ns="">AAA</name> <choice> <element> <name ns="">BBB</name> <text/> </element> <element> <name ns="">CCC</name> <text/> </element> </choice> </element> </start> </grammar> Correct Relax NG schema (correctRelax_1.rng) |