ZVON > Tutorials > XML Schema and Relax NG Tutorial |
Intro / Search / ZVON |
Index | >> Example 4 / 4 << | Prev | Next | |
Please, send all comments, bug-reports, and contributions to Jiri.Jirat@systinet.com. Thank you very much.
XML Schema keys: type, nameSimpleTypes and complexTypes share the same symbol space, thus you can't define a simpleType named "a" and a complexType named "a" at the same time in the target namespace.
Correct XML Schema (correct_0.xsd) <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" > <xsd:element name="a" type="a"/> <xsd:complexType name="a"> <xsd:sequence> <xsd:element name="b" type="xsd:string"/> </xsd:sequence> </xsd:complexType> <xsd:simpleType name="a"> <xsd:restriction base="xsd:string"/> </xsd:simpleType> </xsd:schema> |
Relax NG allows multiple patterns with the same name. However, it requires to specify, whether these patterns will be interleaved or whether we will choose one of the possibilities. Here we will make a choice.
Valid document <root xmlns=""> <X>xx</X> </root> Valid document <root xmlns=""> <Y>yy</Y> </root> Invalid document <root xmlns=""> <X>xx</X> <Y>yy</Y> </root> Invalid document <root xmlns=""> <Y>yy</Y> <X>xx</X> </root> |
Correct Relax NG schema (correctRelax_0.rng) <grammar datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" ns="" xmlns="http://relaxng.org/ns/structure/1.0" > <start> <element name="root"> <ref name="a"/> </element> </start> <define name="a" combine="choice"> <element name="X"> <text/> </element> </define> <define name="a" combine="choice"> <element name="Y"> <text/> </element> </define> </grammar> |
Relax NG allows multiple patterns with the same name. However, it requires to specify, whether these patterns will be interleaved or "choiced". Here we will make an interleave.
Valid document <root xmlns=""> <X>xx</X> <Y>yy</Y> </root> Valid document <root xmlns=""> <Y>yy</Y> <X>xx</X> </root> Invalid document <root xmlns=""> <X>xx</X> </root> Invalid document <root xmlns=""> <Y>yy</Y> </root> |
Correct Relax NG schema (correctRelax_0.rng) <grammar datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" ns="" xmlns="http://relaxng.org/ns/structure/1.0" > <start> <element name="root"> <ref name="a"/> </element> </start> <define name="a" combine="interleave"> <element name="X"> <text/> </element> </define> <define name="a" combine="interleave"> <element name="Y"> <text/> </element> </define> </grammar> |