aboutsummaryrefslogtreecommitdiff
path: root/tests/cxx/hybrid/recursive/test.xsd
blob: 578bf8f7b586e6f0eff1e4f2e09b0491610b2ca6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?xml version="1.0"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test">

  <element name="root" type="t:type"/>

  <complexType name="type">
    <sequence>
      <element name="test1" type="t:test1" maxOccurs="unbounded"/>
      <element name="test2" type="t:test2a" maxOccurs="unbounded"/>
      <element name="test3" type="t:test3b" maxOccurs="unbounded"/>
      <element name="test4" type="t:test4b" maxOccurs="unbounded"/>
      <element name="test5" type="t:test5b" maxOccurs="unbounded"/>
    </sequence>
  </complexType>


  <!-- test 1: single type recursion -->

  <complexType name="test1">
    <choice>
      <element name="a" type="int"/>
      <element name="b" type="t:test1"/>
    </choice>
  </complexType>


  <!-- test 2: muti-type recursion -->

  <complexType name="test2a">
    <sequence>
      <element name="b" type="t:test2b" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="test2b">
    <sequence>
      <element name="c" type="t:test2c" minOccurs="0" maxOccurs="unbounded"/>
      <element name="d" type="t:test2d"/>
    </sequence>
  </complexType>

  <complexType name="test2c">
    <sequence>
      <element name="a" type="t:test2a" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="test2d">
    <sequence>
      <element name="x" type="int"/>
    </sequence>
  </complexType>


  <!-- test 3: single type recursion with a non-recursive base -->

  <complexType name="test3a">
    <sequence>
      <element name="a" type="int"/>
      <element name="b" type="string"/>
    </sequence>
  </complexType>

  <complexType name="test3b">
    <complexContent>
      <extension base="t:test3a">
        <sequence>
          <element name="c" type="string"/>
          <element name="d" type="t:test3b" minOccurs="0"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>


  <!-- test 4: single type recursion with a non-recursive derived -->

  <complexType name="test4a">
    <choice>
      <element name="a" type="int"/>
      <element name="b" type="t:test4a"/>
    </choice>
  </complexType>

  <complexType name="test4b">
    <complexContent>
      <extension base="t:test4a">
        <sequence>
          <element name="c" type="string"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>


  <!-- test 5: recursion via derivation -->

  <complexType name="test5a">
    <choice>
      <element name="a" type="int"/>
      <element name="b" type="t:test5b"/>
    </choice>
  </complexType>

  <complexType name="test5b">
    <complexContent>
      <extension base="t:test5a">
        <sequence>
          <element name="c" type="string"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

</schema>