/ libxml2 / test / schemas / bug303566_1.xsd
bug303566_1.xsd
 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>