blob: 08fba376ea24f8e2404e4b5890c1f8c3b53d5234 [file] [log] [blame]
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://xbean/scomp/derivation/GroupRestriction"
targetNamespace="http://xbean/scomp/derivation/GroupRestriction"
xmlns:base="http://xbean/scomp/contentType/ModelGroup"
>
<xsd:import namespace="http://xbean/scomp/contentType/ModelGroup"
schemaLocation="../contentType/Group.xsd"/>
<xsd:complexType name="restrictedSequenceT">
<xsd:complexContent>
<xsd:restriction base="base:SequenceT">
<xsd:sequence>
<xsd:element name="child1" type="xsd:integer" minOccurs="1"/>
<xsd:element name="child3" type="xsd:integer" minOccurs="1"
maxOccurs="2"/>
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<!--elts must be a subset of the original choice group-->
<xsd:complexType name="restrictedChoiceT">
<xsd:complexContent>
<xsd:restriction base="base:ChoiceT">
<xsd:choice>
<xsd:element name="child3" type="xsd:integer" minOccurs="1"
maxOccurs="2"/>
</xsd:choice>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="restrictedAllT">
<xsd:complexContent>
<xsd:restriction base="base:AllT">
<xsd:all>
<xsd:element name="child2" type="xsd:string" maxOccurs="1"/>
<xsd:element name="child3" type="xsd:integer" minOccurs="1"/>
</xsd:all>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<!--examples from Walmsley book p. 327-->
<xsd:complexType name="replaceableChoiceT">
<xsd:choice maxOccurs="2">
<xsd:element name="a" type="xsd:string"/>
<xsd:element name="b" type="xsd:string"/>
<xsd:element name="c" type="xsd:int"/>
</xsd:choice>
</xsd:complexType>
<xsd:complexType name="replaceableAllT">
<xsd:all>
<xsd:element name="a" type="xsd:string" minOccurs="1"/>
<xsd:element name="b" type="xsd:string" minOccurs="0"/>
<xsd:element name="c" type="xsd:int"/>
</xsd:all>
</xsd:complexType>
<!--replace All group with sequence group-->
<xsd:complexType name="All2SequenceT">
<xsd:complexContent>
<xsd:restriction base="replaceableAllT">
<xsd:sequence>
<xsd:element name="a" type="xsd:string"/>
<xsd:element name="c" type="xsd:int"/>
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<!--replace choice group with sequence group-->
<xsd:complexType name="Choice2SequenceT">
<xsd:complexContent>
<xsd:restriction base="replaceableChoiceT">
<xsd:sequence>
<xsd:element name="a" type="xsd:string"/>
<xsd:element name="c" type="xsd:int"/>
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="RestrictedSequenceElt" type="restrictedSequenceT"/>
<xsd:element name="RestrictedChoiceElt" type="restrictedChoiceT"/>
<xsd:element name="RestrictedAllElt" type="restrictedAllT"/>
<xsd:element name="Choice2SeqElt" type="Choice2SequenceT"/>
<xsd:element name="All2SeqElt" type="All2SequenceT"/>
</xsd:schema>