summaryrefslogtreecommitdiff
path: root/test/schemas
diff options
context:
space:
mode:
Diffstat (limited to 'test/schemas')
-rw-r--r--test/schemas/.memdump4
-rw-r--r--test/schemas/all.xsd16
-rw-r--r--test/schemas/all1_0.xml4
-rw-r--r--test/schemas/all1_0.xsd10
-rw-r--r--test/schemas/all_0.xml1
-rw-r--r--test/schemas/all_0.xsd12
-rw-r--r--test/schemas/all_1.xml2
-rw-r--r--test/schemas/all_1.xsd12
-rw-r--r--test/schemas/all_2.xml1
-rw-r--r--test/schemas/all_2.xsd11
-rw-r--r--test/schemas/all_3.xml1
-rw-r--r--test/schemas/all_4.xml1
-rw-r--r--test/schemas/all_5.xml1
-rw-r--r--test/schemas/all_6.xml1
-rw-r--r--test/schemas/all_7.xml1
-rw-r--r--test/schemas/attr0_0.xml1
-rw-r--r--test/schemas/attr0_0.xsd13
-rw-r--r--test/schemas/choice_0.xml3
-rw-r--r--test/schemas/choice_0.xsd13
-rw-r--r--test/schemas/choice_1.xml3
-rw-r--r--test/schemas/choice_1.xsd13
-rw-r--r--test/schemas/choice_2.xml4
-rw-r--r--test/schemas/choice_2.xsd13
-rw-r--r--test/schemas/choice_3.xml4
-rw-r--r--test/schemas/choice_4.xml2
-rw-r--r--test/schemas/choice_5.xml6
-rw-r--r--test/schemas/choice_6.xml7
-rw-r--r--test/schemas/date_0.xml25
-rw-r--r--test/schemas/date_0.xsd122
-rw-r--r--test/schemas/deter0_0.xml5
-rw-r--r--test/schemas/deter0_0.xsd16
-rw-r--r--test/schemas/dur_0.xml13
-rw-r--r--test/schemas/dur_0.xsd72
-rw-r--r--test/schemas/elem0_0.xml3
-rw-r--r--test/schemas/elem0_0.xsd16
-rw-r--r--test/schemas/empty_0.xml1
-rw-r--r--test/schemas/empty_0.xsd13
-rw-r--r--test/schemas/empty_1.xsd9
-rw-r--r--test/schemas/extension0_0.xml7
-rw-r--r--test/schemas/extension0_0.xsd20
-rw-r--r--test/schemas/extension1_0.xml1
-rw-r--r--test/schemas/extension1_0.xsd17
-rw-r--r--test/schemas/extension1_1.xml1
-rw-r--r--test/schemas/extension1_2.xml1
-rw-r--r--test/schemas/group0_0.xml3
-rw-r--r--test/schemas/group0_0.xsd18
-rw-r--r--test/schemas/hexbinary_0.xml20
-rw-r--r--test/schemas/hexbinary_0.xsd35
-rw-r--r--test/schemas/hexbinary_1.xml15
-rw-r--r--test/schemas/import0_0.imp13
-rw-r--r--test/schemas/import0_0.xml8
-rw-r--r--test/schemas/import0_0.xsd21
-rw-r--r--test/schemas/item_0.xml6
-rw-r--r--test/schemas/item_0.xsd39
-rw-r--r--test/schemas/item_1.xsd42
-rw-r--r--test/schemas/length1_0.xml1
-rw-r--r--test/schemas/length1_0.xsd11
-rw-r--r--test/schemas/length2_0.xml5
-rw-r--r--test/schemas/length2_0.xsd14
-rw-r--r--test/schemas/length3_0.xml5
-rw-r--r--test/schemas/length3_0.xsd10
-rw-r--r--test/schemas/list0_0.xml6
-rw-r--r--test/schemas/list0_0.xsd13
-rw-r--r--test/schemas/list0_1.xml3
-rw-r--r--test/schemas/list0_1.xsd13
-rw-r--r--test/schemas/list0_2.xml4
-rw-r--r--test/schemas/mixed0_0.xml1
-rw-r--r--test/schemas/mixed0_0.xsd5
-rw-r--r--test/schemas/mixed1_0.xml1
-rw-r--r--test/schemas/mixed1_0.xsd7
-rw-r--r--test/schemas/ns0_0.xml2
-rw-r--r--test/schemas/ns0_0.xsd16
-rw-r--r--test/schemas/ns0_1.xml2
-rw-r--r--test/schemas/ns0_1.xsd16
-rw-r--r--test/schemas/ns0_2.xml2
-rw-r--r--test/schemas/ns0_3.xml2
-rw-r--r--test/schemas/ns0_4.xml3
-rw-r--r--test/schemas/ns1_0.xml2
-rw-r--r--test/schemas/ns1_0.xsd3
-rw-r--r--test/schemas/ns2_0.xml1
-rw-r--r--test/schemas/ns2_0.xsd15
-rw-r--r--test/schemas/po0_0.xml32
-rw-r--r--test/schemas/po0_0.xsd59
-rw-r--r--test/schemas/po1_0.xml33
-rw-r--r--test/schemas/po1_0.xsd63
-rw-r--r--test/schemas/restriction0_0.xml5
-rw-r--r--test/schemas/restriction0_0.xsd21
-rw-r--r--test/schemas/seq0_0.xml61
-rw-r--r--test/schemas/seq0_0.xsd64
-rw-r--r--test/schemas/vdv-complexTypes.xsd37
-rw-r--r--test/schemas/vdv-first0_0.xml33
-rw-r--r--test/schemas/vdv-first0_0.xsd67
-rw-r--r--test/schemas/vdv-first1_0.xml33
-rw-r--r--test/schemas/vdv-first1_0.xsd47
-rw-r--r--test/schemas/vdv-first2_0.xml33
-rw-r--r--test/schemas/vdv-first2_0.xsd89
-rw-r--r--test/schemas/vdv-first3_0.xml33
-rw-r--r--test/schemas/vdv-first3_0.xsd68
-rw-r--r--test/schemas/vdv-first4_0.xml33
-rw-r--r--test/schemas/vdv-first4_0.xsd150
-rw-r--r--test/schemas/vdv-first4_1.xml33
-rw-r--r--test/schemas/vdv-first4_2.xml33
-rw-r--r--test/schemas/vdv-first5_0.xml33
-rw-r--r--test/schemas/vdv-first5_0.xsd85
-rw-r--r--test/schemas/vdv-simpleTypes.xsd38
105 files changed, 2068 insertions, 0 deletions
diff --git a/test/schemas/.memdump b/test/schemas/.memdump
new file mode 100644
index 0000000..0a6efc4
--- /dev/null
+++ b/test/schemas/.memdump
@@ -0,0 +1,4 @@
+ 01:13:40 PM
+
+ MEMORY ALLOCATED : 0, MAX was 28425
+BLOCK NUMBER SIZE TYPE
diff --git a/test/schemas/all.xsd b/test/schemas/all.xsd
new file mode 100644
index 0000000..b2e70e3
--- /dev/null
+++ b/test/schemas/all.xsd
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:complexType name="PurchaseOrderType">
+ <xsd:sequence>
+ <xsd:all>
+ <xsd:element name="shipTo" type="USAddress"/>
+ <xsd:element name="billTo" type="USAddress"/>
+ <xsd:element name="items" type="Items"/>
+ </xsd:all>
+ <xsd:sequence>
+ <xsd:element ref="comment" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:sequence>
+ <xsd:attribute name="orderDate" type="xsd:date"/>
+ </xsd:complexType>
+</xsd:schema>
diff --git a/test/schemas/all1_0.xml b/test/schemas/all1_0.xml
new file mode 100644
index 0000000..f50088c
--- /dev/null
+++ b/test/schemas/all1_0.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<a>
+ <b/>
+</a>
diff --git a/test/schemas/all1_0.xsd b/test/schemas/all1_0.xsd
new file mode 100644
index 0000000..28fee0e
--- /dev/null
+++ b/test/schemas/all1_0.xsd
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:complexType name="A">
+ <xs:all>
+ <xs:element name="b" type="xs:string" minOccurs="0"/>
+ </xs:all>
+ </xs:complexType>
+
+ <xs:element name="a" type="A"/>
+</xs:schema>
diff --git a/test/schemas/all_0.xml b/test/schemas/all_0.xml
new file mode 100644
index 0000000..fb5b0fa
--- /dev/null
+++ b/test/schemas/all_0.xml
@@ -0,0 +1 @@
+<doc><a/><b/><c/></doc>
diff --git a/test/schemas/all_0.xsd b/test/schemas/all_0.xsd
new file mode 100644
index 0000000..55c04ee
--- /dev/null
+++ b/test/schemas/all_0.xsd
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:element name="doc">
+ <xsd:complexType>
+ <xsd:all minOccurs="1">
+ <xsd:element name="a"/>
+ <xsd:element name="b"/>
+ <xsd:element name="c"/>
+ </xsd:all>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
diff --git a/test/schemas/all_1.xml b/test/schemas/all_1.xml
new file mode 100644
index 0000000..41d797e
--- /dev/null
+++ b/test/schemas/all_1.xml
@@ -0,0 +1,2 @@
+<doc><b/><c/><a/></doc>
+
diff --git a/test/schemas/all_1.xsd b/test/schemas/all_1.xsd
new file mode 100644
index 0000000..bc386f3
--- /dev/null
+++ b/test/schemas/all_1.xsd
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:element name="doc">
+ <xsd:complexType>
+ <xsd:all minOccurs="0">
+ <xsd:element name="a"/>
+ <xsd:element name="b"/>
+ <xsd:element name="c"/>
+ </xsd:all>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
diff --git a/test/schemas/all_2.xml b/test/schemas/all_2.xml
new file mode 100644
index 0000000..cc1580b
--- /dev/null
+++ b/test/schemas/all_2.xml
@@ -0,0 +1 @@
+<doc><b/><a/><c/></doc>
diff --git a/test/schemas/all_2.xsd b/test/schemas/all_2.xsd
new file mode 100644
index 0000000..630b0df
--- /dev/null
+++ b/test/schemas/all_2.xsd
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:element name="doc">
+ <xsd:complexType>
+ <xsd:all>
+ <xsd:element name="a"/>
+ <xsd:element minOccurs="0" name="b"/>
+ </xsd:all>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
diff --git a/test/schemas/all_3.xml b/test/schemas/all_3.xml
new file mode 100644
index 0000000..c011b3f
--- /dev/null
+++ b/test/schemas/all_3.xml
@@ -0,0 +1 @@
+<doc><a/><b/></doc>
diff --git a/test/schemas/all_4.xml b/test/schemas/all_4.xml
new file mode 100644
index 0000000..afa807c
--- /dev/null
+++ b/test/schemas/all_4.xml
@@ -0,0 +1 @@
+<doc></doc>
diff --git a/test/schemas/all_5.xml b/test/schemas/all_5.xml
new file mode 100644
index 0000000..d68f321
--- /dev/null
+++ b/test/schemas/all_5.xml
@@ -0,0 +1 @@
+<doc><a/><b/><a/></doc>
diff --git a/test/schemas/all_6.xml b/test/schemas/all_6.xml
new file mode 100644
index 0000000..7dd71b1
--- /dev/null
+++ b/test/schemas/all_6.xml
@@ -0,0 +1 @@
+<doc><a/></doc>
diff --git a/test/schemas/all_7.xml b/test/schemas/all_7.xml
new file mode 100644
index 0000000..c011b3f
--- /dev/null
+++ b/test/schemas/all_7.xml
@@ -0,0 +1 @@
+<doc><a/><b/></doc>
diff --git a/test/schemas/attr0_0.xml b/test/schemas/attr0_0.xml
new file mode 100644
index 0000000..cb5b1a6
--- /dev/null
+++ b/test/schemas/attr0_0.xml
@@ -0,0 +1 @@
+<foo id="abc"/>
diff --git a/test/schemas/attr0_0.xsd b/test/schemas/attr0_0.xsd
new file mode 100644
index 0000000..d2031ba
--- /dev/null
+++ b/test/schemas/attr0_0.xsd
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string">
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
+
diff --git a/test/schemas/choice_0.xml b/test/schemas/choice_0.xml
new file mode 100644
index 0000000..677b039
--- /dev/null
+++ b/test/schemas/choice_0.xml
@@ -0,0 +1,3 @@
+<doc>
+<a/>
+</doc>
diff --git a/test/schemas/choice_0.xsd b/test/schemas/choice_0.xsd
new file mode 100644
index 0000000..1491b6b
--- /dev/null
+++ b/test/schemas/choice_0.xsd
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:element name="doc">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs="1" maxOccurs="1">
+ <xs:element name="a"/>
+ <xs:element name="b"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/test/schemas/choice_1.xml b/test/schemas/choice_1.xml
new file mode 100644
index 0000000..d5c0dd1
--- /dev/null
+++ b/test/schemas/choice_1.xml
@@ -0,0 +1,3 @@
+<doc>
+<b/>
+</doc>
diff --git a/test/schemas/choice_1.xsd b/test/schemas/choice_1.xsd
new file mode 100644
index 0000000..00614d0
--- /dev/null
+++ b/test/schemas/choice_1.xsd
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:element name="doc">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="1">
+ <xs:element name="a"/>
+ <xs:element name="b"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/test/schemas/choice_2.xml b/test/schemas/choice_2.xml
new file mode 100644
index 0000000..7b27f17
--- /dev/null
+++ b/test/schemas/choice_2.xml
@@ -0,0 +1,4 @@
+<doc>
+<a/>
+<b/>
+</doc>
diff --git a/test/schemas/choice_2.xsd b/test/schemas/choice_2.xsd
new file mode 100644
index 0000000..9f2b094
--- /dev/null
+++ b/test/schemas/choice_2.xsd
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:element name="doc">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs="1" maxOccurs="3">
+ <xs:element name="a"/>
+ <xs:element name="b"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/test/schemas/choice_3.xml b/test/schemas/choice_3.xml
new file mode 100644
index 0000000..0358109
--- /dev/null
+++ b/test/schemas/choice_3.xml
@@ -0,0 +1,4 @@
+<doc>
+<a/>
+<a/>
+</doc>
diff --git a/test/schemas/choice_4.xml b/test/schemas/choice_4.xml
new file mode 100644
index 0000000..636923c
--- /dev/null
+++ b/test/schemas/choice_4.xml
@@ -0,0 +1,2 @@
+<doc>
+</doc>
diff --git a/test/schemas/choice_5.xml b/test/schemas/choice_5.xml
new file mode 100644
index 0000000..3345a68
--- /dev/null
+++ b/test/schemas/choice_5.xml
@@ -0,0 +1,6 @@
+<doc>
+<a/>
+<b/>
+<a/>
+</doc>
+
diff --git a/test/schemas/choice_6.xml b/test/schemas/choice_6.xml
new file mode 100644
index 0000000..394153d
--- /dev/null
+++ b/test/schemas/choice_6.xml
@@ -0,0 +1,7 @@
+<doc>
+<a/>
+<b/>
+<a/>
+<a/>
+</doc>
+
diff --git a/test/schemas/date_0.xml b/test/schemas/date_0.xml
new file mode 100644
index 0000000..fbef1e5
--- /dev/null
+++ b/test/schemas/date_0.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<date>
+ <time>01:02:59</time>
+ <time1>01:02:59</time1>
+ <time2>12:59:59.0001</time2>
+ <time2>12:00:00</time2>
+ <date1>1996-05-20</date1>
+ <date1>2002-05-18</date1>
+ <date2>1996-05-19Z</date2>
+ <date2>2002-05-19Z</date2>
+ <date1>2002-05-18Z</date1>
+ <date1>2000-05-18Z</date1>
+ <dt1>2000-05-18T00:00:00</dt1>
+ <dt2>2002-05-19T21:30:00.99</dt2>
+ <hol>--01-01</hol>
+ <hol>--07-04</hol>
+ <hol>--12-25</hol>
+ <year1>2002</year1>
+ <yearmon1>2002-05</yearmon1>
+ <mon1>--05Z</mon1>
+ <day1>---31</day1>
+ <monthday1>--02-28Z</monthday1>
+ <monthday1>--12-31-06:00</monthday1>
+ <dt2>2003-04-30T18:00:00-06:00</dt2>
+</date>
diff --git a/test/schemas/date_0.xsd b/test/schemas/date_0.xsd
new file mode 100644
index 0000000..7247394
--- /dev/null
+++ b/test/schemas/date_0.xsd
@@ -0,0 +1,122 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">
+ Testing date/time data types
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:element name="date">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:choice minOccurs="1" maxOccurs="unbounded">
+ <xsd:element name="time" type="xsd:time"/>
+ <xsd:element name="time1">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:time">
+ <xsd:maxInclusive value="23:59:59.9999999"/>
+ <xsd:minInclusive value="00:00:00"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="time2">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:time">
+ <xsd:maxInclusive value="13:50:50"/>
+ <xsd:minInclusive value="12:00:00"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="date1">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:date">
+ <xsd:maxExclusive value="2002-05-19"/>
+ <xsd:minExclusive value="1996-05-19"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="date2">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:date">
+ <xsd:maxInclusive value="2002-05-19Z"/>
+ <xsd:minInclusive value="1996-05-19Z"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="dt1">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:dateTime">
+ <xsd:maxExclusive value="2002-01-01T00:00:00Z"/>
+ <xsd:minExclusive value="1970-01-01T00:00:00Z"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="dt2">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:dateTime">
+ <xsd:maxInclusive value="2003-05-01T00:00:00Z"/>
+ <xsd:minInclusive value="1996-05-19T21:30:00Z"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="hol" type="holidays"/>
+ <xsd:element name="year1">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gYear">
+ <xsd:maxInclusive value="2003Z"/>
+ <xsd:minInclusive value="1996Z"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="yearmon1">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gYearMonth">
+ <xsd:maxInclusive value="2003-05Z"/>
+ <xsd:minInclusive value="1996-05Z"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="mon1">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gMonth">
+ <xsd:minInclusive value="--01Z"/>
+ <xsd:maxInclusive value="--05Z"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="day1">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:gDay">
+ <xsd:minInclusive value="---28"/>
+ <xsd:maxInclusive value="---31"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="monthday1" type="xsd:gMonthDay"/>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:simpleType name='holidays'>
+ <xsd:annotation>
+ <xsd:documentation>some US holidays</xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base='xsd:gMonthDay'>
+ <xsd:enumeration value='--01-01'>
+ <xsd:annotation>
+ <xsd:documentation>New Year's day</xsd:documentation>
+ </xsd:annotation>
+ </xsd:enumeration>
+ <xsd:enumeration value='--07-04'>
+ <xsd:annotation>
+ <xsd:documentation>4th of July</xsd:documentation>
+ </xsd:annotation>
+ </xsd:enumeration>
+ <xsd:enumeration value='--12-25'>
+ <xsd:annotation>
+ <xsd:documentation>Christmas</xsd:documentation>
+ </xsd:annotation>
+ </xsd:enumeration>
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
+
diff --git a/test/schemas/deter0_0.xml b/test/schemas/deter0_0.xml
new file mode 100644
index 0000000..0ea1a41
--- /dev/null
+++ b/test/schemas/deter0_0.xml
@@ -0,0 +1,5 @@
+<book>
+ <odd-page>first page</odd-page>
+ <even-page>second page</even-page>
+ <odd-page>third page</odd-page>
+</book>
diff --git a/test/schemas/deter0_0.xsd b/test/schemas/deter0_0.xsd
new file mode 100644
index 0000000..8b5da69
--- /dev/null
+++ b/test/schemas/deter0_0.xsd
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:element name="odd-page" type="xs:string"/>
+ <xs:element name="even-page" type="xs:string"/>
+ <xs:element name="book">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="odd-page"/>
+ <xs:element ref="even-page"/>
+ </xs:sequence>
+ <xs:element ref="odd-page" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/test/schemas/dur_0.xml b/test/schemas/dur_0.xml
new file mode 100644
index 0000000..be84943
--- /dev/null
+++ b/test/schemas/dur_0.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<duration>
+ <second1>PT0.9S</second1>
+ <second2>PT0.1S</second2>
+ <second2>PT0.999999S</second2>
+ <month1>P0Y27D</month1>
+ <month1>P27DT23H59M59S</month1>
+ <month2>P0Y</month2>
+ <year1>P367DT23H59M59S</year1>
+ <year1>P13M</year1>
+ <year2>P12M</year2>
+ <month3>PT86399S</month3>
+</duration>
diff --git a/test/schemas/dur_0.xsd b/test/schemas/dur_0.xsd
new file mode 100644
index 0000000..374c038
--- /dev/null
+++ b/test/schemas/dur_0.xsd
@@ -0,0 +1,72 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">
+ Testing duration data types
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:element name="duration">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:choice minOccurs="1" maxOccurs="unbounded">
+ <xsd:element name="second1">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:duration">
+ <xsd:maxExclusive value="PT1S"/>
+ <xsd:minExclusive value="PT0.1S"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="second2">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:duration">
+ <xsd:maxInclusive value="PT1S"/>
+ <xsd:minInclusive value="PT0.1S"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="month1">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:duration">
+ <xsd:maxExclusive value="P1M"/>
+ <xsd:minExclusive value="P0M"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="month2">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:duration">
+ <xsd:maxInclusive value="P1M"/>
+ <xsd:minInclusive value="P0M"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="month3" type="MSD"/>
+ <xsd:element name="year1">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:duration">
+ <xsd:maxExclusive value="P2Y"/>
+ <xsd:minExclusive value="P1Y"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="year2">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:duration">
+ <xsd:maxInclusive value="P2Y"/>
+ <xsd:minInclusive value="P1Y"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:simpleType name="MSD">
+ <xsd:restriction base="xsd:duration">
+ <xsd:maxExclusive value="PT24H"/>
+ <xsd:minExclusive value="-PT24H"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
+
diff --git a/test/schemas/elem0_0.xml b/test/schemas/elem0_0.xml
new file mode 100644
index 0000000..f741c58
--- /dev/null
+++ b/test/schemas/elem0_0.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<doc/>
+
diff --git a/test/schemas/elem0_0.xsd b/test/schemas/elem0_0.xsd
new file mode 100644
index 0000000..2c5bf5f
--- /dev/null
+++ b/test/schemas/elem0_0.xsd
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:annotation>
+ <xsd:documentation>
+ Testing min and max occurance attributes on element
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:element name="doc">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name='a' minOccurs='0' maxOccurs='3'/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
diff --git a/test/schemas/empty_0.xml b/test/schemas/empty_0.xml
new file mode 100644
index 0000000..e9906b7
--- /dev/null
+++ b/test/schemas/empty_0.xml
@@ -0,0 +1 @@
+<internationalPrice currency="EUR" value="423.46"/>
diff --git a/test/schemas/empty_0.xsd b/test/schemas/empty_0.xsd
new file mode 100644
index 0000000..76e5f45
--- /dev/null
+++ b/test/schemas/empty_0.xsd
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:element name="internationalPrice">
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:restriction base="xsd:anyType">
+ <xsd:attribute name="currency" type="xsd:string"/>
+ <xsd:attribute name="value" type="xsd:decimal"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
diff --git a/test/schemas/empty_1.xsd b/test/schemas/empty_1.xsd
new file mode 100644
index 0000000..2c81c09
--- /dev/null
+++ b/test/schemas/empty_1.xsd
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:element name="internationalPrice">
+ <xsd:complexType>
+ <xsd:attribute name="currency" type="xsd:string"/>
+ <xsd:attribute name="value" type="xsd:decimal"/>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
diff --git a/test/schemas/extension0_0.xml b/test/schemas/extension0_0.xml
new file mode 100644
index 0000000..60dd348
--- /dev/null
+++ b/test/schemas/extension0_0.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<addressee>
+ <forename>Albert</forename>
+ <forename>Arnold</forename>
+ <surname>Gore</surname>
+ <generation>Jr</generation>
+</addressee>
diff --git a/test/schemas/extension0_0.xsd b/test/schemas/extension0_0.xsd
new file mode 100644
index 0000000..d89751a
--- /dev/null
+++ b/test/schemas/extension0_0.xsd
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:complexType name="personName">
+ <xs:sequence>
+ <xs:element name="title" minOccurs="0"/>
+ <xs:element name="forename" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="surname"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="extendedName">
+ <xs:complexContent>
+ <xs:extension base="personName">
+ <xs:sequence>
+ <xs:element name="generation" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="addressee" type="extendedName"/>
+</xs:schema>
diff --git a/test/schemas/extension1_0.xml b/test/schemas/extension1_0.xml
new file mode 100644
index 0000000..5c3a0c9
--- /dev/null
+++ b/test/schemas/extension1_0.xml
@@ -0,0 +1 @@
+<title lang="fr">salut</title>
diff --git a/test/schemas/extension1_0.xsd b/test/schemas/extension1_0.xsd
new file mode 100644
index 0000000..0a11e14
--- /dev/null
+++ b/test/schemas/extension1_0.xsd
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:simpleType name="string255">
+ <xs:restriction base="xs:token">
+ <xs:maxLength value="255"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:element name="title">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="string255">
+ <xs:attribute name="lang" type="xs:language"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/test/schemas/extension1_1.xml b/test/schemas/extension1_1.xml
new file mode 100644
index 0000000..7780cf6
--- /dev/null
+++ b/test/schemas/extension1_1.xml
@@ -0,0 +1 @@
+<title langue="fr">salut</title>
diff --git a/test/schemas/extension1_2.xml b/test/schemas/extension1_2.xml
new file mode 100644
index 0000000..3d65bb0
--- /dev/null
+++ b/test/schemas/extension1_2.xml
@@ -0,0 +1 @@
+<title lang="fr"><salut/></title>
diff --git a/test/schemas/group0_0.xml b/test/schemas/group0_0.xml
new file mode 100644
index 0000000..bf58ba6
--- /dev/null
+++ b/test/schemas/group0_0.xml
@@ -0,0 +1,3 @@
+<author>
+ <name>Foo Bar</name>
+</author>
diff --git a/test/schemas/group0_0.xsd b/test/schemas/group0_0.xsd
new file mode 100644
index 0000000..7dfa393
--- /dev/null
+++ b/test/schemas/group0_0.xsd
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:group name="name">
+ <xs:choice>
+ <xs:element name="name" type="xs:string"/>
+ <xs:sequence>
+ <xs:element name="first-name" type="xs:string"/>
+ <xs:element name="middle-name" type="xs:string" minOccurs="0"/>
+ <xs:element name="last-name" type="xs:string"/>
+ </xs:sequence>
+ </xs:choice>
+ </xs:group>
+ <xs:element name="author">
+ <xs:complexType>
+ <xs:group ref="name"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/test/schemas/hexbinary_0.xml b/test/schemas/hexbinary_0.xml
new file mode 100644
index 0000000..9513445
--- /dev/null
+++ b/test/schemas/hexbinary_0.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<xsd_hexBinary>
+ <hex>00</hex>
+ <hex>0123456789ABCDEF</hex>
+ <hex>abcdef0123456789</hex>
+ <hex>0123456789abcdef</hex>
+ <hex>0123456789ABCDEF</hex>
+ <hex>0123456789abcdef0123456789ABCDEF</hex>
+ <hex>0123456789abcdef0123456789ABCDEF0123456789abcdef0123456789ABCDEF0123456789abcdef0123456789ABCDEF0123456789abcdef0123456789ABCDEF0123456789abcdef0123456789ABCDEF</hex>
+ <hex>01234567899876543210</hex>
+ <hex>00112233445566778899aAbBcCdDeEfF</hex>
+ <hex>A0B1C2D3E4F5</hex>
+ <!-- minLength and maxLength -->
+ <hex2>00</hex2>
+ <hex2>0000000000000000</hex2>
+ <hex2>1122334455667788</hex2>
+ <!-- length -->
+ <hex3>abcd</hex3>
+ <hex3>0ed0</hex3>
+</xsd_hexBinary>
diff --git a/test/schemas/hexbinary_0.xsd b/test/schemas/hexbinary_0.xsd
new file mode 100644
index 0000000..60a6bec
--- /dev/null
+++ b/test/schemas/hexbinary_0.xsd
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="unqualified"
+ attributeFormDefault="unqualified">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">
+ Testing hexBinary data types
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:element name="xsd_hexBinary">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:choice minOccurs="1" maxOccurs="unbounded">
+ <xsd:element name="hex" type="xsd:hexBinary"/>
+ <xsd:element name="hex2">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:hexBinary">
+ <xsd:maxLength value="8"/>
+ <xsd:minLength value="1"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="hex3">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:hexBinary">
+ <xsd:length value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
+
diff --git a/test/schemas/hexbinary_1.xml b/test/schemas/hexbinary_1.xml
new file mode 100644
index 0000000..b9d6923
--- /dev/null
+++ b/test/schemas/hexbinary_1.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!-- all should fail to validate -->
+<xsd_hexBinary>
+ <hex></hex>
+ <hex/>
+ <hex>0</hex>
+ <hex>0123456789ABCDEFGH</hex>
+ <hex>+abcdef0123456789</hex>
+ <hex>-0123456789abcdef</hex>
+ <!-- minLength and maxLength -->
+ <hex2>112233445566778899</hex2>
+ <!-- length -->
+ <hex3>ab</hex3>
+ <hex3>00fedc</hex3>
+</xsd_hexBinary>
diff --git a/test/schemas/import0_0.imp b/test/schemas/import0_0.imp
new file mode 100644
index 0000000..ce446d8
--- /dev/null
+++ b/test/schemas/import0_0.imp
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://example.net/xmlschema2"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://example.net/xmlschema2"
+ elementFormDefault="qualified" attributeFormDefault="unqualified">
+
+<xs:simpleType name="tfoo">
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:maxLength value="2"/>
+ </xs:restriction>
+</xs:simpleType>
+
+</xs:schema>
diff --git a/test/schemas/import0_0.xml b/test/schemas/import0_0.xml
new file mode 100644
index 0000000..5ba7e3f
--- /dev/null
+++ b/test/schemas/import0_0.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<bar xmlns="http://example.net/xmlschema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://example.net/xmlschema testImportTypes.xsd">
+ <foo1>
+ xy
+ </foo1>
+</bar>
diff --git a/test/schemas/import0_0.xsd b/test/schemas/import0_0.xsd
new file mode 100644
index 0000000..e973d64
--- /dev/null
+++ b/test/schemas/import0_0.xsd
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://example.net/xmlschema"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:ns1="http://example.net/xmlschema"
+ xmlns:ns2="http://example.net/xmlschema2"
+ xmlns="http://example.net/xmlschema"
+ elementFormDefault="qualified" attributeFormDefault="unqualified">
+
+<xs:import namespace="http://example.net/xmlschema2"
+ schemaLocation="import0_0.imp"/>
+
+<xs:element name="bar">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="foo1" type="ns2:tfoo"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:element>
+
+
+</xs:schema>
diff --git a/test/schemas/item_0.xml b/test/schemas/item_0.xml
new file mode 100644
index 0000000..19d0790
--- /dev/null
+++ b/test/schemas/item_0.xml
@@ -0,0 +1,6 @@
+<Item partNum="926-AA" shipBy="air">
+<productName>foo</productName>
+<quantity>2</quantity>
+<USPrice>1.0</USPrice>
+<comment>No comment !</comment>
+</Item>
diff --git a/test/schemas/item_0.xsd b/test/schemas/item_0.xsd
new file mode 100644
index 0000000..3d95ef3
--- /dev/null
+++ b/test/schemas/item_0.xsd
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:element name="comment" type="xsd:string"/>
+ <!-- Stock Keeping Unit, a code for identifying products -->
+ <xsd:simpleType name="SKU">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="\d{3}-[A-Z]{2}"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:element name="Item" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="productName" type="xsd:string"/>
+ <xsd:element name="quantity">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:positiveInteger">
+ <xsd:maxExclusive value="100"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="USPrice" type="xsd:decimal"/>
+ <xsd:element ref="comment" minOccurs="0"/>
+ <xsd:element name="shipDate" type="xsd:date" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="partNum" type="SKU" use="required"/>
+ <!-- add weightKg and shipBy attributes -->
+ <xsd:attribute name="weightKg" type="xsd:decimal"/>
+ <xsd:attribute name="shipBy">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="air"/>
+ <xsd:enumeration value="land"/>
+ <xsd:enumeration value="any"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
diff --git a/test/schemas/item_1.xsd b/test/schemas/item_1.xsd
new file mode 100644
index 0000000..cea1f01
--- /dev/null
+++ b/test/schemas/item_1.xsd
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:element name="comment" type="xsd:string"/>
+<!-- Stock Keeping Unit, a code for identifying products -->
+ <xsd:simpleType name="SKU">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="\d{3}-[A-Z]{2}"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:element name="Item" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="productName" type="xsd:string"/>
+ <xsd:element name="quantity">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:positiveInteger">
+ <xsd:maxExclusive value="100"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="USPrice" type="xsd:decimal"/>
+ <xsd:element ref="comment" minOccurs="0"/>
+ <xsd:element name="shipDate" type="xsd:date" minOccurs="0"/>
+ </xsd:sequence>
+<!-- attributeGroup replaces individual declarations -->
+ <xsd:attributeGroup ref="ItemDelivery"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:attributeGroup name="ItemDelivery">
+ <xsd:attribute name="partNum" type="SKU" use="required"/>
+ <xsd:attribute name="weightKg" type="xsd:decimal"/>
+ <xsd:attribute name="shipBy">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="air"/>
+ <xsd:enumeration value="land"/>
+ <xsd:enumeration value="any"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ </xsd:attributeGroup>
+</xsd:schema>
diff --git a/test/schemas/length1_0.xml b/test/schemas/length1_0.xml
new file mode 100644
index 0000000..0a8cd3f
--- /dev/null
+++ b/test/schemas/length1_0.xml
@@ -0,0 +1 @@
+<width unit="cm">25</width>
diff --git a/test/schemas/length1_0.xsd b/test/schemas/length1_0.xsd
new file mode 100644
index 0000000..8a1ba0f
--- /dev/null
+++ b/test/schemas/length1_0.xsd
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:complexType name="length1">
+ <xs:simpleContent>
+ <xs:extension base="xs:nonNegativeInteger">
+ <xs:attribute name="unit" type="xs:NMTOKEN"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:element name="width" type="length1"/>
+</xs:schema>
diff --git a/test/schemas/length2_0.xml b/test/schemas/length2_0.xml
new file mode 100644
index 0000000..5c851da
--- /dev/null
+++ b/test/schemas/length2_0.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<depth>
+ <size>25</size>
+ <unit>cm</unit>
+</depth>
diff --git a/test/schemas/length2_0.xsd b/test/schemas/length2_0.xsd
new file mode 100644
index 0000000..76d73c0
--- /dev/null
+++ b/test/schemas/length2_0.xsd
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:complexType name="length2">
+ <xs:complexContent>
+ <xs:restriction base="xs:anyType">
+ <xs:sequence>
+ <xs:element name="size" type="xs:nonNegativeInteger"/>
+ <xs:element name="unit" type="xs:NMTOKEN"/>
+ </xs:sequence>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="depth" type="length2"/>
+</xs:schema>
diff --git a/test/schemas/length3_0.xml b/test/schemas/length3_0.xml
new file mode 100644
index 0000000..5c851da
--- /dev/null
+++ b/test/schemas/length3_0.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<depth>
+ <size>25</size>
+ <unit>cm</unit>
+</depth>
diff --git a/test/schemas/length3_0.xsd b/test/schemas/length3_0.xsd
new file mode 100644
index 0000000..b97e688
--- /dev/null
+++ b/test/schemas/length3_0.xsd
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:complexType name="length3">
+ <xs:sequence>
+ <xs:element name="size" type="xs:non-positive-integer"/>
+ <xs:element name="unit" type="xs:NMTOKEN"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="depth" type="length3"/>
+</xs:schema>
diff --git a/test/schemas/list0_0.xml b/test/schemas/list0_0.xml
new file mode 100644
index 0000000..a58fe8b
--- /dev/null
+++ b/test/schemas/list0_0.xml
@@ -0,0 +1,6 @@
+<test>
+ <string>hello world</string>
+ <string>hello world</string>
+ <string>hello world</string>
+ <string>hello world</string>
+</test>
diff --git a/test/schemas/list0_0.xsd b/test/schemas/list0_0.xsd
new file mode 100644
index 0000000..33d7d66
--- /dev/null
+++ b/test/schemas/list0_0.xsd
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+ <xs:element name="test">
+ <xs:annotation>
+ <xs:documentation>Comment describing your root element</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="string" type="xs:string" minOccurs="2" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/test/schemas/list0_1.xml b/test/schemas/list0_1.xml
new file mode 100644
index 0000000..8878e5d
--- /dev/null
+++ b/test/schemas/list0_1.xml
@@ -0,0 +1,3 @@
+<test>
+ <string>hello world</string>
+</test>
diff --git a/test/schemas/list0_1.xsd b/test/schemas/list0_1.xsd
new file mode 100644
index 0000000..8966075
--- /dev/null
+++ b/test/schemas/list0_1.xsd
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+ <xs:element name="test">
+ <xs:annotation>
+ <xs:documentation>Comment describing your root element</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="string" type="xs:string" minOccurs="2" maxOccurs="3"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/test/schemas/list0_2.xml b/test/schemas/list0_2.xml
new file mode 100644
index 0000000..e94d481
--- /dev/null
+++ b/test/schemas/list0_2.xml
@@ -0,0 +1,4 @@
+<test>
+ <string>hello world</string>
+ <string>hello world</string>
+</test>
diff --git a/test/schemas/mixed0_0.xml b/test/schemas/mixed0_0.xml
new file mode 100644
index 0000000..5864343
--- /dev/null
+++ b/test/schemas/mixed0_0.xml
@@ -0,0 +1 @@
+<my>x</my>
diff --git a/test/schemas/mixed0_0.xsd b/test/schemas/mixed0_0.xsd
new file mode 100644
index 0000000..a82226e
--- /dev/null
+++ b/test/schemas/mixed0_0.xsd
@@ -0,0 +1,5 @@
+<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+ <xs:element name='my'>
+ <xs:complexType mixed='true'/>
+ </xs:element>
+</xs:schema>
diff --git a/test/schemas/mixed1_0.xml b/test/schemas/mixed1_0.xml
new file mode 100644
index 0000000..d8cf633
--- /dev/null
+++ b/test/schemas/mixed1_0.xml
@@ -0,0 +1 @@
+<my myattr='y'>x</my>
diff --git a/test/schemas/mixed1_0.xsd b/test/schemas/mixed1_0.xsd
new file mode 100644
index 0000000..a9ea6cc
--- /dev/null
+++ b/test/schemas/mixed1_0.xsd
@@ -0,0 +1,7 @@
+<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+ <xs:element name='my'>
+ <xs:complexType mixed='true'>
+ <xs:attribute name='myattr' type='xs:string' use='required'/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/test/schemas/ns0_0.xml b/test/schemas/ns0_0.xml
new file mode 100644
index 0000000..1cbaf1f
--- /dev/null
+++ b/test/schemas/ns0_0.xml
@@ -0,0 +1,2 @@
+<foo xmlns="http://example.com/xsd/ns" id="abc"/>
+
diff --git a/test/schemas/ns0_0.xsd b/test/schemas/ns0_0.xsd
new file mode 100644
index 0000000..38951d6
--- /dev/null
+++ b/test/schemas/ns0_0.xsd
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://example.com/xsd/ns"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified">
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string">
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
+
diff --git a/test/schemas/ns0_1.xml b/test/schemas/ns0_1.xml
new file mode 100644
index 0000000..6550f5c
--- /dev/null
+++ b/test/schemas/ns0_1.xml
@@ -0,0 +1,2 @@
+<n:foo xmlns:n="http://example.com/xsd/ns" id="abc"/>
+
diff --git a/test/schemas/ns0_1.xsd b/test/schemas/ns0_1.xsd
new file mode 100644
index 0000000..df2e79a
--- /dev/null
+++ b/test/schemas/ns0_1.xsd
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://example.com/xsd/ns"
+ elementFormDefault="qualified"
+ attributeFormDefault="qualified">
+ <xsd:element name="foo">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string">
+ <xsd:attribute name="id" type="xsd:ID"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
+
diff --git a/test/schemas/ns0_2.xml b/test/schemas/ns0_2.xml
new file mode 100644
index 0000000..8f2bdba
--- /dev/null
+++ b/test/schemas/ns0_2.xml
@@ -0,0 +1,2 @@
+<foo id="abc"/>
+
diff --git a/test/schemas/ns0_3.xml b/test/schemas/ns0_3.xml
new file mode 100644
index 0000000..4c5c1e4
--- /dev/null
+++ b/test/schemas/ns0_3.xml
@@ -0,0 +1,2 @@
+<n:foo xmlns:n="http://example.com/xsd/ns" n:id="abc"/>
+
diff --git a/test/schemas/ns0_4.xml b/test/schemas/ns0_4.xml
new file mode 100644
index 0000000..dcdd418
--- /dev/null
+++ b/test/schemas/ns0_4.xml
@@ -0,0 +1,3 @@
+<l:foo xmlns:l="http://example.com/xsd/ns"
+ xmlns:b="http://example.com/xsd/ns" b:id="abc"/>
+
diff --git a/test/schemas/ns1_0.xml b/test/schemas/ns1_0.xml
new file mode 100644
index 0000000..410ed26
--- /dev/null
+++ b/test/schemas/ns1_0.xml
@@ -0,0 +1,2 @@
+<my xmlns='http://my.ns/'
+>some</my>
diff --git a/test/schemas/ns1_0.xsd b/test/schemas/ns1_0.xsd
new file mode 100644
index 0000000..a77ec57
--- /dev/null
+++ b/test/schemas/ns1_0.xsd
@@ -0,0 +1,3 @@
+<schema xmlns='http://www.w3.org/2001/XMLSchema' targetNamespace='http://my.ns/'>
+ <element name='my' type='string'/>
+</schema>
diff --git a/test/schemas/ns2_0.xml b/test/schemas/ns2_0.xml
new file mode 100644
index 0000000..c3bb126
--- /dev/null
+++ b/test/schemas/ns2_0.xml
@@ -0,0 +1 @@
+<m:my xmlns:m='http://my.ns/' m:other='1'>content</m:my>
diff --git a/test/schemas/ns2_0.xsd b/test/schemas/ns2_0.xsd
new file mode 100644
index 0000000..9393beb
--- /dev/null
+++ b/test/schemas/ns2_0.xsd
@@ -0,0 +1,15 @@
+<schema xmlns:my='http://my.ns/'
+ xmlns='http://www.w3.org/2001/XMLSchema'
+ targetNamespace='http://my.ns/'
+ >
+ <attribute name='other' type='string'/>
+ <element name='my'>
+ <complexType>
+ <simpleContent>
+ <extension base='string'>
+ <attribute ref='my:other'/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+</schema>
diff --git a/test/schemas/po0_0.xml b/test/schemas/po0_0.xml
new file mode 100644
index 0000000..387232d
--- /dev/null
+++ b/test/schemas/po0_0.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<purchaseOrder orderDate="1999-10-20">
+ <shipTo country="US">
+ <name>Alice Smith</name>
+ <street>123 Maple Street</street>
+ <city>Mill Valley</city>
+ <state>CA</state>
+ <zip>90952</zip>
+ </shipTo>
+ <billTo country="US">
+ <name>Robert Smith</name>
+ <street>8 Oak Avenue</street>
+ <city>Old Town</city>
+ <state>PA</state>
+ <zip>95819</zip>
+ </billTo>
+ <comment>Hurry, my lawn is going wild!</comment>
+ <items>
+ <item partNum="872-AA">
+ <productName>Lawnmower</productName>
+ <quantity>1</quantity>
+ <USPrice>148.95</USPrice>
+ <comment>Confirm this is electric</comment>
+ </item>
+ <item partNum="926-AA">
+ <productName>Baby Monitor</productName>
+ <quantity>1</quantity>
+ <USPrice>39.98</USPrice>
+ <shipDate>1999-05-21</shipDate>
+ </item>
+ </items>
+</purchaseOrder>
diff --git a/test/schemas/po0_0.xsd b/test/schemas/po0_0.xsd
new file mode 100644
index 0000000..5a1e660
--- /dev/null
+++ b/test/schemas/po0_0.xsd
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">
+Purchase order schema for Example.com.
+ Copyright 2000 Example.com. All rights reserved.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:element name="purchaseOrder" type="PurchaseOrderType"/>
+ <xsd:element name="comment" type="xsd:string"/>
+ <xsd:complexType name="PurchaseOrderType">
+ <xsd:sequence>
+ <xsd:element name="shipTo" type="USAddress"/>
+ <xsd:element name="billTo" type="USAddress"/>
+ <xsd:element ref="comment" minOccurs="0"/>
+ <xsd:element name="items" type="Items"/>
+ </xsd:sequence>
+ <xsd:attribute name="orderDate" type="xsd:date"/>
+ </xsd:complexType>
+ <xsd:complexType name="USAddress">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="street" type="xsd:string"/>
+ <xsd:element name="city" type="xsd:string"/>
+ <xsd:element name="state" type="xsd:string"/>
+ <xsd:element name="zip" type="xsd:decimal"/>
+ </xsd:sequence>
+ <xsd:attribute name="country" type="xsd:NMTOKEN" fixed="US"/>
+ </xsd:complexType>
+ <xsd:complexType name="Items">
+ <xsd:sequence>
+ <xsd:element name="item" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="productName" type="xsd:string"/>
+ <xsd:element name="quantity">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:positiveInteger">
+ <xsd:maxExclusive value="100"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="USPrice" type="xsd:decimal"/>
+ <xsd:element ref="comment" minOccurs="0"/>
+ <xsd:element name="shipDate" type="xsd:date" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="partNum" type="SKU" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+<!-- Stock Keeping Unit, a code for identifying products -->
+ <xsd:simpleType name="SKU">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="\d{3}-[A-Z]{2}"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
+
diff --git a/test/schemas/po1_0.xml b/test/schemas/po1_0.xml
new file mode 100644
index 0000000..eb8dac6
--- /dev/null
+++ b/test/schemas/po1_0.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<apo:purchaseOrder xmlns:apo="http://www.example.com/PO1"
+ orderDate="1999-10-20">
+ <shipTo country="US">
+ <name>Alice Smith</name>
+ <street>123 Maple Street</street>
+ <city>Mill Valley</city>
+ <state>CA</state>
+ <zip>90952</zip>
+ </shipTo>
+ <billTo country="US">
+ <name>Robert Smith</name>
+ <street>8 Oak Avenue</street>
+ <city>Old Town</city>
+ <state>PA</state>
+ <zip>95819</zip>
+ </billTo>
+ <apo:comment>Hurry, my lawn is going wild!</apo:comment>
+ <items>
+ <item partNum="872-AA">
+ <productName>Lawnmower</productName>
+ <quantity>1</quantity>
+ <USPrice>148.95</USPrice>
+ <comment>Confirm this is electric</comment>
+ </item>
+ <item partNum="926-AA">
+ <productName>Baby Monitor</productName>
+ <quantity>1</quantity>
+ <USPrice>39.98</USPrice>
+ <shipDate>1999-05-21</shipDate>
+ </item>
+ </items>
+</apo:purchaseOrder>
diff --git a/test/schemas/po1_0.xsd b/test/schemas/po1_0.xsd
new file mode 100644
index 0000000..84f45a7
--- /dev/null
+++ b/test/schemas/po1_0.xsd
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:po="http://www.example.com/PO1"
+ targetNamespace="http://www.example.com/PO1"
+ elementFormDefault="unqualified"
+ attributeFormDefault="unqualified">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">
+Purchase order schema for Example.com.
+ Copyright 2000 Example.com. All rights reserved.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:element name="purchaseOrder" type="po:PurchaseOrderType"/>
+ <xsd:element name="comment" type="xsd:string"/>
+ <xsd:complexType name="PurchaseOrderType">
+ <xsd:sequence>
+ <xsd:element name="shipTo" type="po:USAddress"/>
+ <xsd:element name="billTo" type="po:USAddress"/>
+ <xsd:element ref="comment" minOccurs="0"/>
+ <xsd:element name="items" type="po:Items"/>
+ </xsd:sequence>
+ <xsd:attribute name="orderDate" type="xsd:date"/>
+ </xsd:complexType>
+ <xsd:complexType name="USAddress">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="street" type="xsd:string"/>
+ <xsd:element name="city" type="xsd:string"/>
+ <xsd:element name="state" type="xsd:string"/>
+ <xsd:element name="zip" type="xsd:decimal"/>
+ </xsd:sequence>
+ <xsd:attribute name="country" type="xsd:NMTOKEN" fixed="US"/>
+ </xsd:complexType>
+ <xsd:complexType name="Items">
+ <xsd:sequence>
+ <xsd:element name="item" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="productName" type="xsd:string"/>
+ <xsd:element name="quantity">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:positiveInteger">
+ <xsd:maxExclusive value="100"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="USPrice" type="xsd:decimal"/>
+ <xsd:element ref="comment" minOccurs="0"/>
+ <xsd:element name="shipDate" type="xsd:date" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="partNum" type="po:SKU" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+<!-- Stock Keeping Unit, a code for identifying products -->
+ <xsd:simpleType name="SKU">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="\d{3}-[A-Z]{2}"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
+
diff --git a/test/schemas/restriction0_0.xml b/test/schemas/restriction0_0.xml
new file mode 100644
index 0000000..8656d2c
--- /dev/null
+++ b/test/schemas/restriction0_0.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<who>
+ <forename>Bill</forename>
+ <surname>Clinton</surname>
+</who>
diff --git a/test/schemas/restriction0_0.xsd b/test/schemas/restriction0_0.xsd
new file mode 100644
index 0000000..6b35b9f
--- /dev/null
+++ b/test/schemas/restriction0_0.xsd
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:complexType name="personName">
+ <xs:sequence>
+ <xs:element name="title" minOccurs="0"/>
+ <xs:element name="forename" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="surname"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="simpleName">
+ <xs:complexContent>
+ <xs:restriction base="personName">
+ <xs:sequence>
+ <xs:element name="forename" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="surname"/>
+ </xs:sequence>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="who" type="simpleName"/>
+</xs:schema>
diff --git a/test/schemas/seq0_0.xml b/test/schemas/seq0_0.xml
new file mode 100644
index 0000000..54b1c1c
--- /dev/null
+++ b/test/schemas/seq0_0.xml
@@ -0,0 +1,61 @@
+<doc>
+ <!-- at least one present -->
+ <z-o>
+ <b/>
+ </z-o>
+ <o-o>
+ <c/>
+ </o-o>
+ <z-u>
+ <d/>
+ </z-u>
+ <o-u>
+ <e/>
+ </o-u>
+ <z-3>
+ <f/>
+ </z-3>
+ <o-3>
+ <g/>
+ </o-3>
+ <!-- more than one present when allowed -->
+ <z-o>
+ <b/>
+ </z-o>
+ <o-o>
+ <c/>
+ </o-o>
+ <z-u>
+ <d/>
+ <d/>
+ <d/>
+ </z-u>
+ <o-u>
+ <e/>
+ <e/>
+ <e/>
+ </o-u>
+ <z-3>
+ <f/>
+ <f/>
+ <f/>
+ </z-3>
+ <o-3>
+ <g/>
+ <g/>
+ <g/>
+ </o-3>
+ <!-- min 0 are not present -->
+ <z-o/>
+ <o-o>
+ <c/>
+ </o-o>
+ <z-u/>
+ <o-u>
+ <e/>
+ </o-u>
+ <z-3/>
+ <o-3>
+ <g/>
+ </o-3>
+</doc>
diff --git a/test/schemas/seq0_0.xsd b/test/schemas/seq0_0.xsd
new file mode 100644
index 0000000..34d3a78
--- /dev/null
+++ b/test/schemas/seq0_0.xsd
@@ -0,0 +1,64 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:annotation>
+ <xsd:documentation>
+ Testing min and max occurance attributes on sequences
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:element name="doc">
+ <xsd:complexType>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+
+ <xsd:element name="z-o">
+ <xsd:complexType>
+ <xsd:sequence minOccurs='0' maxOccurs='1'>
+ <xsd:element name='b'/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="o-o">
+ <xsd:complexType>
+ <xsd:sequence minOccurs='1' maxOccurs='1'>
+ <xsd:element name='c'/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="z-u">
+ <xsd:complexType>
+ <xsd:sequence minOccurs='0' maxOccurs='unbounded'>
+ <xsd:element name='d'/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="o-u">
+ <xsd:complexType>
+ <xsd:sequence minOccurs='1' maxOccurs='unbounded'>
+ <xsd:element name='e'/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="z-3">
+ <xsd:complexType>
+ <xsd:sequence minOccurs='0' maxOccurs='3'>
+ <xsd:element name='f'/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="o-3">
+ <xsd:complexType>
+ <xsd:sequence minOccurs='1' maxOccurs='3'>
+ <xsd:element name='g'/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
diff --git a/test/schemas/vdv-complexTypes.xsd b/test/schemas/vdv-complexTypes.xsd
new file mode 100644
index 0000000..c320e6d
--- /dev/null
+++ b/test/schemas/vdv-complexTypes.xsd
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Header: /cvs/gnome/gnome-xml/test/schemas/vdv-complexTypes.xsd,v 1.1 2003/11/25 15:38:59 veillard Exp $ -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+
+ <xs:complexType name="elementWithID">
+ <xs:attribute ref="id"/>
+ </xs:complexType>
+ <xs:complexType name="bookTmp">
+ <xs:complexContent>
+ <xs:extension base="elementWithID">
+ <xs:sequence>
+ <xs:element ref="isbn"/>
+ <xs:element ref="title"/>
+ <xs:element ref="author" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element ref="character" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute ref="available"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="personType">
+ <xs:complexContent>
+ <xs:extension base="elementWithID">
+ <xs:sequence>
+ <xs:element ref="name"/>
+ <xs:element ref="born"/>
+ <xs:element ref="dead" minOccurs="0"/>
+ <xs:element ref="qualification" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+
+</xs:schema>
diff --git a/test/schemas/vdv-first0_0.xml b/test/schemas/vdv-first0_0.xml
new file mode 100644
index 0000000..7d4e662
--- /dev/null
+++ b/test/schemas/vdv-first0_0.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Header: /cvs/gnome/gnome-xml/test/schemas/vdv-first0_0.xml,v 1.1 2003/11/22 20:37:51 veillard Exp $ -->
+<library>
+ <book id="b0836217462" available="true">
+ <isbn>0836217462</isbn>
+ <title lang="en">Being a Dog Is a Full-Time Job</title>
+ <author id="CMS">
+ <name>Charles M Schulz</name>
+ <born>1922-11-26</born>
+ <dead>2000-02-12</dead>
+ </author>
+ <character id="PP">
+ <name>Peppermint Patty</name>
+ <born>1966-08-22</born>
+ <qualification>bold, brash and tomboyish</qualification>
+ </character>
+ <character id="Snoopy">
+ <name>Snoopy</name>
+ <born>1950-10-04</born>
+ <qualification>extroverted beagle</qualification>
+ </character>
+ <character id="Schroeder">
+ <name>Schroeder</name>
+ <born>1951-05-30</born>
+ <qualification>brought classical music to the Peanuts strip</qualification>
+ </character>
+ <character id="Lucy">
+ <name>Lucy</name>
+ <born>1952-03-03</born>
+ <qualification>bossy, crabby and selfish</qualification>
+ </character>
+ </book>
+</library>
diff --git a/test/schemas/vdv-first0_0.xsd b/test/schemas/vdv-first0_0.xsd
new file mode 100644
index 0000000..e58bed2
--- /dev/null
+++ b/test/schemas/vdv-first0_0.xsd
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:element name="name" type="xs:string"/>
+ <xs:element name="qualification" type="xs:string"/>
+ <xs:element name="born" type="xs:date"/>
+ <xs:element name="dead" type="xs:date"/>
+ <xs:element name="isbn" type="xs:integer"/>
+
+ <xs:attribute name="id" type="xs:ID"/>
+ <xs:attribute name="available" type="xs:boolean"/>
+ <xs:attribute name="lang" type="xs:language"/>
+
+ <xs:element name="title">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute ref="lang"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="library">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="book" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="author">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="name"/>
+ <xs:element ref="born"/>
+ <xs:element ref="dead" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute ref="id"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="book">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="isbn"/>
+ <xs:element ref="title"/>
+ <xs:element ref="author" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element ref="character" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute ref="id"/>
+ <xs:attribute ref="available"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="character">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="name"/>
+ <xs:element ref="born"/>
+ <xs:element ref="qualification"/>
+ </xs:sequence>
+ <xs:attribute ref="id"/>
+ </xs:complexType>
+ </xs:element>
+
+</xs:schema>
diff --git a/test/schemas/vdv-first1_0.xml b/test/schemas/vdv-first1_0.xml
new file mode 100644
index 0000000..10f0409
--- /dev/null
+++ b/test/schemas/vdv-first1_0.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Header: /cvs/gnome/gnome-xml/test/schemas/vdv-first1_0.xml,v 1.1 2003/11/22 20:37:51 veillard Exp $ -->
+<library>
+ <book id="b0836217462" available="true">
+ <isbn>0836217462</isbn>
+ <title lang="en">Being a Dog Is a Full-Time Job</title>
+ <author id="CMS">
+ <name>Charles M Schulz</name>
+ <born>1922-11-26</born>
+ <dead>2000-02-12</dead>
+ </author>
+ <character id="PP">
+ <name>Peppermint Patty</name>
+ <born>1966-08-22</born>
+ <qualification>bold, brash and tomboyish</qualification>
+ </character>
+ <character id="Snoopy">
+ <name>Snoopy</name>
+ <born>1950-10-04</born>
+ <qualification>extroverted beagle</qualification>
+ </character>
+ <character id="Schroeder">
+ <name>Schroeder</name>
+ <born>1951-05-30</born>
+ <qualification>brought classical music to the Peanuts strip</qualification>
+ </character>
+ <character id="Lucy">
+ <name>Lucy</name>
+ <born>1952-03-03</born>
+ <qualification>bossy, crabby and selfish</qualification>
+ </character>
+ </book>
+</library>
diff --git a/test/schemas/vdv-first1_0.xsd b/test/schemas/vdv-first1_0.xsd
new file mode 100644
index 0000000..c0d6f27
--- /dev/null
+++ b/test/schemas/vdv-first1_0.xsd
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:element name="library">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="book" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="isbn" type="xs:integer"/>
+ <xs:element name="title">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="lang" type="xs:language"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="author" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="name" type="xs:string"/>
+ <xs:element name="born" type="xs:date"/>
+ <xs:element name="dead" type="xs:date"/>
+ </xs:sequence>
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="character" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="name" type="xs:string"/>
+ <xs:element name="born" type="xs:date"/>
+ <xs:element name="qualification" type="xs:string"/>
+ </xs:sequence>
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="id" type="xs:ID"/>
+ <xs:attribute name="available" type="xs:boolean"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/test/schemas/vdv-first2_0.xml b/test/schemas/vdv-first2_0.xml
new file mode 100644
index 0000000..b652536
--- /dev/null
+++ b/test/schemas/vdv-first2_0.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Header: /cvs/gnome/gnome-xml/test/schemas/vdv-first2_0.xml,v 1.1 2003/11/22 20:37:51 veillard Exp $ -->
+<library>
+ <book id="b0836217462" available="true">
+ <isbn>0836217462</isbn>
+ <title lang="en">Being a Dog Is a Full-Time Job</title>
+ <author id="CMS">
+ <name>Charles M Schulz</name>
+ <born>1922-11-26</born>
+ <dead>2000-02-12</dead>
+ </author>
+ <character id="PP">
+ <name>Peppermint Patty</name>
+ <born>1966-08-22</born>
+ <qualification>bold, brash and tomboyish</qualification>
+ </character>
+ <character id="Snoopy">
+ <name>Snoopy</name>
+ <born>1950-10-04</born>
+ <qualification>extroverted beagle</qualification>
+ </character>
+ <character id="Schroeder">
+ <name>Schroeder</name>
+ <born>1951-05-30</born>
+ <qualification>brought classical music to the Peanuts strip</qualification>
+ </character>
+ <character id="Lucy">
+ <name>Lucy</name>
+ <born>1952-03-03</born>
+ <qualification>bossy, crabby and selfish</qualification>
+ </character>
+ </book>
+</library>
diff --git a/test/schemas/vdv-first2_0.xsd b/test/schemas/vdv-first2_0.xsd
new file mode 100644
index 0000000..5e34e33
--- /dev/null
+++ b/test/schemas/vdv-first2_0.xsd
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Header: /cvs/gnome/gnome-xml/test/schemas/vdv-first2_0.xsd,v 1.1 2003/11/22 20:37:51 veillard Exp $ -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:simpleType name="string255">
+ <xs:restriction base="xs:token">
+ <xs:maxLength value="255"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="string32">
+ <xs:restriction base="xs:token">
+ <xs:maxLength value="32"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="isbn">
+ <xs:restriction base="xs:unsignedLong">
+ <xs:totalDigits value="10"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="supportedLanguages">
+ <xs:restriction base="xs:language">
+ <xs:enumeration value="en"/>
+ <xs:enumeration value="es"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:element name="name" type="string32"/>
+ <xs:element name="qualification" type="string255"/>
+ <xs:element name="born" type="xs:date"/>
+ <xs:element name="dead" type="xs:date"/>
+ <xs:element name="isbn" type="isbn"/>
+
+ <xs:attribute name="id" type="xs:ID"/>
+ <xs:attribute name="available" type="xs:boolean"/>
+ <xs:attribute name="lang" type="supportedLanguages"/>
+
+ <xs:element name="title">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="string255">
+ <xs:attribute ref="lang"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="library">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="book" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="author">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="name"/>
+ <xs:element ref="born"/>
+ <xs:element ref="dead" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute ref="id"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="book">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="isbn"/>
+ <xs:element ref="title"/>
+ <xs:element ref="author" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element ref="character" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute ref="id"/>
+ <xs:attribute ref="available"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="character">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="name"/>
+ <xs:element ref="born"/>
+ <xs:element ref="qualification"/>
+ </xs:sequence>
+ <xs:attribute ref="id"/>
+ </xs:complexType>
+ </xs:element>
+
+</xs:schema>
diff --git a/test/schemas/vdv-first3_0.xml b/test/schemas/vdv-first3_0.xml
new file mode 100644
index 0000000..0b2d7e2
--- /dev/null
+++ b/test/schemas/vdv-first3_0.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Header: /cvs/gnome/gnome-xml/test/schemas/vdv-first3_0.xml,v 1.1 2003/11/22 20:37:51 veillard Exp $ -->
+<library>
+ <book id="b0836217462" available="true">
+ <isbn>0836217462</isbn>
+ <title lang="en">Being a Dog Is a Full-Time Job</title>
+ <author id="CMS">
+ <name>Charles M Schulz</name>
+ <born>1922-11-26</born>
+ <dead>2000-02-12</dead>
+ </author>
+ <character id="PP">
+ <name>Peppermint Patty</name>
+ <born>1966-08-22</born>
+ <qualification>bold, brash and tomboyish</qualification>
+ </character>
+ <character id="Snoopy">
+ <name>Snoopy</name>
+ <born>1950-10-04</born>
+ <qualification>extroverted beagle</qualification>
+ </character>
+ <character id="Schroeder">
+ <name>Schroeder</name>
+ <born>1951-05-30</born>
+ <qualification>brought classical music to the Peanuts strip</qualification>
+ </character>
+ <character id="Lucy">
+ <name>Lucy</name>
+ <born>1952-03-03</born>
+ <qualification>bossy, crabby and selfish</qualification>
+ </character>
+ </book>
+</library>
diff --git a/test/schemas/vdv-first3_0.xsd b/test/schemas/vdv-first3_0.xsd
new file mode 100644
index 0000000..6fd44d6
--- /dev/null
+++ b/test/schemas/vdv-first3_0.xsd
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Header: /cvs/gnome/gnome-xml/test/schemas/vdv-first3_0.xsd,v 1.1 2003/11/22 20:37:51 veillard Exp $ -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:element name="name" type="xs:token"/>
+ <xs:element name="qualification" type="xs:token"/>
+ <xs:element name="born" type="xs:date"/>
+ <xs:element name="dead" type="xs:date"/>
+ <xs:element name="isbn" type="xs:unsignedLong"/>
+
+ <xs:attribute name="id" type="xs:ID"/>
+ <xs:attribute name="available" type="xs:boolean"/>
+ <xs:attribute name="lang" type="xs:language"/>
+
+ <xs:element name="title">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:token">
+ <xs:attribute ref="lang"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="library">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="book" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="author">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="name"/>
+ <xs:element ref="born"/>
+ <xs:element ref="dead" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute ref="id"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="book">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="isbn"/>
+ <xs:element ref="title"/>
+ <xs:element ref="author" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element ref="character" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute ref="id"/>
+ <xs:attribute ref="available"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="character">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="name"/>
+ <xs:element ref="born"/>
+ <xs:element ref="qualification"/>
+ </xs:sequence>
+ <xs:attribute ref="id"/>
+ </xs:complexType>
+ </xs:element>
+
+</xs:schema>
diff --git a/test/schemas/vdv-first4_0.xml b/test/schemas/vdv-first4_0.xml
new file mode 100644
index 0000000..b44164d
--- /dev/null
+++ b/test/schemas/vdv-first4_0.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Header: /cvs/gnome/gnome-xml/test/schemas/vdv-first4_0.xml,v 1.1 2003/11/24 13:04:35 veillard Exp $ -->
+<library>
+ <book id="b0836217462" available="true">
+ <isbn>0836217462</isbn>
+ <title lang="en">Being a Dog Is a Full-Time Job</title>
+ <author id="CMS">
+ <name>Charles M Schulz</name>
+ <born>1922-11-26</born>
+ <dead>2000-02-12</dead>
+ </author>
+ <character id="PP">
+ <name>Peppermint Patty</name>
+ <born>1966-08-22</born>
+ <qualification>bold, brash and tomboyish</qualification>
+ </character>
+ <character id="Snoopy">
+ <name>Snoopy</name>
+ <born>1950-10-04</born>
+ <qualification>extroverted beagle</qualification>
+ </character>
+ <character id="Schroeder">
+ <name>Schroeder</name>
+ <born>1951-05-30</born>
+ <qualification>brought classical music to the Peanuts strip</qualification>
+ </character>
+ <character id="Lucy">
+ <name>Lucy</name>
+ <born>1952-03-03</born>
+ <qualification>bossy, crabby and selfish</qualification>
+ </character>
+ </book>
+</library>
diff --git a/test/schemas/vdv-first4_0.xsd b/test/schemas/vdv-first4_0.xsd
new file mode 100644
index 0000000..913a310
--- /dev/null
+++ b/test/schemas/vdv-first4_0.xsd
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Header: /cvs/gnome/gnome-xml/test/schemas/vdv-first4_0.xsd,v 1.1 2003/11/24 13:04:35 veillard Exp $ -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:simpleType name="string255">
+ <xs:restriction base="xs:token">
+ <xs:maxLength value="255"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="string32">
+ <xs:restriction base="xs:token">
+ <xs:maxLength value="32"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="isbn">
+ <xs:restriction base="xs:unsignedLong">
+ <xs:totalDigits value="10"/>
+ <xs:pattern value="\d{10}"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="bookID">
+ <xs:restriction base="xs:ID">
+ <xs:pattern value="b\d{10}"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="supportedLanguages">
+ <xs:restriction base="xs:language">
+ <xs:enumeration value="en"/>
+ <xs:enumeration value="es"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="date">
+ <xs:restriction base="xs:date">
+ <xs:pattern value="[^:Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:element name="name" type="string32"/>
+ <xs:element name="qualification" type="string255"/>
+ <xs:element name="born" type="date"/>
+ <xs:element name="dead" type="date"/>
+ <xs:element name="isbn" type="isbn"/>
+
+ <xs:attribute name="id" type="xs:ID"/>
+ <xs:attribute name="available" type="xs:boolean"/>
+ <xs:attribute name="lang" type="supportedLanguages"/>
+
+ <xs:complexType name="elementWithID">
+ <xs:attribute ref="id"/>
+ </xs:complexType>
+
+ <xs:complexType name="bookTmp">
+ <xs:complexContent>
+ <xs:extension base="elementWithID">
+ <xs:sequence>
+ <xs:element ref="isbn"/>
+ <xs:element ref="title"/>
+ <xs:element ref="author" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element ref="character" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute ref="available"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="personType">
+ <xs:complexContent>
+ <xs:extension base="elementWithID">
+ <xs:sequence>
+ <xs:element ref="name"/>
+ <xs:element ref="born"/>
+ <xs:element ref="dead" minOccurs="0"/>
+ <xs:element ref="qualification" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="title">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="string255">
+ <xs:attribute ref="lang"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="library">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="book" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="book">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="bookTmp">
+ <xs:sequence>
+ <xs:element ref="isbn"/>
+ <xs:element ref="title"/>
+ <xs:element ref="author" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element ref="character" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="id" type="bookID"/>
+ <xs:attribute ref="available"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="author">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="personType">
+ <xs:sequence>
+ <xs:element ref="name"/>
+ <xs:element ref="born"/>
+ <xs:element ref="dead" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute ref="id"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+
+ <xs:element name="character">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="personType">
+ <xs:sequence>
+ <xs:element ref="name"/>
+ <xs:element ref="born"/>
+ <xs:element ref="qualification"/>
+ </xs:sequence>
+ <xs:attribute ref="id"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+</xs:schema>
diff --git a/test/schemas/vdv-first4_1.xml b/test/schemas/vdv-first4_1.xml
new file mode 100644
index 0000000..535b48f
--- /dev/null
+++ b/test/schemas/vdv-first4_1.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Header: /cvs/gnome/gnome-xml/test/schemas/vdv-first4_1.xml,v 1.1 2003/11/24 13:04:35 veillard Exp $ -->
+<library>
+ <book id="b0836217462" available="true">
+ <isbn>0836217462</isbn>
+ <title lang="en">Being a Dog Is a Full-Time Job</title>
+ <author id="CMS">
+ <name>Charles M Schulz</name>
+ <born>1922-11-26</born>
+ <dead>2000-02-12</dead>
+ </author>
+ <character id="PP">
+ <name>Peppermint Patty</name>
+ <born>196T6-08-22</born>
+ <qualification>bold, brash and tomboyish</qualification>
+ </character>
+ <character id="Snoopy">
+ <name>Snoopy</name>
+ <born>1950-10-04</born>
+ <qualification>extroverted beagle</qualification>
+ </character>
+ <character id="Schroeder">
+ <name>Schroeder</name>
+ <born>1951-05-30</born>
+ <qualification>brought classical music to the Peanuts strip</qualification>
+ </character>
+ <character id="Lucy">
+ <name>Lucy</name>
+ <born>1952-03-03</born>
+ <qualification>bossy, crabby and selfish</qualification>
+ </character>
+ </book>
+</library>
diff --git a/test/schemas/vdv-first4_2.xml b/test/schemas/vdv-first4_2.xml
new file mode 100644
index 0000000..29b2c0e
--- /dev/null
+++ b/test/schemas/vdv-first4_2.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Header: /cvs/gnome/gnome-xml/test/schemas/vdv-first4_2.xml,v 1.1 2003/11/24 13:04:35 veillard Exp $ -->
+<library>
+ <book id="b0836217462" available="true">
+ <isbn>0836217462</isbn>
+ <title lang="en">Being a Dog Is a Full-Time Job</title>
+ <author id="CMS">
+ <name>Charles M Schulz</name>
+ <born>1922-11-26</born>
+ <dead>2000-02-12</dead>
+ </author>
+ <character id="PP">
+ <name>Peppermint Patty</name>
+ <born>1966-08-22</born>
+ <qualification>bold, brash and tomboyish</qualification>
+ </character>
+ <character id="Snoopy">
+ <name>Snoopy</name>
+ <born>1950-10-04</born>
+ <qualification>extroverted beagle</qualification>
+ </character>
+ <character id="Schroeder">
+ <name>Schroeder</name>
+ <born>2000-01-20Z</born>
+ <qualification>brought classical music to the Peanuts strip</qualification>
+ </character>
+ <character id="Lucy">
+ <name>Lucy</name>
+ <born>1952-03-03</born>
+ <qualification>bossy, crabby and selfish</qualification>
+ </character>
+ </book>
+</library>
diff --git a/test/schemas/vdv-first5_0.xml b/test/schemas/vdv-first5_0.xml
new file mode 100644
index 0000000..1404219
--- /dev/null
+++ b/test/schemas/vdv-first5_0.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Header: /cvs/gnome/gnome-xml/test/schemas/vdv-first5_0.xml,v 1.1 2003/11/25 15:38:59 veillard Exp $ -->
+<library>
+ <book id="b0836217462" available="true">
+ <isbn>0836217462</isbn>
+ <title lang="en">Being a Dog Is a Full-Time Job</title>
+ <author id="CMS">
+ <name>Charles M Schulz</name>
+ <born>1922-11-26</born>
+ <dead>2000-02-12</dead>
+ </author>
+ <character id="PP">
+ <name>Peppermint Patty</name>
+ <born>1966-08-22</born>
+ <qualification>bold, brash and tomboyish</qualification>
+ </character>
+ <character id="Snoopy">
+ <name>Snoopy</name>
+ <born>1950-10-04</born>
+ <qualification>extroverted beagle</qualification>
+ </character>
+ <character id="Schroeder">
+ <name>Schroeder</name>
+ <born>1951-05-30</born>
+ <qualification>brought classical music to the Peanuts strip</qualification>
+ </character>
+ <character id="Lucy">
+ <name>Lucy</name>
+ <born>1952-03-03</born>
+ <qualification>bossy, crabby and selfish</qualification>
+ </character>
+ </book>
+</library>
diff --git a/test/schemas/vdv-first5_0.xsd b/test/schemas/vdv-first5_0.xsd
new file mode 100644
index 0000000..bb9b7ef
--- /dev/null
+++ b/test/schemas/vdv-first5_0.xsd
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Header: /cvs/gnome/gnome-xml/test/schemas/vdv-first5_0.xsd,v 1.1 2003/11/25 15:38:59 veillard Exp $ -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+<xs:include schemaLocation="vdv-simpleTypes.xsd"/>
+<xs:include schemaLocation="vdv-complexTypes.xsd"/>
+
+ <xs:element name="name" type="string32"/>
+ <xs:element name="qualification" type="string255"/>
+ <xs:element name="born" type="date"/>
+ <xs:element name="dead" type="date"/>
+ <xs:element name="isbn" type="isbn"/>
+
+ <xs:attribute name="id" type="xs:ID"/>
+ <xs:attribute name="available" type="xs:boolean"/>
+ <xs:attribute name="lang" type="supportedLanguages"/>
+
+
+ <xs:element name="title">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="string255">
+ <xs:attribute ref="lang"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="library">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="book" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="book">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="bookTmp">
+ <xs:sequence>
+ <xs:element ref="isbn"/>
+ <xs:element ref="title"/>
+ <xs:element ref="author" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element ref="character" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="id" type="bookID"/>
+ <xs:attribute ref="available"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="author">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="personType">
+ <xs:sequence>
+ <xs:element ref="name"/>
+ <xs:element ref="born"/>
+ <xs:element ref="dead" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute ref="id"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+
+ <xs:element name="character">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="personType">
+ <xs:sequence>
+ <xs:element ref="name"/>
+ <xs:element ref="born"/>
+ <xs:element ref="qualification"/>
+ </xs:sequence>
+ <xs:attribute ref="id"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+</xs:schema>
diff --git a/test/schemas/vdv-simpleTypes.xsd b/test/schemas/vdv-simpleTypes.xsd
new file mode 100644
index 0000000..68f7c82
--- /dev/null
+++ b/test/schemas/vdv-simpleTypes.xsd
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Header: /cvs/gnome/gnome-xml/test/schemas/vdv-simpleTypes.xsd,v 1.1 2003/11/25 15:38:59 veillard Exp $ -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:simpleType name="string255">
+ <xs:restriction base="xs:token">
+ <xs:maxLength value="255"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="string32">
+ <xs:restriction base="xs:token">
+ <xs:maxLength value="32"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="isbn">
+ <xs:restriction base="xs:unsignedLong">
+ <xs:totalDigits value="10"/>
+ <xs:pattern value="\d{10}"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="bookID">
+ <xs:restriction base="xs:ID">
+ <xs:pattern value="b\d{10}"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="supportedLanguages">
+ <xs:restriction base="xs:language">
+ <xs:enumeration value="en"/>
+ <xs:enumeration value="es"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="date">
+ <xs:restriction base="xs:date">
+ <xs:pattern value="[^:Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+</xs:schema>