diff options
Diffstat (limited to 'xsd/tests/cxx/tree/prefix')
| -rw-r--r-- | xsd/tests/cxx/tree/prefix/bar.xsd | 34 | ||||
| -rw-r--r-- | xsd/tests/cxx/tree/prefix/driver.cxx | 36 | ||||
| -rw-r--r-- | xsd/tests/cxx/tree/prefix/foo.xsd | 16 | ||||
| -rw-r--r-- | xsd/tests/cxx/tree/prefix/makefile | 83 | ||||
| -rw-r--r-- | xsd/tests/cxx/tree/prefix/output | 22 | ||||
| -rw-r--r-- | xsd/tests/cxx/tree/prefix/test.xml | 19 | ||||
| -rw-r--r-- | xsd/tests/cxx/tree/prefix/test.xsd | 40 | 
7 files changed, 250 insertions, 0 deletions
diff --git a/xsd/tests/cxx/tree/prefix/bar.xsd b/xsd/tests/cxx/tree/prefix/bar.xsd new file mode 100644 index 0000000..4e20902 --- /dev/null +++ b/xsd/tests/cxx/tree/prefix/bar.xsd @@ -0,0 +1,34 @@ +<?xml version="1.0"?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" +        xmlns:f="foo" +        xmlns:b="bar" +	targetNamespace="bar" +	attributeFormDefault="qualified"> + +  <import namespace="foo" schemaLocation="foo.xsd"/> + +  <attribute name="abar" type="int"/> + +  <complexType name="derived1"> +    <complexContent> +      <extension base="f:base"> +        <sequence> +          <element name="y" type="int"/> +        </sequence> +      </extension> +    </complexContent> +  </complexType> + +  <complexType name="derived2"> +    <complexContent> +      <extension base="f:base"> +        <sequence> +          <element name="z" type="int"/> +        </sequence> +      </extension> +    </complexContent> +  </complexType> + +  <element name="derived" type="b:derived1" substitutionGroup="f:base"/> + +</schema> diff --git a/xsd/tests/cxx/tree/prefix/driver.cxx b/xsd/tests/cxx/tree/prefix/driver.cxx new file mode 100644 index 0000000..3ce9832 --- /dev/null +++ b/xsd/tests/cxx/tree/prefix/driver.cxx @@ -0,0 +1,36 @@ +// file      : tests/cxx/tree/prefix/driver.cxx +// author    : Boris Kolpackov <boris@codesynthesis.com> +// copyright : Copyright (c) 2006-2010 Code Synthesis Tools CC +// license   : GNU GPL v2 + exceptions; see accompanying LICENSE file + +// Test automatic prefix assignment. +// + +#include <memory> // std::auto_ptr +#include <iostream> + +#include "test.hxx" + +using namespace std; +using namespace test; + +int +main (int argc, char* argv[]) +{ +  if (argc != 2) +  { +    cerr << "usage: " << argv[0] << " test.xml" << endl; +    return 1; +  } + +  try +  { +    auto_ptr<type> r (root (argv[1])); +    root (std::cout, *r); +  } +  catch (xml_schema::exception const& e) +  { +    cerr << e << endl; +    return 1; +  } +} diff --git a/xsd/tests/cxx/tree/prefix/foo.xsd b/xsd/tests/cxx/tree/prefix/foo.xsd new file mode 100644 index 0000000..97a35cf --- /dev/null +++ b/xsd/tests/cxx/tree/prefix/foo.xsd @@ -0,0 +1,16 @@ +<?xml version="1.0"?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" +        xmlns:f="foo" +	targetNamespace="foo"> + +  <element name="efoo" type="int"/> + +  <complexType name="base"> +    <sequence> +      <element name="x" type="int"/> +    </sequence> +  </complexType> + +  <element name="base" type="f:base"/> + +</schema> diff --git a/xsd/tests/cxx/tree/prefix/makefile b/xsd/tests/cxx/tree/prefix/makefile new file mode 100644 index 0000000..3317161 --- /dev/null +++ b/xsd/tests/cxx/tree/prefix/makefile @@ -0,0 +1,83 @@ +# file      : tests/cxx/tree/prefix/makefile +# author    : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2006-2010 Code Synthesis Tools CC +# license   : GNU GPL v2 + exceptions; see accompanying LICENSE file + +include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make + +xsd := test.xsd foo.xsd bar.xsd +cxx := driver.cxx + +obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=.o)) +dep := $(obj:.o=.o.d) + +driver := $(out_base)/driver +test   := $(out_base)/.test +clean  := $(out_base)/.clean + + +# Import. +# +$(call import,\ +  $(scf_root)/import/libxerces-c/stub.make,\ +  l: xerces_c.l,cpp-options: xerces_c.l.cpp-options) + + +# Build. +# +$(driver): $(obj) $(xerces_c.l) + +$(obj) $(dep): cpp_options := -I$(src_root)/libxsd +$(obj) $(dep): $(xerces_c.l.cpp-options) + +genf := $(xsd:.xsd=.hxx) $(xsd:.xsd=.ixx) $(xsd:.xsd=.cxx) +gen  := $(addprefix $(out_base)/,$(genf)) + +$(gen): xsd := $(out_root)/xsd/xsd +$(gen): xsd_options := --generate-serialization --generate-polymorphic \ +--polymorphic-type foo\\\#base --root-element root +$(gen): $(out_root)/xsd/xsd + +$(call include-dep,$(dep)) + +# Convenience alias for default target. +# +$(out_base)/: $(driver) + + +# Test. +# +$(test): driver := $(driver) +$(test): $(driver) $(src_base)/test.xml $(src_base)/output +	$(call message,test $$1,$$1 $(src_base)/test.xml | diff -u $(src_base)/output -,$(driver)) + +# Clean. +# +$(clean): $(driver).o.clean                                \ +  $(addsuffix .cxx.clean,$(obj))                           \ +  $(addsuffix .cxx.clean,$(dep))                           \ +  $(addprefix $(out_base)/,$(xsd:.xsd=.cxx.xsd.clean)) + +# Generated .gitignore. +# +ifeq ($(out_base),$(src_base)) +$(gen): | $(out_base)/.gitignore +$(driver): | $(out_base)/.gitignore + +$(out_base)/.gitignore: files := driver $(genf) +$(clean): $(out_base)/.gitignore.clean + +$(call include,$(bld_root)/git/gitignore.make) +endif + +# How to. +# +$(call include,$(bld_root)/cxx/o-e.make) +$(call include,$(bld_root)/cxx/cxx-o.make) +$(call include,$(bld_root)/cxx/cxx-d.make) +$(call include,$(scf_root)/xsd/tree/xsd-cxx.make) + + +# Dependencies. +# +$(call import,$(src_root)/xsd/makefile) diff --git a/xsd/tests/cxx/tree/prefix/output b/xsd/tests/cxx/tree/prefix/output new file mode 100644 index 0000000..4f40f49 --- /dev/null +++ b/xsd/tests/cxx/tree/prefix/output @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no" ?> +<p1:root xmlns:p1="test"> + +  <a xmlns:p3="bar" p3:abar="456" xmlns:p2="foo"> +    <p2:efoo>123</p2:efoo> +  </a> + +  <b xmlns:p2="bar"> +    <p2:derived> +      <x>1</x> +      <y>2</y> +    </p2:derived> +  </b> + +  <c xmlns:p2="foo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> +    <p2:base xmlns:p3="bar" xsi:type="p3:derived2"> +      <x>1</x> +      <z>2</z> +    </p2:base> +  </c> + +</p1:root> diff --git a/xsd/tests/cxx/tree/prefix/test.xml b/xsd/tests/cxx/tree/prefix/test.xml new file mode 100644 index 0000000..b6d0dd6 --- /dev/null +++ b/xsd/tests/cxx/tree/prefix/test.xml @@ -0,0 +1,19 @@ +<t:root xmlns:t="test" +        xmlns:f="foo" +	xmlns:b="bar" +        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +        xsi:schemaLocation="test test.xsd"> + +  <a b:abar="456"> +    <f:efoo>123</f:efoo> +  </a> + +  <b> +    <b:derived><x>1</x><y>2</y></b:derived> +  </b> + +  <c> +    <f:base xsi:type="b:derived2"><x>1</x><z>2</z></f:base> +  </c> + +</t:root> diff --git a/xsd/tests/cxx/tree/prefix/test.xsd b/xsd/tests/cxx/tree/prefix/test.xsd new file mode 100644 index 0000000..421fdc0 --- /dev/null +++ b/xsd/tests/cxx/tree/prefix/test.xsd @@ -0,0 +1,40 @@ +<?xml version="1.0"?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" +        xmlns:f="foo" +	xmlns:b="bar" +	xmlns:t="test" +	targetNamespace="test"> + +  <import namespace="foo" schemaLocation="foo.xsd"/> +  <import namespace="bar" schemaLocation="bar.xsd"/> + +  <complexType name="a"> +    <sequence> +      <element ref="f:efoo"/> +    </sequence> +    <attribute ref="b:abar"/> +  </complexType> + +  <complexType name="b"> +    <sequence> +      <element ref="f:base"/> +    </sequence> +  </complexType> + +  <complexType name="c"> +    <sequence> +      <element ref="f:base"/> +    </sequence> +  </complexType> + +  <complexType name="type"> +    <sequence> +      <element name="a" type="t:a"/> +      <element name="b" type="t:b"/> +      <element name="c" type="t:c"/> +    </sequence> +  </complexType> + +  <element name="root" type="t:type"/> + +</schema>  | 
