<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> |