ZVON > Tutorials > XML Schema and Relax NG Tutorial |
Intro / Search / ZVON |
Index | >> Example 4 / 8 << | Prev | Next | |
The schema below defines three elements: "C", "D", "E". The elements "D" and "E" have the attribute "substitutionGroup" set to "C" (so they should be able to substitute the element "C"). But only element "E" can, because the type of element "D" is derived by an extension from the type "AAA" and this would be in conflict with the "block" attribute of element "C" (it has value "extension"). 3.3.6 Constraints on Element Declaration Schema Components; Schema Component Constraint: Substitution Group OK (Transitive)
Valid document <root xsi:noNamespaceSchemaLocation="correct_0.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <C>5</C> </root> Invalid document <root xsi:noNamespaceSchemaLocation="correct_0.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <D>7</D> </root> Valid document <root xsi:noNamespaceSchemaLocation="correct_0.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <E>2</E> </root> |
Correct XML Schema (correct_0.xsd) <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" > <xsd:element name="root"> <xsd:complexType> <xsd:sequence minOccurs="1"> <xsd:element ref="C"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="AAA"> <xsd:simpleContent> <xsd:extension base="xsd:integer"/> </xsd:simpleContent> </xsd:complexType> <xsd:element name="C" type="AAA" block="extension"/> <xsd:element name="D" substitutionGroup="C"> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="AAA"> <xsd:attribute name="bbb" type="xsd:string"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name="E" type="AAA" substitutionGroup="C"/> </xsd:schema> |