blob: 87bbdb7d213ef32d5e89df726379dcccc69cad17 [file] [log] [blame]
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://xbean/scomp/derivation/Block"
targetNamespace="http://xbean/scomp/derivation/Block"
>
<xsd:simpleType name="ageT">
<xsd:restriction base="xsd:positiveInteger">
<xsd:minInclusive value="15"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="genderT">
<xsd:restriction base="xsd:string">
<xsd:pattern value="M|F|m|f"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="restAgeT">
<xsd:restriction base="ageT">
<xsd:minInclusive value="15"/>
<xsd:maxInclusive value="30"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="blockAllT" block="#all">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="age" type="ageT"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="blockExtT" block="extension">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="age" type="ageT"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="blockRestT" block="restriction">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="age" type="ageT"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="blockERT" block="extension restriction">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="age" type="ageT"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="blockRET" block="restriction extension">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="age" type="ageT"/>
</xsd:sequence>
</xsd:complexType>
<!--======================Extended/Derived types =======================-->
<xsd:complexType name="extAllT">
<xsd:complexContent>
<xsd:extension base="blockAllT">
<xsd:sequence>
<xsd:element name="gender" type="genderT"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="restAllT">
<xsd:complexContent>
<xsd:restriction base="blockAllT">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="age" type="restAgeT"/>
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<!--subst. fails-->
<xsd:complexType name="extET">
<xsd:complexContent>
<xsd:extension base="blockExtT">
<xsd:sequence>
<xsd:element name="gender" type="genderT"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!--subst. OK-->
<xsd:complexType name="restET">
<xsd:complexContent>
<xsd:restriction base="blockExtT">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="age" type="restAgeT"/>
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<!--subst. OK-->
<xsd:complexType name="extRT">
<xsd:complexContent>
<xsd:extension base="blockRestT">
<xsd:sequence>
<xsd:element name="gender" type="genderT"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<!--subst. fails-->
<xsd:complexType name="restRT">
<xsd:complexContent>
<xsd:restriction base="blockRestT">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="age" type="restAgeT"/>
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<!--subst. fails-->
<xsd:complexType name="restERT">
<xsd:complexContent>
<xsd:restriction base="blockERT">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="age" type="restAgeT"/>
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="restRET">
<xsd:complexContent>
<xsd:restriction base="blockRET">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="age" type="restAgeT"/>
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="extRET">
<xsd:complexContent>
<xsd:extension base="blockRET">
<xsd:sequence>
<xsd:element name="gender" type="genderT"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="extERT">
<xsd:complexContent>
<xsd:extension base="blockERT">
<xsd:sequence>
<xsd:element name="gender" type="genderT"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="EltAllBase" type="blockAllT"/>
<xsd:element name="EltEBase" type="blockExtT"/>
<xsd:element name="EltRBase" type="blockRestT"/>
<xsd:element name="EltERBase" type="blockERT"/>
<xsd:element name="EltREBase" type="blockRET"/>
</xsd:schema>