summaryrefslogtreecommitdiff
path: root/tests/cxx/parser/polymorphism/recursive/test.xsd
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2011-02-11 17:01:02 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2011-02-11 17:01:02 +0200
commitd4a78b31a1a045471c2fe12d2618d9d5edf78fb2 (patch)
tree090738555bb18f9a22ad7916f34bcd50273e9cb2 /tests/cxx/parser/polymorphism/recursive/test.xsd
parent7c064687415c895334650321bd5bc34453b0ce38 (diff)
Fix recursive polymorphic parsing in C++/Parser
New test: cxx/parser/polymorphism/recursive.
Diffstat (limited to 'tests/cxx/parser/polymorphism/recursive/test.xsd')
-rw-r--r--tests/cxx/parser/polymorphism/recursive/test.xsd53
1 files changed, 53 insertions, 0 deletions
diff --git a/tests/cxx/parser/polymorphism/recursive/test.xsd b/tests/cxx/parser/polymorphism/recursive/test.xsd
new file mode 100644
index 0000000..affcc8a
--- /dev/null
+++ b/tests/cxx/parser/polymorphism/recursive/test.xsd
@@ -0,0 +1,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>