diff options
Diffstat (limited to 'tests/schema')
23 files changed, 1008 insertions, 0 deletions
diff --git a/tests/schema/annotation/makefile b/tests/schema/annotation/makefile new file mode 100644 index 0000000..2af53d6 --- /dev/null +++ b/tests/schema/annotation/makefile @@ -0,0 +1,45 @@ +# file : tests/schema/annotation/makefile +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2006-2009 Code Synthesis Tools CC +# license : GNU GPL v2 + exceptions; see accompanying LICENSE file + +include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make + +tests := 000 001 + +driver := $(out_root)/tests/dump/driver +test := $(out_base)/.test +clean := $(out_base)/.clean + + +# Convenience alias for default target. +# +.PHONY: $(out_base)/ +$(out_base)/: $(driver) + + +# Test. +# +test_targets := $(addprefix $(out_base)/.test-,$(tests)) + +.PHONY: $(test) + +$(test): $(test_targets) + +$(test_targets): driver := $(driver) + +.PHONY: $(out_base)/.test-% +$(out_base)/.test-%: $(driver) $(src_base)/test-%.xsd $(src_base)/test-%.std + $(call message,test $(out_base)/$*,$(driver) $(src_base)/test-$*.xsd | diff -u $(src_base)/test-$*.std -) + + +# Clean. +# +.PHONY: $(clean) + +$(clean): + + +# Dependencies. +# +$(call import,$(src_root)/tests/dump/makefile) diff --git a/tests/schema/annotation/test-000.std b/tests/schema/annotation/test-000.std new file mode 100644 index 0000000..ed7f1e1 --- /dev/null +++ b/tests/schema/annotation/test-000.std @@ -0,0 +1,67 @@ +<schema documentation> +primary +{ + namespace test + { + <list type documentation> + list list http://www.w3.org/2001/XMLSchema#string + <union type documentation> + union union + <enumeration type documentation> + enumeration enum: http://www.w3.org/2001/XMLSchema#string + { + <enumerator documentation (male)> + enumerator male + <enumerator documentation (female)> + enumerator female + } + <complex type documentation> + complex type + { + <local element efoo documentation> + element efoo + <local element ebar documentation> + element ebar + <local element ebaz documentation> + element ebaz + <any documentation> + any 'any #0' + <local attribute afoo documentation> + optional attribute afoo http://www.w3.org/2001/XMLSchema#string + <local attribute abar documentation> + optional attribute abar + { + <list type documentation> + list <anonymous> http://www.w3.org/2001/XMLSchema#string + } + <local attribute abaz documentation> + optional attribute abaz http://www.w3.org/2001/XMLSchema#string + <anyAttribute documentation> + any-attribute 'any-attribute #0' + [1, 1] sequence + { + [1, 1] element efoo http://www.w3.org/2001/XMLSchema#string + [1, 1] element ebar + { + complex <anonymous> + { + <nested local element efoo documentation> + element efoo + <nested local attribute afoo documentation> + optional attribute afoo http://www.w3.org/2001/XMLSchema#string + [1, 1] sequence + { + [1, 1] element efoo http://www.w3.org/2001/XMLSchema#string + } + } + } + [1, 1] element ebaz http://www.w3.org/2001/XMLSchema#string + [1, 1] any 'any #0' + } + } + <global element documentation> + element ebaz http://www.w3.org/2001/XMLSchema#string + <global attribute documentation> + attribute abaz http://www.w3.org/2001/XMLSchema#string + } +} diff --git a/tests/schema/annotation/test-000.xsd b/tests/schema/annotation/test-000.xsd new file mode 100644 index 0000000..f768b45 --- /dev/null +++ b/tests/schema/annotation/test-000.xsd @@ -0,0 +1,120 @@ +<?xml version="1.0"?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test"> + + <annotation> + <documentation>schema documentation</documentation> + </annotation> + + <simpleType name="list"> + <annotation> + <documentation>list type documentation</documentation> + </annotation> + <list itemType="string"/> + </simpleType> + + <simpleType name="union"> + <annotation> + <documentation>union type documentation</documentation> + </annotation> + <union memberTypes="int string"/> + </simpleType> + + <simpleType name="enum"> + <annotation> + <documentation>enumeration type documentation</documentation> + </annotation> + <restriction base="string"> + <enumeration value="male"> + <annotation> + <documentation>enumerator documentation (male)</documentation> + </annotation> + </enumeration> + <enumeration value="female"> + <annotation> + <documentation>enumerator documentation (female)</documentation> + </annotation> + </enumeration> + </restriction> + </simpleType> + + <complexType name="type"> + <annotation> + <documentation>complex type documentation</documentation> + </annotation> + <sequence> + <element name="efoo" type="string"> + <annotation> + <documentation>local element efoo documentation</documentation> + </annotation> + </element> + <element name="ebar"> + <annotation> + <documentation>local element ebar documentation</documentation> + </annotation> + <complexType> + <sequence> + <element name="efoo" type="string"> + <annotation> + <documentation>nested local element efoo documentation</documentation> + </annotation> + </element> + </sequence> + <attribute name="afoo" type="string"> + <annotation> + <documentation>nested local attribute afoo documentation</documentation> + </annotation> + </attribute> + </complexType> + </element> + <element ref="t:ebaz"> + <annotation> + <documentation>local element ebaz documentation</documentation> + </annotation> + </element> + <any namespace="##other"> + <annotation> + <documentation>any documentation</documentation> + </annotation> + </any> + </sequence> + <attribute name="afoo" type="string"> + <annotation> + <documentation>local attribute afoo documentation</documentation> + </annotation> + </attribute> + <attribute name="abar"> + <annotation> + <documentation>local attribute abar documentation</documentation> + </annotation> + <simpleType> + <annotation> + <documentation>list type documentation</documentation> + </annotation> + <list itemType="string"/> + </simpleType> + </attribute> + <attribute ref="t:abaz"> + <annotation> + <documentation>local attribute abaz documentation</documentation> + </annotation> + </attribute> + <anyAttribute namespace="##other"> + <annotation> + <documentation>anyAttribute documentation</documentation> + </annotation> + </anyAttribute> + </complexType> + + <element name="ebaz" type="string"> + <annotation> + <documentation>global element documentation</documentation> + </annotation> + </element> + + <attribute name="abaz" type="string"> + <annotation> + <documentation>global attribute documentation</documentation> + </annotation> + </attribute> + +</schema> diff --git a/tests/schema/annotation/test-001.std b/tests/schema/annotation/test-001.std new file mode 100644 index 0000000..9e2c99a --- /dev/null +++ b/tests/schema/annotation/test-001.std @@ -0,0 +1,36 @@ +primary +{ + namespace test + { + complex type + { + <global element ebar documentation> + element ebar + <group element efoo documentation> + element efoo + <global element ebar documentation> + element ebar + <global attribute abar documentation> + optional attribute abar http://www.w3.org/2001/XMLSchema#string + <group attribute afoo documentation> + optional attribute afoo http://www.w3.org/2001/XMLSchema#string + <global attribute abaz documentation> + optional attribute abaz http://www.w3.org/2001/XMLSchema#string + [1, 1] sequence + { + [1, 1] element ebar http://www.w3.org/2001/XMLSchema#string + [1, 1] choice + { + [1, 1] element efoo http://www.w3.org/2001/XMLSchema#string + [1, 1] element ebar http://www.w3.org/2001/XMLSchema#string + } + } + } + <global element ebar documentation> + element ebar http://www.w3.org/2001/XMLSchema#string + <global attribute abar documentation> + attribute abar http://www.w3.org/2001/XMLSchema#string + <global attribute abaz documentation> + attribute abaz http://www.w3.org/2001/XMLSchema#string + } +} diff --git a/tests/schema/annotation/test-001.xsd b/tests/schema/annotation/test-001.xsd new file mode 100644 index 0000000..286f63a --- /dev/null +++ b/tests/schema/annotation/test-001.xsd @@ -0,0 +1,53 @@ +<?xml version="1.0"?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test"> + + <!-- Test various ref constructs. --> + + <complexType name="type"> + <sequence> + <element ref="t:ebar"/> + <group ref="t:eg"/> + </sequence> + <attribute ref="t:abar"/> + <attributeGroup ref="t:ag"/> + </complexType> + + <group name="eg"> + <choice> + <element name="efoo" type="string"> + <annotation> + <documentation>group element efoo documentation</documentation> + </annotation> + </element> + <element ref="t:ebar"/> + </choice> + </group> + + <element name="ebar" type="string"> + <annotation> + <documentation>global element ebar documentation</documentation> + </annotation> + </element> + + <attributeGroup name="ag"> + <attribute name="afoo" type="string"> + <annotation> + <documentation>group attribute afoo documentation</documentation> + </annotation> + </attribute> + <attribute ref="t:abaz"/> + </attributeGroup> + + <attribute name="abar" type="string"> + <annotation> + <documentation>global attribute abar documentation</documentation> + </annotation> + </attribute> + + <attribute name="abaz" type="string"> + <annotation> + <documentation>global attribute abaz documentation</documentation> + </annotation> + </attribute> + +</schema> diff --git a/tests/schema/anonymous/makefile b/tests/schema/anonymous/makefile new file mode 100644 index 0000000..2140789 --- /dev/null +++ b/tests/schema/anonymous/makefile @@ -0,0 +1,45 @@ +# file : tests/schema/annotation/makefile +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2006-2009 Code Synthesis Tools CC +# license : GNU GPL v2 + exceptions; see accompanying LICENSE file + +include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make + +tests := 000 001 + +driver := $(out_root)/tests/dump/driver +test := $(out_base)/.test +clean := $(out_base)/.clean + + +# Convenience alias for default target. +# +.PHONY: $(out_base)/ +$(out_base)/: $(driver) + + +# Test. +# +test_targets := $(addprefix $(out_base)/.test-,$(tests)) + +.PHONY: $(test) + +$(test): $(test_targets) + +$(test_targets): driver := $(driver) + +.PHONY: $(out_base)/.test-% +$(out_base)/.test-%: $(driver) $(src_base)/test-%.xsd $(src_base)/test-%.std + $(call message,test $(out_base)/$*,$(driver) --anonymous $(src_base)/test-$*.xsd | diff -u $(src_base)/test-$*.std -) + + +# Clean. +# +.PHONY: $(clean) + +$(clean): + + +# Dependencies. +# +$(call import,$(src_root)/tests/dump/makefile) diff --git a/tests/schema/anonymous/test-000.std b/tests/schema/anonymous/test-000.std new file mode 100644 index 0000000..7acb22b --- /dev/null +++ b/tests/schema/anonymous/test-000.std @@ -0,0 +1,30 @@ +anonymous: test anon_item anon +anonymous: test anon_nested_item anon_nested +anonymous: test anon_nested_item_base anon_nested_item +primary +{ + namespace test + { + list named http://www.w3.org/2001/XMLSchema#string + enumeration anon_item: http://www.w3.org/2001/XMLSchema#string + { + enumerator male + enumerator female + } + list anon test#anon_item1 + list anon_nested test#anon_nested_item + enumeration anon_item1: http://www.w3.org/2001/XMLSchema#string + { + enumerator male + enumerator female + } + enumeration anon_nested_item: test#anon_nested_item_base + { + enumerator male + enumerator female + } + complex anon_nested_item_base: http://www.w3.org/2001/XMLSchema#string + { + } + } +} diff --git a/tests/schema/anonymous/test-000.xsd b/tests/schema/anonymous/test-000.xsd new file mode 100644 index 0000000..ece8f4a --- /dev/null +++ b/tests/schema/anonymous/test-000.xsd @@ -0,0 +1,42 @@ +<?xml version="1.0"?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test"> + + <simpleType name="named"> + <list itemType="string"/> + </simpleType> + + <simpleType name="anon_item"> + <restriction base="string"> + <enumeration value="male"/> + <enumeration value="female"/> + </restriction> + </simpleType> + + <simpleType name="anon"> + <list> + <simpleType> + <restriction base="string"> + <enumeration value="male"/> + <enumeration value="female"/> + </restriction> + </simpleType> + </list> + </simpleType> + + <simpleType name="anon_nested"> + <list> + <simpleType> + <restriction> + <simpleType> + <restriction base="string"> + <maxLength value="20"/> + </restriction> + </simpleType> + <enumeration value="male"/> + <enumeration value="female"/> + </restriction> + </simpleType> + </list> + </simpleType> + +</schema> diff --git a/tests/schema/anonymous/test-001.std b/tests/schema/anonymous/test-001.std new file mode 100644 index 0000000..11a2aed --- /dev/null +++ b/tests/schema/anonymous/test-001.std @@ -0,0 +1,38 @@ +anonymous: test anon_base anon +anonymous: test anon_nested_base anon_nested +anonymous: test anon_nested_base_base anon_nested_base +primary +{ + namespace test + { + enumeration named: http://www.w3.org/2001/XMLSchema#string + { + enumerator male + enumerator female + } + enumeration anon_base: http://www.w3.org/2001/XMLSchema#string + { + enumerator male + enumerator female + } + enumeration anon: test#anon_base1 + { + enumerator male + enumerator female + } + enumeration anon_nested: test#anon_nested_base + { + enumerator male + enumerator female + } + complex anon_base1: http://www.w3.org/2001/XMLSchema#string + { + } + complex anon_nested_base: test#anon_nested_base_base + { + } + complex anon_nested_base_base: http://www.w3.org/2001/XMLSchema#string + { + } + } +} diff --git a/tests/schema/anonymous/test-001.xsd b/tests/schema/anonymous/test-001.xsd new file mode 100644 index 0000000..4a8414f --- /dev/null +++ b/tests/schema/anonymous/test-001.xsd @@ -0,0 +1,47 @@ +<?xml version="1.0"?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test"> + + <simpleType name="named"> + <restriction base="string"> + <enumeration value="male"/> + <enumeration value="female"/> + </restriction> + </simpleType> + + <simpleType name="anon_base"> + <restriction base="string"> + <enumeration value="male"/> + <enumeration value="female"/> + </restriction> + </simpleType> + + <simpleType name="anon"> + <restriction> + <simpleType> + <restriction base="string"> + <maxLength value="20"/> + </restriction> + </simpleType> + <enumeration value="male"/> + <enumeration value="female"/> + </restriction> + </simpleType> + + <simpleType name="anon_nested"> + <restriction> + <simpleType> + <restriction> + <simpleType> + <restriction base="string"> + <maxLength value="40"/> + </restriction> + </simpleType> + <maxLength value="20"/> + </restriction> + </simpleType> + <enumeration value="male"/> + <enumeration value="female"/> + </restriction> + </simpleType> + +</schema> diff --git a/tests/schema/attribute-group/makefile b/tests/schema/attribute-group/makefile new file mode 100644 index 0000000..0e4d5ed --- /dev/null +++ b/tests/schema/attribute-group/makefile @@ -0,0 +1,46 @@ +# file : tests/schema/attribute-group/makefile +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2006-2009 Code Synthesis Tools CC +# license : GNU GPL v2 + exceptions; see accompanying LICENSE file + +include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make + +tests := 000 001 + +driver := $(out_root)/tests/dump/driver +test := $(out_base)/.test +clean := $(out_base)/.clean + + +# Convenience alias for default target. +# +.PHONY: $(out_base)/ +$(out_base)/: $(driver) + + +# Test. +# +test_targets := $(addprefix $(out_base)/.test-,$(tests)) + +.PHONY: $(test) + +$(test): $(test_targets) + +$(test_targets): driver := $(driver) + +.PHONY: $(out_base)/.test-% +$(out_base)/.test-%: $(driver) $(src_base)/test-%.xsd $(src_base)/test-%.std + $(call message,test $(out_base)/$*,$(driver) $(src_base)/test-$*.xsd | diff -u $(src_base)/test-$*.std -) + + + +# Clean. +# +.PHONY: $(clean) + +$(clean): + + +# Dependencies. +# +$(call import,$(src_root)/tests/dump/makefile) diff --git a/tests/schema/attribute-group/test-000.std b/tests/schema/attribute-group/test-000.std new file mode 100644 index 0000000..61ad802 --- /dev/null +++ b/tests/schema/attribute-group/test-000.std @@ -0,0 +1,17 @@ +primary +{ + namespace test + { + complex type + { + optional attribute foo2 http://www.w3.org/2001/XMLSchema#string + required attribute bar2 http://www.w3.org/2001/XMLSchema#string + optional attribute foo3 http://www.w3.org/2001/XMLSchema#string + required attribute bar3 http://www.w3.org/2001/XMLSchema#string + } + attribute foo2 http://www.w3.org/2001/XMLSchema#string + attribute bar2 http://www.w3.org/2001/XMLSchema#string + attribute foo3 http://www.w3.org/2001/XMLSchema#string + attribute bar3 http://www.w3.org/2001/XMLSchema#string + } +} diff --git a/tests/schema/attribute-group/test-000.xsd b/tests/schema/attribute-group/test-000.xsd new file mode 100644 index 0000000..9087a2b --- /dev/null +++ b/tests/schema/attribute-group/test-000.xsd @@ -0,0 +1,31 @@ +<?xml version="1.0"?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test"> + + <!-- Multiple levels of forward reference. --> + + <complexType name="type"> + <attributeGroup ref="t:g1"/> + </complexType> + + <attributeGroup name="g1"> + <attributeGroup ref="t:g2"/> + <attributeGroup ref="t:g3"/> + </attributeGroup> + + <attributeGroup name="g2"> + <attribute ref="t:foo2"/> + <attribute ref="t:bar2" use="required"/> + </attributeGroup> + + <attributeGroup name="g3"> + <attribute ref="t:foo3"/> + <attribute ref="t:bar3" use="required"/> + </attributeGroup> + + <attribute name="foo2" type="string"/> + <attribute name="bar2" type="string"/> + + <attribute name="foo3" type="string"/> + <attribute name="bar3" type="string"/> + +</schema> diff --git a/tests/schema/attribute-group/test-001.std b/tests/schema/attribute-group/test-001.std new file mode 100644 index 0000000..54a1e96 --- /dev/null +++ b/tests/schema/attribute-group/test-001.std @@ -0,0 +1,12 @@ +primary +{ + namespace test + { + complex type + { + any-attribute 'any-attribute #1' + optional attribute foo http://www.w3.org/2001/XMLSchema#string + any-attribute 'any-attribute #0' + } + } +} diff --git a/tests/schema/attribute-group/test-001.xsd b/tests/schema/attribute-group/test-001.xsd new file mode 100644 index 0000000..dc44a70 --- /dev/null +++ b/tests/schema/attribute-group/test-001.xsd @@ -0,0 +1,20 @@ +<?xml version="1.0"?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test"> + + <!-- AnyAttribute in attribute groups. --> + + <complexType name="type"> + <attributeGroup ref="t:g1"/> + <attributeGroup ref="t:g2"/> + </complexType> + + <attributeGroup name="g1"> + <anyAttribute namespace="http://www.foo.com"/> + </attributeGroup> + + <attributeGroup name="g2"> + <attribute name="foo" type="string"/> + <anyAttribute namespace="http://www.bar.com"/> + </attributeGroup> + +</schema> diff --git a/tests/schema/element-group/makefile b/tests/schema/element-group/makefile new file mode 100644 index 0000000..f3d3b41 --- /dev/null +++ b/tests/schema/element-group/makefile @@ -0,0 +1,45 @@ +# file : tests/schema/element-group/makefile +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2006-2009 Code Synthesis Tools CC +# license : GNU GPL v2 + exceptions; see accompanying LICENSE file + +include $(dir $(lastword $(MAKEFILE_LIST)))../../../build/bootstrap.make + +tests := 000 001 002 + +driver := $(out_root)/tests/dump/driver +test := $(out_base)/.test +clean := $(out_base)/.clean + + +# Convenience alias for default target. +# +.PHONY: $(out_base)/ +$(out_base)/: $(driver) + + +# Test. +# +test_targets := $(addprefix $(out_base)/.test-,$(tests)) + +.PHONY: $(test) + +$(test): $(test_targets) + +$(test_targets): driver := $(driver) + +.PHONY: $(out_base)/.test-% +$(out_base)/.test-%: $(driver) $(src_base)/test-%.xsd $(src_base)/test-%.std + $(call message,test $(out_base)/$*,$(driver) $(src_base)/test-$*.xsd | diff -u $(src_base)/test-$*.std -) + + +# Clean. +# +.PHONY: $(clean) + +$(clean): + + +# Dependencies. +# +$(call import,$(src_root)/tests/dump/makefile) diff --git a/tests/schema/element-group/test-000.std b/tests/schema/element-group/test-000.std new file mode 100644 index 0000000..1652b68 --- /dev/null +++ b/tests/schema/element-group/test-000.std @@ -0,0 +1,33 @@ +primary +{ + namespace test + { + complex type + { + element foo2 + element bar2 + element foo3 + element bar3 + [1, 1] sequence + { + [0, unbounded] choice + { + [0, 1] choice + { + [1, 1] element foo2 http://www.w3.org/2001/XMLSchema#string + [0, 1] element bar2 http://www.w3.org/2001/XMLSchema#string + } + [1, unbounded] choice + { + [1, unbounded] element foo3 http://www.w3.org/2001/XMLSchema#string + [0, unbounded] element bar3 http://www.w3.org/2001/XMLSchema#string + } + } + } + } + element foo2 http://www.w3.org/2001/XMLSchema#string + element bar2 http://www.w3.org/2001/XMLSchema#string + element foo3 http://www.w3.org/2001/XMLSchema#string + element bar3 http://www.w3.org/2001/XMLSchema#string + } +} diff --git a/tests/schema/element-group/test-000.xsd b/tests/schema/element-group/test-000.xsd new file mode 100644 index 0000000..1864b28 --- /dev/null +++ b/tests/schema/element-group/test-000.xsd @@ -0,0 +1,39 @@ +<?xml version="1.0"?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test"> + + <!-- Multiple levels of forward reference. --> + + <complexType name="type"> + <sequence> + <group ref="t:g1" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + </complexType> + + <group name="g1"> + <choice> + <group ref="t:g2" minOccurs="0"/> + <group ref="t:g3" maxOccurs="unbounded"/> + </choice> + </group> + + <group name="g2"> + <choice> + <element ref="t:foo2"/> + <element ref="t:bar2" minOccurs="0"/> + </choice> + </group> + + <group name="g3"> + <choice> + <element ref="t:foo3" maxOccurs="unbounded"/> + <element ref="t:bar3" minOccurs="0" maxOccurs="unbounded"/> + </choice> + </group> + + <element name="foo2" type="string"/> + <element name="bar2" type="string"/> + + <element name="foo3" type="string"/> + <element name="bar3" type="string"/> + +</schema> diff --git a/tests/schema/element-group/test-001.std b/tests/schema/element-group/test-001.std new file mode 100644 index 0000000..ae8c1fc --- /dev/null +++ b/tests/schema/element-group/test-001.std @@ -0,0 +1,137 @@ +primary +{ + namespace test + { + complex type + { + element foo + element bar + [1, 1] sequence + { + [1, 1] choice + { + [1, 1] element foo + { + complex <anonymous> + { + element foo + element bar + [1, 1] sequence + { + [1, 1] choice + { + [1, 1] element foo + { + complex <recursive-anonymous> + } + [1, 1] element bar + { + complex <anonymous> + { + element foo + element bar + [1, 1] sequence + { + [1, 1] choice + { + [1, 1] element foo + { + complex <recursive-anonymous> + } + [1, 1] element bar + { + complex <recursive-anonymous> + } + } + } + } + } + } + } + } + } + [1, 1] element bar + { + complex <anonymous> + { + element foo + element bar + [1, 1] sequence + { + [1, 1] choice + { + [1, 1] element foo + { + complex <anonymous> + { + element foo + element bar + [1, 1] sequence + { + [1, 1] choice + { + [1, 1] element foo + { + complex <recursive-anonymous> + } + [1, 1] element bar + { + complex <recursive-anonymous> + } + } + } + } + } + [1, 1] element bar + { + complex <recursive-anonymous> + } + } + } + } + } + } + } + } + element bar + { + complex <anonymous> + { + element foo + element bar + [1, 1] sequence + { + [1, 1] choice + { + [1, 1] element foo + { + complex <anonymous> + { + element foo + element bar + [1, 1] sequence + { + [1, 1] choice + { + [1, 1] element foo + { + complex <recursive-anonymous> + } + [1, 1] element bar + { + complex <recursive-anonymous> + } + } + } + } + } + [1, 1] element bar + { + complex <recursive-anonymous> + } + } + } + } + } + } +} diff --git a/tests/schema/element-group/test-001.xsd b/tests/schema/element-group/test-001.xsd new file mode 100644 index 0000000..c6059af --- /dev/null +++ b/tests/schema/element-group/test-001.xsd @@ -0,0 +1,33 @@ +<?xml version="1.0"?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test"> + + <!-- Recursive reference: g1->element->type->g1 --> + + <complexType name="type"> + <sequence> + <group ref="t:g1"/> + </sequence> + </complexType> + + <group name="g1"> + <choice> + <element name="foo"> + <complexType> + <sequence> + <group ref="t:g1"/> + </sequence> + </complexType> + </element> + <element ref="t:bar"/> + </choice> + </group> + + <element name="bar"> + <complexType> + <sequence> + <group ref="t:g1"/> + </sequence> + </complexType> + </element> + +</schema> diff --git a/tests/schema/element-group/test-002.std b/tests/schema/element-group/test-002.std new file mode 100644 index 0000000..d2c60fe --- /dev/null +++ b/tests/schema/element-group/test-002.std @@ -0,0 +1,24 @@ +primary +{ + namespace test + { + complex type + { + any 'any #1' + element foo + any 'any #0' + [1, 1] sequence + { + [0, unbounded] sequence + { + [1, 1] any 'any #1' + } + [0, unbounded] sequence + { + [1, 1] element foo http://www.w3.org/2001/XMLSchema#int + [1, 1] any 'any #0' + } + } + } + } +} diff --git a/tests/schema/element-group/test-002.xsd b/tests/schema/element-group/test-002.xsd new file mode 100644 index 0000000..bc1bd70 --- /dev/null +++ b/tests/schema/element-group/test-002.xsd @@ -0,0 +1,26 @@ +<?xml version="1.0"?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:t="test" targetNamespace="test"> + + <!-- Any in groups. --> + + <complexType name="type"> + <sequence> + <group ref="t:g1" minOccurs="0" maxOccurs="unbounded"/> + <group ref="t:g2" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + </complexType> + + <group name="g1"> + <sequence> + <any namespace="http://www.foo.com"/> + </sequence> + </group> + + <group name="g2"> + <sequence> + <element name="foo" type="int"/> + <any namespace="http://www.bar.com"/> + </sequence> + </group> + +</schema> diff --git a/tests/schema/makefile b/tests/schema/makefile new file mode 100644 index 0000000..3023cab --- /dev/null +++ b/tests/schema/makefile @@ -0,0 +1,22 @@ +# file : tests/schema +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2006-2009 Code Synthesis Tools CC +# license : GNU GPL v2 + exceptions; see accompanying LICENSE file + +include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make + + +tests := annotation anonymous attribute-group element-group + + +default := $(out_base)/ +test := $(out_base)/.test +clean := $(out_base)/.clean + +.PHONY: $(default) $(test) $(clean) + +$(default): $(addprefix $(out_base)/,$(addsuffix /,$(tests))) +$(test): $(addprefix $(out_base)/,$(addsuffix /.test,$(tests))) +$(clean): $(addprefix $(out_base)/,$(addsuffix /.clean,$(tests))) + +$(foreach t,$(tests),$(call import,$(src_base)/$t/makefile)) |