1 <?xml version="1.0"?> 2 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 3 4 <xsd:simpleType name="codeType"> 5 <xsd:restriction base="xsd:string"> 6 <xsd:pattern value="[A-Z]+"/> 7 </xsd:restriction> 8 </xsd:simpleType> 9 10 <xsd:element name="Test"> 11 <xsd:complexType> 12 <xsd:sequence> 13 <xsd:element ref="Country" 14 maxOccurs="unbounded"/> 15 </xsd:sequence> 16 </xsd:complexType> 17 </xsd:element> 18 19 <xsd:element name="Country"> 20 <xsd:complexType> 21 <xsd:sequence> 22 <xsd:element ref="City" 23 maxOccurs="unbounded"/> 24 </xsd:sequence> 25 <xsd:attribute name="code" 26 type="codeType" 27 use="required"/> 28 </xsd:complexType> 29 <xsd:key name="CountryDummyKey"> 30 <xsd:selector xpath="."/> 31 <xsd:field xpath="@code"/> 32 </xsd:key> 33 <xsd:keyref name="PartRefCountryDummy" 34 refer="CountryDummyKey"> 35 <xsd:selector xpath=".//Part"/> 36 <xsd:field xpath="@country"/> 37 </xsd:keyref> 38 </xsd:element> 39 40 <xsd:element name="City"> 41 <xsd:complexType> 42 <xsd:sequence> 43 <xsd:element ref="Part" 44 minOccurs="2" 45 maxOccurs="2"/> 46 </xsd:sequence> 47 <xsd:attribute name="name" 48 type="xsd:string" 49 use="required"/> 50 <xsd:attribute name="code" 51 type="xsd:string" 52 use="required"/> 53 </xsd:complexType> 54 </xsd:element> 55 56 <xsd:element name="Part"> 57 <xsd:complexType> 58 <xsd:attribute name="country" 59 type="codeType" 60 use="required"/> 61 </xsd:complexType> 62 </xsd:element> 63 </xsd:schema>