w3c-testcases/w3c/xmlschema2006-11-06/msData/additional/test79253.xsd (221 lines of code) (raw):
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="root" type="ct1"/>
<xsd:element name="e1" type="strType"/>
<xsd:element name="e2" type="att1"/>
<xsd:element name="e3" type="m3"/>
<xsd:element name="e4" type="m4"/>
<xsd:element name="e5" type="m5" />
<xsd:element name="e6" type="m6"/>
<xsd:element name="e7" type="m7"/>
<xsd:element name="e8" type="m8"/>
<xsd:element name="e9" type="m9"/>
<xsd:element name="t1" type="t1"/>
<xsd:complexType name="ct1">
<xsd:sequence>
<xsd:element ref="e1" minOccurs="0"/>
<xsd:element ref="e2" minOccurs="0"/>
<xsd:element ref="e3" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="e4" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="e5" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="e6" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="e7" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="e8" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="e9" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="t1" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="strType">
<xsd:restriction base="xsd:string">
<xsd:length value="4"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="att1">
<xsd:attribute name="att" type="xsd:integer"/>
</xsd:complexType>
<xsd:complexType name="att2">
<xsd:attribute name="att1" type="xsd:integer"/>
<xsd:attribute name="att2" type="xsd:boolean"/>
</xsd:complexType>
<xsd:complexType name="m3">
<xsd:choice>
<xsd:element name="e31" maxOccurs="2"/>
</xsd:choice>
<xsd:attribute name="att" type="xsd:integer" use="required"/>
</xsd:complexType>
<xsd:complexType name="m4">
<xsd:sequence maxOccurs="3">
<xsd:element name="e41" type="att2" minOccurs="0"/>
<xsd:element ref="e3"/>
</xsd:sequence>
<xsd:attribute name="att" type="xsd:integer"/>
</xsd:complexType>
<xsd:complexType name="m5">
<xsd:choice maxOccurs="unbounded">
<xsd:element ref="e3"/>
<xsd:element ref="e4"/>
<xsd:element ref="e5" minOccurs="0"/>
</xsd:choice>
<xsd:attribute name="att" type="xsd:integer"/>
</xsd:complexType>
<xsd:complexType name="m6">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:any namespace="##any" processContents="skip" />
</xsd:choice>
</xsd:complexType>
<!-- [ m7 for e7, use to test key/keyref in elements ] -->
<xsd:complexType name="m7">
<xsd:choice>
<xsd:element name="products">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="parts" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="part" maxOccurs="unbounded" nillable="true">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="pkid" type="xsd:integer" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="product" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="part" maxOccurs="unbounded" nillable="true">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="id" type="xsd:integer" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="pid" type="xsd:ID" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:key name="keyA"> <!-- product itemss are keyed by pid -->
<xsd:selector xpath="parts/part"/>
<xsd:field xpath="@pkid"/>
</xsd:key>
<xsd:keyref name="keyRefA" refer="keyA">
<xsd:selector xpath="product/part" />
<xsd:field xpath="@id"/>
</xsd:keyref>
</xsd:element>
</xsd:choice>
</xsd:complexType>
<xsd:complexType name="m8">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:any namespace="##any" processContents="lax" />
</xsd:choice>
</xsd:complexType>
<xsd:complexType name="m9">
<xsd:choice maxOccurs="100">
<xsd:element name="products">
<xsd:complexType>
<xsd:choice maxOccurs="100">
<xsd:element name="part" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="almostID" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="product" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="almostID" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
<xsd:unique name="unique_part">
<xsd:selector xpath="./part" />
<xsd:field xpath="@almostID"/>
</xsd:unique>
<xsd:unique name="unique_product">
<xsd:selector xpath="./product" />
<xsd:field xpath="@almostID"/>
</xsd:unique>
</xsd:element>
<xsd:element name="IID" type="xsd:ID" fixed="iid1" minOccurs="0"/>
</xsd:choice>
</xsd:complexType>
<xsd:complexType name="t1">
<xsd:attribute name="att1" >
<xsd:simpleType>
<xsd:restriction base="xsd:integer">
<xsd:totalDigits value="4" />
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="att2" >
<xsd:simpleType>
<xsd:restriction base="xsd:integer">
<xsd:fractionDigits value="0" />
<xsd:pattern value="\d{2}" />
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="att3" >
<xsd:simpleType>
<xsd:restriction base="xsd:integer">
<xsd:whiteSpace value="collapse" />
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="att4" >
<xsd:simpleType>
<xsd:restriction base="xsd:integer">
<xsd:enumeration value="1" />
<xsd:enumeration value="2" />
<xsd:enumeration value="3" />
<xsd:maxInclusive value="3" />
<xsd:minInclusive value="1" />
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="att5" >
<xsd:simpleType>
<xsd:restriction base="xsd:integer">
<xsd:maxInclusive value="4" />
<xsd:minExclusive value="1" />
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="att6" >
<xsd:simpleType>
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="1" />
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="att7" >
<xsd:simpleType>
<xsd:restriction base="xsd:integer">
<xsd:totalDigits value="4" />
<xsd:minExclusive value="1" />
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="att8" >
<xsd:simpleType>
<xsd:restriction base="xsd:decimal">
<xsd:totalDigits value="4" />
<xsd:fractionDigits value="4" />
<xsd:whitespace value="collapse">
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="att9" >
<xsd:simpleType>
<xsd:restriction base="xsd:string">
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:schema>