summaryrefslogtreecommitdiff
path: root/tests/cxx/parser/polymorphism/recursive/test.xsd
blob: affcc8ab7c2dcfbb206a5031615c5caae7251e68 (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
<?xml version="1.0"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
        xmlns:t="test"
        targetNamespace="test"
        elementFormDefault="qualified">

  <element name="root" type="t:root"/>
  <complexType name="root">
    <sequence>
      <element ref="t:expression" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <element name="expression" type="t:expression" abstract="true"/>
  <complexType name="expression" abstract="true"/>

  <element name="recursive" type="t:recursive" substitutionGroup="t:expression"/>
  <complexType name="recursive">
    <complexContent>
      <extension base="t:expression">
        <sequence minOccurs="0" maxOccurs="unbounded">
          <element ref="t:expression"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <element name="value" type="t:value" abstract="true" substitutionGroup="t:expression"/>
  <complexType name="value" abstract="true">
    <complexContent>
      <extension base="t:expression">
        <sequence>
          <element name="constant" type="int"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <element name="value-a" type="t:value-a" substitutionGroup="t:expression"/>
  <complexType name="value-a">
    <complexContent>
      <extension base="t:value"/>
    </complexContent>
  </complexType>

  <element name="value-b" type="t:value-b" substitutionGroup="t:expression"/>
  <complexType name="value-b">
    <complexContent>
      <extension base="t:value"/>
    </complexContent>
  </complexType>

</schema>