1 <?xml version="1.0" encoding="UTF-8"?>
2 <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
3 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
4 xmlns:subs="www.example.org/substitutiongroup"
5 targetNamespace="www.example.org/substitutiongroup">
7 <!-- THE HEAD ELEMENT -->
8 <xsd:element name="head" type="xsd:string" />
10 <!-- SUBSTITUTION ELEMENT OF THE SAME TYPE AS THE HEAD -->
11 <xsd:element name="member1" type="xsd:string" substitutionGroup="subs:head"/>
13 <!-- SUBSTITUTION ELEMENT OF A TYPE RESTRICTING THE TYPE OF THE HEAD -->
14 <xsd:simpleType name="stringEnum">
15 <xsd:restriction base="xsd:string">
16 <xsd:enumeration value="something"/>
17 <xsd:enumeration value="else"/>
21 <xsd:element name="member2" type="subs:stringEnum" substitutionGroup="subs:head"/>
23 <!-- SUBSTITUTION ELEMENT OF A TYPE EXTENDING THE TYPE OF THE HEAD -->
24 <xsd:complexType name="complexEnum">
26 <xsd:extension base="xsd:string">
27 <xsd:attribute name="foo" type="xsd:float"/>
28 <xsd:attribute name="bar" type="xsd:integer"/>
33 <xsd:element name="member3" type="subs:complexEnum" substitutionGroup="subs:head"/>
35 <!-- TOP LEVEL ELEMENT TO DEMONSTRATE SUBSTITUTION -->
36 <xsd:element name="ize">
39 <xsd:element ref="subs:head" minOccurs="0" maxOccurs="unbounded"/>