瀏覽代碼

brakujaces

a.binder 9 年之前
父節點
當前提交
87dfa33a8a

+ 88 - 0
SE/schema/default_db_xml_cache.public/file_cache.xsl

@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:xs="http://www.w3.org/2001/XMLSchema"
+    xmlns:exslt="http://exslt.org/common"
+    xmlns:dyn="http://saxon.sf.net/"
+    xmlns:uuid="java:java.util.UUID"
+    xmlns:http="http://expath.org/ns/http-client"
+    exclude-result-prefixes="xs exslt dyn uuid http"
+    version="2.0">
+    
+    <!-- @2017-02 bindera to powinno byc zamienione na korzystanie z API zamiennie z ant i dociaganie danych -->
+	<!-- authBasicHeader - base64 for basic auth
+		example:
+			bash: echo -n "$username:$passwd" | base64
+			php: echo base64_encode("{$username}:{$password}");
+	-->
+	<xsl:param name="authBasicHeader" select="'xxxx'"/>    
+    <xsl:template name="file_cache">
+        <!-- Template zczytujacy dane z URLa i zapisujacy je pod FILE_URL - w razie potrzeby czyta z cache a w innym przypadku odswieza
+             importowany np. przez import_resource_table_xml_from_api.xsl
+        -->
+        <xsl:param name="cache"/> <!-- read | refresh -->
+        <xsl:param name="URL"/>
+        <xsl:param name="FILE_URL" select="concat('../default_db.instance.xml/',$URL)"/>
+        <xsl:param name="INSERT_OBJ"/> <!-- xml z zawartoscia obiektu do wgrania np. @system_cache__appinfo:ID, @system_cache__appinfo:PARENT_ID, @system_cache__appinfo:VALUE , @system_cache__appinfo:REMOTE_ID -->
+        <xsl:param name="xpath"/> <!-- to filter results in xpath - optional -->
+        <xsl:param name="uuid"/>
+        <xsl:message>Bede dzialac z URL:<xsl:value-of select="$URL"/> authHeader:<xsl:value-of select="$authBasicHeader"/></xsl:message>
+        <xsl:choose>          
+            <!-- @2015-11-19 opcja wylaczona z uwagi na niepoprawne dzialanie expath, dla testowania innych funkcji na silniku SAXON EE-->
+            <!--<xsl:when test="$cache='refresh' or ( not(unparsed-text-available($FILE_URL)))">
+                <xsl:message>Laduje swieze dane z API:<xsl:value-of select="$URL"/>; do pliku <xsl:value-of select="$FILE_URL"/></xsl:message>
+                <xsl:variable name="req" as="element()">
+                    <http:request href="{concat($URL,'/items?handle=',$uuid)}" method="put">
+                        <http:header name="Authorization" value="Basic { $authBasicHeader }" />
+                    </http:request>
+                </xsl:variable>
+                <xsl:variable name="resp" select="http:send-request($req)"/>
+                <xsl:result-document href="{$FILE_URL}">
+                    <xsl:copy-of select="$resp[2]" copy-namespaces="no"/>     
+                </xsl:result-document>               
+                <xsl:choose>
+                    <xsl:when test="$xpath">
+                        <xsl:message terminate="yes">dyn:evaluate option are disabled - do not use them!!!</xsl:message>
+                        <!-\-<xsl:copy-of select="$SCHEMA/dyn:evaluate($xpath)"/>-\->     
+                    </xsl:when>
+                    <xsl:otherwise>
+                        <xsl:copy-of select="$resp[2]" copy-namespaces="no"/>         
+                    </xsl:otherwise>
+                </xsl:choose>
+            </xsl:when>
+            <xsl:when test="$cache='write'">
+                
+                <xsl:message>57: Zapisuje XML do bazy danych <xsl:value-of select="concat($URL,'/newitem?handle=',$uuid)"/></xsl:message>
+                <xsl:message> authBasicHeader aktualny:<xsl:value-of select="$authBasicHeader"/></xsl:message>
+                <xsl:variable name="req" as="element()">
+                    <http:request href="{concat($URL,'/newitem?handle=',$uuid)}" method="put">
+											<http:header name="Authorization" value="Basic { $authBasicHeader }" />
+                       <http:body media-type="application/xml" method="xml" omit-xml-declaration="yes">
+                            <xsl:copy-of select="$INSERT_OBJ" copy-namespaces="no" exclude-result-prefixes="http"/>
+                        </http:body>
+                    </http:request>
+                </xsl:variable>
+                
+                <xsl:variable name="resp" select="http:send-request($req)"/>
+                
+                    <xsl:message>63: response body : <xsl:copy-of select="$resp"/></xsl:message>
+                
+                <xsl:copy-of select="$resp[2]" copy-namespaces="no"/>  
+               
+            </xsl:when>-->
+            <xsl:when test="1=2"/>
+            <xsl:otherwise>
+                <xsl:choose>
+                    <xsl:when test="$xpath">
+                        <xsl:message terminate="yes"> Opcja xpath w przygotowaniu dla xpath <xsl:value-of select="concat($FILE_URL,$xpath)"/></xsl:message>
+                        <xsl:message>Laduje istniejacy plik schematow z <xsl:value-of select="concat($FILE_URL,$xpath)"/> z xpath <xsl:value-of select="$xpath"/></xsl:message>
+                        <!--<xsl:copy-of select="document($FILE_URL)/dyn:evaluate($xpath)"/>-->     
+                    </xsl:when>
+                    <xsl:otherwise>
+                        <xsl:message>Laduje istniejacy plik <xsl:value-of select="$FILE_URL"/></xsl:message>
+                        <xsl:copy-of select="document($FILE_URL)"/>        
+                    </xsl:otherwise>
+                </xsl:choose>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:template>
+</xsl:stylesheet>

+ 208 - 0
SE/schema/default_db_xml_cache.public/get_all_xsd.xsl

@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:xs="http://www.w3.org/2001/XMLSchema"
+    exclude-result-prefixes="xs hfp"
+    version="2.0"
+    xmlns:system_cache__appinfo="http://biuro.biall-net.pl/xmlschema_procesy5/default_db_xml_cache/appinfo.xsd"
+    xmlns:hfp="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty">
+    
+    <xsl:include href="../default_db_xml_cache.public/xml-schema-primitives.xsl"/>
+    
+    <xsl:function name="system_cache__appinfo:clean_object_prefix">
+        <xsl:param name="name" required="yes"/>
+        <xsl:choose>
+            <xsl:when test="substring-after($name,':')">
+                <xsl:value-of select="substring-after($name,':')"/>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:value-of select="$name"/>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:function>
+    
+    <xsl:function name="system_cache__appinfo:get_object_prefix">
+        <xsl:param name="name" required="yes"/>
+        <xsl:choose>
+            <xsl:when test="substring-before($name,':')">
+                <xsl:value-of select="substring-before($name,':')"/>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:message terminate="yes">system_cache__appinfo:get_object_prefix(<xsl:value-of select="$name"/>) - parameter has no exptected prefix:object  format definition! Maybe not expected schema?</xsl:message>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:function>
+    
+    <!-- funkcja do wyczyszczenia wyescapowenago prefixu z np. default_db__x3A__IN7_DZIENNIK_KORESP do IN7_DZIENNIK_KORESP -->
+    <xsl:function name="system_cache__appinfo:clean_object_escaped_prefix">
+        <xsl:param name="name" required="yes"/>
+    </xsl:function>
+    
+    <!-- funkcja do ponownego zamienienia na sredniki itp z np. default_db__x3A__IN7_DZIENNIK_KORESP do IN7_DZIENNIK_KORESP -->
+    <xsl:function name="system_cache__appinfo:translate_object_escaped_prefix_from_string">
+        <xsl:param name="name" required="yes"/>
+        <xsl:value-of select="replace(replace(replace(replace(replace(replace(replace(replace($name, '__x2F__', '/'), '__x3A__', ':'),'__x2D__','-'),'__x25__','%'),'__x28__','('),'__x29__',')'),'__x23__','#'),'__x2A__','*')"/>
+    </xsl:function>
+    
+    <!-- funkcja do zamienienia na postac default_db__x3A__IN7_DZIENNIK_KORESP do IN7_DZIENNIK_KORESP -->
+    <xsl:function name="system_cache__appinfo:escape_object_prefix_to_string">
+        <xsl:param name="name" required="yes"/>
+        <xsl:value-of select="replace(replace(replace(replace(replace(replace(replace(replace($name, '/', '__x2F__'), ':', '__x3A__'),'-','__x2D__'),'%','__x25__'), '\(', '__x28__'), '\)' ,'__x29__'),'#','__x23__'),'\*','__x2A__')"/>
+    </xsl:function>
+   
+    <xsl:template name="system_cache__appinfo:prefixed_object_info">
+        <xsl:param name="prefixed_object" required="yes"/>
+        <xsl:variable name="prefix_token" select="tokenize(system_cache__appinfo:translate_object_escaped_prefix_from_string($prefixed_object),':')"/>
+        <system_cache__appinfo:prefixed_object_info>
+            <xsl:attribute name="prefix" select="$prefix_token[1]"/>
+            <xsl:attribute name="name" select="$prefix_token[2]"/>
+            <xsl:attribute name="element" select="$prefix_token[3]"/>
+        </system_cache__appinfo:prefixed_object_info>
+    </xsl:template>
+   
+    <!-- @2016-08 funkcje do wykrywania  prefixow, namespace itp itd... 
+      <xsl:attribute name="prefix" select="$vrtfNamespaces/ns[@uri=$targetnamespace][1]/@prefix" xpath-default-namespace=""/>
+                        <xsl:attribute name="targetnamespace" select="$targetnamespace"/>
+                        <xsl:attribute name="type_79" select="$type_79"/>
+                        <xsl:attribute name="prefix_79" select="$prefix_79"/>
+                        <xsl:attribute name="type_79_nopref" select="$type_79_nopref"/>
+    
+    -->
+    <xsl:function name="system_cache__appinfo:prefix_from_targetNamespace">
+        <xsl:param name="system_cache__appinfo:vrtfNamespaces" required="yes"/>
+        <xsl:param name="targetNamespace" required="yes"/>
+        <xsl:value-of select="$system_cache__appinfo:vrtfNamespaces/ns[@uri=$targetNamespace][1]/@prefix" xpath-default-namespace=""/>
+    </xsl:function>
+    <xsl:function name="system_cache__appinfo:targetNamespace_from_prefix">
+        <xsl:param name="system_cache__appinfo:vrtfNamespaces" required="yes"/>
+        <xsl:param name="prefix" required="yes"/>
+        <xsl:value-of select="$system_cache__appinfo:vrtfNamespaces/ns[@prefix=$prefix][1]/@uri" xpath-default-namespace=""/>
+    </xsl:function>
+    
+    
+    <xsl:function name="system_cache__appinfo:get_default_db_obj_url_table_name"><!-- @2016-10 funkcja do wykrywania nazwy tabeli dla default db, w przypadku braku zgodnosci namespace - nic nie zwraca -->
+        <xsl:param name="parent_complexTypeNamespace" required="yes"/>
+        <xsl:variable name="uri_tokens" select="tokenize($parent_complexTypeNamespace,'/')"/>
+        <xsl:variable name="uri_tokens_count" select="count($uri_tokens)"/>
+        <xsl:if test="$uri_tokens[($uri_tokens_count - 1)]='table' and $uri_tokens[($uri_tokens_count - 2)]='default_db' and $uri_tokens[($uri_tokens_count - 3)]='wfs'">
+            <xsl:variable name="get_default_db_obj_url_table_name" select="tokenize($uri_tokens[$uri_tokens_count],'\.')"/>
+            <xsl:value-of select="$get_default_db_obj_url_table_name[1]"/>
+        </xsl:if>
+    </xsl:function>
+    
+   
+    <!--<xsl:function name="system_cache__appinfo:php_function_name_from_obj_with_prefix">
+        <xsl:param name="object_name" required="yes"/>
+        <xsl:value-of select="replace($object_name,':','__x3A__')"/>
+    </xsl:function>-->
+    
+    <xsl:template name="main">
+        <xsl:call-template name="system_cache__appinfo:get_all_xsd">
+            <xsl:with-param name="path2collection" select="'../'"/>
+            <xsl:with-param name="cache" select="'read'"/>
+        </xsl:call-template>
+    </xsl:template>
+    
+    <xsl:template name="system_cache__appinfo:get_all_xsd">
+        <xsl:param name="path2collection" select="'../default_objects/'"/> 
+        <xsl:param name="get_system_schemas"/>
+        <xsl:param name="cache" select="'read'"/>
+        <xsl:variable name="element-filename" select="'procesy5_system_schema'"/>
+        <xsl:choose>
+            <xsl:when test="unparsed-text-available(concat('../default_db.instance.xml/transformed/',$element-filename,'.xml')) and $cache='read'">
+                <xsl:copy-of select="doc(concat('../default_db.instance.xml/transformed/',$element-filename,'.xml'))"/>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:variable name="path">
+                    <xsl:value-of select="concat($path2collection,'?select=*.(xsd);recurse=yes;on-error=warning')"/> 
+                </xsl:variable>
+                <xsl:variable name="docs" select="collection($path)"/>
+                <xsl:variable name="procesy5_system_schema">
+                  <system_cache__appinfo:get_all_xsd_list>
+                    <xsl:for-each select="$docs">
+                        <xsl:message> get_all_xsd przetwarzam plik <xsl:value-of select="document-uri(/)"/></xsl:message>
+                        <system_cache__appinfo:get_all_xsd>
+                            <xsl:attribute name="system_cache__appinfo:document-uri" select="substring-after(document-uri(/), '/public_html/')"/>
+                            <xsl:attribute name="system_cache__appinfo:document-uri-full" select="document-uri(/)"/>
+                            <!--<xsl:for-each select="//schema" xpath-default-namespace="http://www.w3.org/2001/XMLSchema">
+                                                <xsl:element name="{name()}">
+                                                    <xsl:for-each select="@*">
+                                                        <xsl:attribute name="{name()}" select="."/>
+                                                        <xsl:copy-of select="child::node()"/>
+                                                    </xsl:for-each>
+                                                </xsl:element>
+                                            </xsl:for-each>-->
+                            <xsl:copy-of select="/"/>
+                        </system_cache__appinfo:get_all_xsd>
+                    </xsl:for-each>
+                    <!-- -->
+                      <xsl:message> schemat dla XML primitives  <xsl:value-of select="'http://www.w3.org/1999/XSL/Transform'"/></xsl:message>
+                      <system_cache__appinfo:get_all_xsd>
+                          <xsl:attribute name="system_cache__appinfo:document-uri" select="'http://www.w3.org/1999/XSL/Transform'"/>
+                          <xsl:attribute name="system_cache__appinfo:document-uri-full" select="'http://www.w3.org/1999/XSL/Transform'"/>
+                          <xsl:copy-of select="$system_cache__appinfo:primitives.xsd"/>
+                      </system_cache__appinfo:get_all_xsd>
+                      <xsl:message> schemat dla XML primitives/derived  <xsl:value-of select="'http://www.w3.org/1999/XSL/Transform'"/></xsl:message>
+                      <system_cache__appinfo:get_all_xsd>
+                          <xsl:attribute name="system_cache__appinfo:document-uri" select="'http://www.w3.org/1999/XSL/Transform'"/>
+                          <xsl:attribute name="system_cache__appinfo:document-uri-full" select="'http://www.w3.org/1999/XSL/Transform'"/>
+                          <xsl:copy-of select="$system_cache__appinfo:derived.xsd"/>
+                      </system_cache__appinfo:get_all_xsd>
+                      <system_cache__appinfo:get_all_xsd>
+                          <xsl:attribute name="system_cache__appinfo:document-uri" select="'http://www.w3.org/1999/XSL/Transform'"/>
+                          <xsl:attribute name="system_cache__appinfo:document-uri-full" select="'http://www.w3.org/1999/XSL/Transform'"/>
+                          <xsl:copy-of select="$system_cache__appinfo:XMLSchema11.xsd"/>
+                      </system_cache__appinfo:get_all_xsd>
+                      <system_cache__appinfo:get_all_xsd>
+                          <xsl:attribute name="system_cache__appinfo:document-uri" select="'http://www.w3.org/1999/XSL/Transform'"/>
+                          <xsl:attribute name="system_cache__appinfo:document-uri-full" select="'http://www.w3.org/1999/XSL/Transform'"/>
+                          <xsl:copy-of select="$system_cache__appinfo:builtintypes.xsd"/>
+                      </system_cache__appinfo:get_all_xsd>
+                  </system_cache__appinfo:get_all_xsd_list>
+                </xsl:variable>
+                <xsl:result-document href="{concat('../default_db.instance.xml/transformed/',$element-filename,'.xml')}">
+                    <xsl:copy-of select="$procesy5_system_schema"/>
+                </xsl:result-document>
+                <xsl:copy-of select="$procesy5_system_schema"></xsl:copy-of>
+            </xsl:otherwise>
+        </xsl:choose>          
+    </xsl:template>
+    
+    <xsl:template name="system_cache__appinfo:vrtfNamespaces">
+        <xsl:variable name="procesy5_system_schema">
+            <xsl:call-template name="system_cache__appinfo:get_all_xsd">
+                <xsl:with-param name="path2collection" select="'../'"/>
+                <xsl:with-param name="cache" select="'read'"></xsl:with-param>
+            </xsl:call-template>
+        </xsl:variable>
+        <xsl:for-each select="$procesy5_system_schema//schema/namespace::node()"
+            xpath-default-namespace="http://www.w3.org/2001/XMLSchema">
+            <ns element="{name(..)}" prefix="{name()}" uri="{.}"/>
+        </xsl:for-each>
+    </xsl:template>
+    
+    
+    <!-- do aktualizowania pozycji w schemache-->
+    <xsl:template name="system_cache__appinfo:position">
+        <xsl:param name="xml"/>
+                <xsl:for-each select="$xml/*">
+                    <xsl:if test="name()">
+                        <xsl:element name="{name()}">
+                            <xsl:attribute name="system_cache__appinfo:position" select="position()"/>
+                            <xsl:apply-templates mode="system_cache__appinfo:position" select="@*"/>
+                            <xsl:call-template name="system_cache__appinfo:position">
+                                <xsl:with-param name="xml" select="."/>
+                            </xsl:call-template>
+                        </xsl:element>
+                    </xsl:if>
+                </xsl:for-each>  
+    </xsl:template>
+        
+    <xsl:template match="@*" mode="system_cache__appinfo:position">
+        <xsl:attribute name="{name()}" select="."/>
+    </xsl:template>
+    <xsl:template match="text()" mode="system_cache__appinfo:position"/>
+    <xsl:template match="comment()" mode="system_cache__appinfo:position"/>
+        
+    
+    
+</xsl:stylesheet>

+ 3853 - 0
SE/schema/default_db_xml_cache.public/xml-schema-primitives.xsl

@@ -0,0 +1,3853 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:xs="http://www.w3.org/2001/XMLSchema"
+    xmlns:system_cache__appinfo="http://biuro.biall-net.pl/xmlschema_procesy5/default_db_xml_cache/appinfo.xsd"
+    xmlns:hfp="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty"
+    exclude-result-prefixes="xs"
+    version="2.0">
+    
+    
+   <xsl:variable name="system_cache__appinfo:primitives.xsd">
+        <xs:schema xmlns:hfp="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty"
+           xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           elementFormDefault="qualified"
+           xml:lang="en"
+           targetNamespace="http://www.w3.org/2001/XMLSchema">
+
+  <xs:annotation>
+      <xs:documentation>
+      This document contains XML elements which look like 
+      definitions for the primitive datatypes.  These definitions are for
+      information only; the real built-in definitions are magic.
+    </xs:documentation>
+      <xs:documentation>
+      For each built-in datatype in this schema (both primitive and
+      derived) can be uniquely addressed via a URI constructed
+      as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the datatype
+
+      For example, to address the int datatype, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#int
+
+      Additionally, each facet definition element can be uniquely
+      addressed via a URI constructed as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the facet
+
+      For example, to address the maxInclusive facet, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#maxInclusive
+
+      Additionally, each facet usage in a built-in datatype definition
+      can be uniquely addressed via a URI constructed as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the datatype, followed
+           by a period (".") followed by the name of the facet
+
+      For example, to address the usage of the maxInclusive facet in
+      the definition of int, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#int.maxInclusive
+
+    </xs:documentation>
+  </xs:annotation>
+  <xs:simpleType name="string" id="string">
+      <xs:annotation>
+         <xs:appinfo>
+            <hfp:hasFacet name="length"/>
+            <hfp:hasFacet name="minLength"/>
+            <hfp:hasFacet name="maxLength"/>
+            <hfp:hasFacet name="pattern"/>
+            <hfp:hasFacet name="enumeration"/>
+            <hfp:hasFacet name="whiteSpace"/>
+            <hfp:hasFacet name="assertions"/>
+            <hfp:hasProperty name="ordered" value="false"/>
+            <hfp:hasProperty name="bounded" value="false"/>
+            <hfp:hasProperty name="cardinality" value="countably infinite"/>
+            <hfp:hasProperty name="numeric" value="false"/>
+         </xs:appinfo>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#string">Built-in primitive type.
+The string datatype represents character strings in XML.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:anyAtomicType">
+         <xs:whiteSpace value="preserve" id="string.whiteSpace"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="boolean" id="boolean">
+      <xs:annotation>
+         <xs:appinfo>
+            <hfp:hasFacet name="pattern"/>
+            <hfp:hasFacet name="whiteSpace"/>
+            <hfp:hasFacet name="assertions"/>
+            <hfp:hasProperty name="ordered" value="false"/>
+            <hfp:hasProperty name="bounded" value="false"/>
+            <hfp:hasProperty name="cardinality" value="finite"/>
+            <hfp:hasProperty name="numeric" value="false"/>
+         </xs:appinfo>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#boolean">Built-in primitive type.
+It defines the boolean values true and false.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:anyAtomicType">
+         <xs:whiteSpace fixed="true" value="collapse" id="boolean.whiteSpace"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="float" id="float">
+      <xs:annotation>
+         <xs:appinfo>
+            <hfp:hasFacet name="pattern"/>
+            <hfp:hasFacet name="enumeration"/>
+            <hfp:hasFacet name="whiteSpace"/>
+            <hfp:hasFacet name="maxInclusive"/>
+            <hfp:hasFacet name="maxExclusive"/>
+            <hfp:hasFacet name="minInclusive"/>
+            <hfp:hasFacet name="minExclusive"/>
+            <hfp:hasFacet name="assertions"/>
+            <hfp:hasProperty name="ordered" value="partial"/>
+            <hfp:hasProperty name="bounded" value="true"/>
+            <hfp:hasProperty name="cardinality" value="finite"/>
+            <hfp:hasProperty name="numeric" value="true"/>
+         </xs:appinfo>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#float">Built-in primitive type.
+Corresponds to the IEEE single-precision 32-bit floating point type [IEEE 754-1985].</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:anyAtomicType">
+         <xs:whiteSpace fixed="true" value="collapse" id="float.whiteSpace"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="double" id="double">
+      <xs:annotation>
+         <xs:appinfo>
+            <hfp:hasFacet name="pattern"/>
+            <hfp:hasFacet name="enumeration"/>
+            <hfp:hasFacet name="whiteSpace"/>
+            <hfp:hasFacet name="maxInclusive"/>
+            <hfp:hasFacet name="maxExclusive"/>
+            <hfp:hasFacet name="minInclusive"/>
+            <hfp:hasFacet name="minExclusive"/>
+            <hfp:hasFacet name="assertions"/>
+            <hfp:hasProperty name="ordered" value="partial"/>
+            <hfp:hasProperty name="bounded" value="true"/>
+            <hfp:hasProperty name="cardinality" value="finite"/>
+            <hfp:hasProperty name="numeric" value="true"/>
+         </xs:appinfo>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#double">Built-in primitive type.
+The double datatype corresponds to IEEE double-precision 64-bit floating point type [IEEE 754-1985].</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:anyAtomicType">
+         <xs:whiteSpace fixed="true" value="collapse" id="double.whiteSpace"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="decimal" id="decimal">
+      <xs:annotation>
+         <xs:appinfo>
+            <hfp:hasFacet name="totalDigits"/>
+            <hfp:hasFacet name="fractionDigits"/>
+            <hfp:hasFacet name="pattern"/>
+            <hfp:hasFacet name="whiteSpace"/>
+            <hfp:hasFacet name="enumeration"/>
+            <hfp:hasFacet name="maxInclusive"/>
+            <hfp:hasFacet name="maxExclusive"/>
+            <hfp:hasFacet name="minInclusive"/>
+            <hfp:hasFacet name="minExclusive"/>
+            <hfp:hasFacet name="assertions"/>
+            <hfp:hasProperty name="ordered" value="total"/>
+            <hfp:hasProperty name="bounded" value="false"/>
+            <hfp:hasProperty name="cardinality" value="countably infinite"/>
+            <hfp:hasProperty name="numeric" value="true"/>
+         </xs:appinfo>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#decimal">Built-in primitive type.
+The decimal datatype represents arbitrary precision decimal numbers.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:anyAtomicType">
+         <xs:whiteSpace fixed="true" value="collapse" id="decimal.whiteSpace"/>
+      </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="duration" id="duration">
+      <xs:annotation>
+         <xs:appinfo>
+            <hfp:hasFacet name="pattern"/>
+            <hfp:hasFacet name="enumeration"/>
+            <hfp:hasFacet name="whiteSpace"/>
+            <hfp:hasFacet name="maxInclusive"/>
+            <hfp:hasFacet name="maxExclusive"/>
+            <hfp:hasFacet name="minInclusive"/>
+            <hfp:hasFacet name="minExclusive"/>
+            <hfp:hasFacet name="assertions"/>
+            <hfp:hasProperty name="ordered" value="partial"/>
+            <hfp:hasProperty name="bounded" value="false"/>
+            <hfp:hasProperty name="cardinality" value="countably infinite"/>
+            <hfp:hasProperty name="numeric" value="false"/>
+         </xs:appinfo>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#duration">Built-in primitive type.
+The duration datatype represents a duration of time.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:anyAtomicType">
+         <xs:whiteSpace fixed="true" value="collapse" id="duration.whiteSpace"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="dateTime" id="dateTime">
+      <xs:annotation>
+         <xs:appinfo>
+            <hfp:hasFacet name="pattern"/>
+            <hfp:hasFacet name="enumeration"/>
+            <hfp:hasFacet name="whiteSpace"/>
+            <hfp:hasFacet name="maxInclusive"/>
+            <hfp:hasFacet name="maxExclusive"/>
+            <hfp:hasFacet name="minInclusive"/>
+            <hfp:hasFacet name="minExclusive"/>
+            <hfp:hasFacet name="assertions"/>
+            <hfp:hasFacet name="explicitTimezone"/>
+            <hfp:hasProperty name="ordered" value="partial"/>
+            <hfp:hasProperty name="bounded" value="false"/>
+            <hfp:hasProperty name="cardinality" value="countably infinite"/>
+            <hfp:hasProperty name="numeric" value="false"/>
+         </xs:appinfo>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#dateTime">Built-in primitive type.
+The dateTime datatype represents a specific instant of time.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:anyAtomicType">
+         <xs:whiteSpace fixed="true" value="collapse" id="dateTime.whiteSpace"/>
+         <xs:explicitTimezone value="optional" id="dateTime.explicitTimezone"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="time" id="time">
+      <xs:annotation>
+         <xs:appinfo>
+            <hfp:hasFacet name="pattern"/>
+            <hfp:hasFacet name="enumeration"/>
+            <hfp:hasFacet name="whiteSpace"/>
+            <hfp:hasFacet name="maxInclusive"/>
+            <hfp:hasFacet name="maxExclusive"/>
+            <hfp:hasFacet name="minInclusive"/>
+            <hfp:hasFacet name="minExclusive"/>
+            <hfp:hasFacet name="assertions"/>
+            <hfp:hasFacet name="explicitTimezone"/>
+            <hfp:hasProperty name="ordered" value="partial"/>
+            <hfp:hasProperty name="bounded" value="false"/>
+            <hfp:hasProperty name="cardinality" value="countably infinite"/>
+            <hfp:hasProperty name="numeric" value="false"/>
+         </xs:appinfo>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#time">Built-in primitive type.
+The time datatype represents an instant of time that recurs every day.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:anyAtomicType">
+         <xs:whiteSpace fixed="true" value="collapse" id="time.whiteSpace"/>
+         <xs:explicitTimezone value="optional" id="time.explicitTimezone"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="date" id="date">
+      <xs:annotation>
+         <xs:appinfo>
+            <hfp:hasFacet name="pattern"/>
+            <hfp:hasFacet name="enumeration"/>
+            <hfp:hasFacet name="whiteSpace"/>
+            <hfp:hasFacet name="maxInclusive"/>
+            <hfp:hasFacet name="maxExclusive"/>
+            <hfp:hasFacet name="minInclusive"/>
+            <hfp:hasFacet name="minExclusive"/>
+            <hfp:hasFacet name="assertions"/>
+            <hfp:hasFacet name="explicitTimezone"/>
+            <hfp:hasProperty name="ordered" value="partial"/>
+            <hfp:hasProperty name="bounded" value="false"/>
+            <hfp:hasProperty name="cardinality" value="countably infinite"/>
+            <hfp:hasProperty name="numeric" value="false"/>
+         </xs:appinfo>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#date">Built-in primitive type.
+The date datatype represents a calendar date.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:anyAtomicType">
+         <xs:whiteSpace fixed="true" value="collapse" id="date.whiteSpace"/>
+         <xs:explicitTimezone value="optional" id="date.explicitTimezone"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="gYearMonth" id="gYearMonth">
+      <xs:annotation>
+         <xs:appinfo>
+            <hfp:hasFacet name="pattern"/>
+            <hfp:hasFacet name="enumeration"/>
+            <hfp:hasFacet name="whiteSpace"/>
+            <hfp:hasFacet name="maxInclusive"/>
+            <hfp:hasFacet name="maxExclusive"/>
+            <hfp:hasFacet name="minInclusive"/>
+            <hfp:hasFacet name="minExclusive"/>
+            <hfp:hasFacet name="assertions"/>
+            <hfp:hasFacet name="explicitTimezone"/>
+            <hfp:hasProperty name="ordered" value="partial"/>
+            <hfp:hasProperty name="bounded" value="false"/>
+            <hfp:hasProperty name="cardinality" value="countably infinite"/>
+            <hfp:hasProperty name="numeric" value="false"/>
+         </xs:appinfo>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gYearMonth">Built-in primitive type.
+The gYearMonth datatype represents a specific gregorian month in a specific gregorian year.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:anyAtomicType">
+         <xs:whiteSpace fixed="true" value="collapse" id="gYearMonth.whiteSpace"/>
+         <xs:explicitTimezone value="optional" id="gYearMonth.explicitTimezone"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="gYear" id="gYear">
+      <xs:annotation>
+         <xs:appinfo>
+            <hfp:hasFacet name="pattern"/>
+            <hfp:hasFacet name="enumeration"/>
+            <hfp:hasFacet name="whiteSpace"/>
+            <hfp:hasFacet name="maxInclusive"/>
+            <hfp:hasFacet name="maxExclusive"/>
+            <hfp:hasFacet name="minInclusive"/>
+            <hfp:hasFacet name="minExclusive"/>
+            <hfp:hasFacet name="assertions"/>
+            <hfp:hasFacet name="explicitTimezone"/>
+            <hfp:hasProperty name="ordered" value="partial"/>
+            <hfp:hasProperty name="bounded" value="false"/>
+            <hfp:hasProperty name="cardinality" value="countably infinite"/>
+            <hfp:hasProperty name="numeric" value="false"/>
+         </xs:appinfo>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gYear">Built-in primitive type.
+The gYear datatype represents a gregorian calendar year.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:anyAtomicType">
+         <xs:whiteSpace fixed="true" value="collapse" id="gYear.whiteSpace"/>
+         <xs:explicitTimezone value="optional" id="gYear.explicitTimezone"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="gMonthDay" id="gMonthDay">
+      <xs:annotation>
+         <xs:appinfo>
+            <hfp:hasFacet name="pattern"/>
+            <hfp:hasFacet name="enumeration"/>
+            <hfp:hasFacet name="whiteSpace"/>
+            <hfp:hasFacet name="maxInclusive"/>
+            <hfp:hasFacet name="maxExclusive"/>
+            <hfp:hasFacet name="minInclusive"/>
+            <hfp:hasFacet name="minExclusive"/>
+            <hfp:hasFacet name="assertions"/>
+            <hfp:hasFacet name="explicitTimezone"/>
+            <hfp:hasProperty name="ordered" value="partial"/>
+            <hfp:hasProperty name="bounded" value="false"/>
+            <hfp:hasProperty name="cardinality" value="countably infinite"/>
+            <hfp:hasProperty name="numeric" value="false"/>
+         </xs:appinfo>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gMonthDay">Built-in primitive type.
+The gMonthDay datatype is a gregorian date that recurs, specifically a day of the year such as the third of May.Arbitrary recurring dates are not supported by this datatype.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:anyAtomicType">
+         <xs:whiteSpace fixed="true" value="collapse" id="gMonthDay.whiteSpace"/>
+         <xs:explicitTimezone value="optional" id="gMonthDay.explicitTimezone"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="gDay" id="gDay">
+      <xs:annotation>
+         <xs:appinfo>
+            <hfp:hasFacet name="pattern"/>
+            <hfp:hasFacet name="enumeration"/>
+            <hfp:hasFacet name="whiteSpace"/>
+            <hfp:hasFacet name="maxInclusive"/>
+            <hfp:hasFacet name="maxExclusive"/>
+            <hfp:hasFacet name="minInclusive"/>
+            <hfp:hasFacet name="minExclusive"/>
+            <hfp:hasFacet name="assertions"/>
+            <hfp:hasFacet name="explicitTimezone"/>
+            <hfp:hasProperty name="ordered" value="partial"/>
+            <hfp:hasProperty name="bounded" value="false"/>
+            <hfp:hasProperty name="cardinality" value="countably infinite"/>
+            <hfp:hasProperty name="numeric" value="false"/>
+         </xs:appinfo>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gDay">Built-in primitive type.
+The gDay datatype is a gregorian day that recurs, specifically a day of the month such as the 5th of the month. Arbitrary recurring days are not supported by this datatype.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:anyAtomicType">
+         <xs:whiteSpace fixed="true" value="collapse" id="gDay.whiteSpace"/>
+         <xs:explicitTimezone value="optional" id="gDay.explicitTimezone"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="gMonth" id="gMonth">
+      <xs:annotation>
+         <xs:appinfo>
+            <hfp:hasFacet name="pattern"/>
+            <hfp:hasFacet name="enumeration"/>
+            <hfp:hasFacet name="whiteSpace"/>
+            <hfp:hasFacet name="maxInclusive"/>
+            <hfp:hasFacet name="maxExclusive"/>
+            <hfp:hasFacet name="minInclusive"/>
+            <hfp:hasFacet name="minExclusive"/>
+            <hfp:hasFacet name="assertions"/>
+            <hfp:hasFacet name="explicitTimezone"/>
+            <hfp:hasProperty name="ordered" value="partial"/>
+            <hfp:hasProperty name="bounded" value="false"/>
+            <hfp:hasProperty name="cardinality" value="countably infinite"/>
+            <hfp:hasProperty name="numeric" value="false"/>
+         </xs:appinfo>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gMonth">Built-in primitive type.
+The gMonth datatype is a gregorian month that recurs every year.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:anyAtomicType">
+         <xs:whiteSpace fixed="true" value="collapse" id="gMonth.whiteSpace"/>
+         <xs:explicitTimezone value="optional" id="gMonth.explicitTimezone"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="hexBinary" id="hexBinary">
+      <xs:annotation>
+         <xs:appinfo>
+            <hfp:hasFacet name="length"/>
+            <hfp:hasFacet name="minLength"/>
+            <hfp:hasFacet name="maxLength"/>
+            <hfp:hasFacet name="pattern"/>
+            <hfp:hasFacet name="enumeration"/>
+            <hfp:hasFacet name="whiteSpace"/>
+            <hfp:hasFacet name="assertions"/>
+            <hfp:hasProperty name="ordered" value="false"/>
+            <hfp:hasProperty name="bounded" value="false"/>
+            <hfp:hasProperty name="cardinality" value="countably infinite"/>
+            <hfp:hasProperty name="numeric" value="false"/>
+         </xs:appinfo>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#binary">Built-in primitive type.
+The hexBinary datatype represents arbitrary hex-encoded binary data.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:anyAtomicType">
+         <xs:whiteSpace fixed="true" value="collapse" id="hexBinary.whiteSpace"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="base64Binary" id="base64Binary">
+      <xs:annotation>
+         <xs:appinfo>
+            <hfp:hasFacet name="length"/>
+            <hfp:hasFacet name="minLength"/>
+            <hfp:hasFacet name="maxLength"/>
+            <hfp:hasFacet name="pattern"/>
+            <hfp:hasFacet name="enumeration"/>
+            <hfp:hasFacet name="whiteSpace"/>
+            <hfp:hasFacet name="assertions"/>
+            <hfp:hasProperty name="ordered" value="false"/>
+            <hfp:hasProperty name="bounded" value="false"/>
+            <hfp:hasProperty name="cardinality" value="countably infinite"/>
+            <hfp:hasProperty name="numeric" value="false"/>
+         </xs:appinfo>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#base64Binary">Built-in primitive type.
+The base64Binary datatype represents Base64-encoded arbitrary binary data.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:anyAtomicType">
+         <xs:whiteSpace fixed="true" value="collapse" id="base64Binary.whiteSpace"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="anyURI" id="anyURI">
+      <xs:annotation>
+         <xs:appinfo>
+            <hfp:hasFacet name="length"/>
+            <hfp:hasFacet name="minLength"/>
+            <hfp:hasFacet name="maxLength"/>
+            <hfp:hasFacet name="pattern"/>
+            <hfp:hasFacet name="enumeration"/>
+            <hfp:hasFacet name="whiteSpace"/>
+            <hfp:hasFacet name="assertions"/>
+            <hfp:hasProperty name="ordered" value="false"/>
+            <hfp:hasProperty name="bounded" value="false"/>
+            <hfp:hasProperty name="cardinality" value="countably infinite"/>
+            <hfp:hasProperty name="numeric" value="false"/>
+         </xs:appinfo>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#anyURI">Built-in primitive type.
+The anyURI datatype represents a Uniform Resource Identifier Reference (URI).</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:anyAtomicType">
+         <xs:whiteSpace fixed="true" value="collapse" id="anyURI.whiteSpace"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="QName" id="QName">
+      <xs:annotation>
+         <xs:appinfo>
+            <hfp:hasFacet name="length"/>
+            <hfp:hasFacet name="minLength"/>
+            <hfp:hasFacet name="maxLength"/>
+            <hfp:hasFacet name="pattern"/>
+            <hfp:hasFacet name="enumeration"/>
+            <hfp:hasFacet name="whiteSpace"/>
+            <hfp:hasFacet name="assertions"/>
+            <hfp:hasProperty name="ordered" value="false"/>
+            <hfp:hasProperty name="bounded" value="false"/>
+            <hfp:hasProperty name="cardinality" value="countably infinite"/>
+            <hfp:hasProperty name="numeric" value="false"/>
+         </xs:appinfo>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#QName">Built-in primitive type.
+QName represents XML qualified names.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:anyAtomicType">
+         <xs:whiteSpace fixed="true" value="collapse" id="QName.whiteSpace"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="NOTATION" id="NOTATION">
+      <xs:annotation>
+         <xs:appinfo>
+            <hfp:hasFacet name="length"/>
+            <hfp:hasFacet name="minLength"/>
+            <hfp:hasFacet name="maxLength"/>
+            <hfp:hasFacet name="pattern"/>
+            <hfp:hasFacet name="enumeration"/>
+            <hfp:hasFacet name="whiteSpace"/>
+            <hfp:hasFacet name="assertions"/>
+            <hfp:hasProperty name="ordered" value="false"/>
+            <hfp:hasProperty name="bounded" value="false"/>
+            <hfp:hasProperty name="cardinality" value="countably infinite"/>
+            <hfp:hasProperty name="numeric" value="false"/>
+         </xs:appinfo>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#NOTATION"/>
+         <xs:documentation>
+        NOTATION cannot be used directly in a schema; rather a type
+        must be derived from it by specifying at least one enumeration
+        facet whose value is the name of a NOTATION declared in the
+        schema.
+      </xs:documentation>
+      </xs:annotation>
+      <xs:restriction base="xs:anyAtomicType">
+         <xs:whiteSpace fixed="true" value="collapse" id="NOTATION.whiteSpace"/>
+      </xs:restriction>
+  </xs:simpleType>
+</xs:schema>
+    </xsl:variable>
+   <xsl:variable name="system_cache__appinfo:derived.xsd">
+       <xs:schema xmlns:hfp="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty"
+           xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           elementFormDefault="qualified"
+           xml:lang="en"
+           targetNamespace="http://www.w3.org/2001/XMLSchema">
+   <xs:annotation>
+      <xs:documentation>
+      This document contains XML representations for the 
+     ordinary non-primitive built-in datatypes
+    </xs:documentation>
+  </xs:annotation>
+  <xs:simpleType name="normalizedString" id="normalizedString">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#normalizedString">Built-in derived type.
+The normalizedString datatype represents white space normalized strings.
+The base type of normalizedString is string.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:string">
+         <xs:whiteSpace value="replace" id="normalizedString.whiteSpace"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="token" id="token">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#token">Built-in derived type.
+The token datatype represents tokenized strings.
+The base type of token is normalizedString.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:normalizedString">
+         <xs:whiteSpace value="collapse" id="token.whiteSpace"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="language" id="language">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#language">Built-in derived type.
+The language datatype represents natural language identifiers as defined by [RFC 1766].
+The base type of language is token.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:token">
+         <xs:pattern value="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*" id="language.pattern">
+            <xs:annotation>
+               <xs:documentation source="http://www.ietf.org/rfc/bcp/bcp47.txt">
+            pattern specifies the content of section 2.12 of XML 1.0e2
+            and RFC 3066 (Revised version of RFC 1766).  N.B. RFC 3066 is now
+            obsolete; the grammar of RFC4646 is more restrictive.  So strict
+            conformance to the rules for language codes requires extra checking
+            beyond validation against this type.
+          </xs:documentation>
+            </xs:annotation>
+         </xs:pattern>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="IDREFS" id="IDREFS">
+      <xs:annotation>
+         <xs:appinfo>
+            <hfp:hasFacet name="length"/>
+            <hfp:hasFacet name="minLength"/>
+            <hfp:hasFacet name="maxLength"/>
+            <hfp:hasFacet name="enumeration"/>
+            <hfp:hasFacet name="whiteSpace"/>
+            <hfp:hasFacet name="pattern"/>
+            <hfp:hasFacet name="assertions"/>
+            <hfp:hasProperty name="ordered" value="false"/>
+            <hfp:hasProperty name="bounded" value="false"/>
+            <hfp:hasProperty name="cardinality" value="countably infinite"/>
+            <hfp:hasProperty name="numeric" value="false"/>
+         </xs:appinfo>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#IDREFS">Built-in derived type.
+IDREFS represents the IDREFS attribute type.
+The itemType of IDREFS is IDREF.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction>
+         <xs:simpleType>
+            <xs:list itemType="xs:IDREF"/>
+         </xs:simpleType>
+         <xs:minLength value="1" id="IDREFS.minLength"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="ENTITIES" id="ENTITIES">
+      <xs:annotation>
+         <xs:appinfo>
+            <hfp:hasFacet name="length"/>
+            <hfp:hasFacet name="minLength"/>
+            <hfp:hasFacet name="maxLength"/>
+            <hfp:hasFacet name="enumeration"/>
+            <hfp:hasFacet name="whiteSpace"/>
+            <hfp:hasFacet name="pattern"/>
+            <hfp:hasFacet name="assertions"/>
+            <hfp:hasProperty name="ordered" value="false"/>
+            <hfp:hasProperty name="bounded" value="false"/>
+            <hfp:hasProperty name="cardinality" value="countably infinite"/>
+            <hfp:hasProperty name="numeric" value="false"/>
+         </xs:appinfo>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#ENTITIES">Built-in derived type.
+ENTITIES represents the ENTITIES attribute type.
+The itemType of ENTITIES is ENTITY.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction>
+         <xs:simpleType>
+            <xs:list itemType="xs:ENTITY"/>
+         </xs:simpleType>
+         <xs:minLength value="1" id="ENTITIES.minLength"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="NMTOKEN" id="NMTOKEN">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NMTOKEN">Built-in derived type.
+NMTOKEN represents the NMTOKEN attribute type.
+The base type of NMTOKEN is token.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:token">
+         <xs:pattern value="\c+" id="NMTOKEN.pattern">
+            <xs:annotation>
+               <xs:documentation source="http://www.w3.org/TR/REC-xml#NT-Nmtoken">
+            pattern matches production 7 from the XML spec
+          </xs:documentation>
+            </xs:annotation>
+         </xs:pattern>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="NMTOKENS" id="NMTOKENS">
+      <xs:annotation>
+         <xs:appinfo>
+            <hfp:hasFacet name="length"/>
+            <hfp:hasFacet name="minLength"/>
+            <hfp:hasFacet name="maxLength"/>
+            <hfp:hasFacet name="enumeration"/>
+            <hfp:hasFacet name="whiteSpace"/>
+            <hfp:hasFacet name="pattern"/>
+            <hfp:hasFacet name="assertions"/>
+            <hfp:hasProperty name="ordered" value="false"/>
+            <hfp:hasProperty name="bounded" value="false"/>
+            <hfp:hasProperty name="cardinality" value="countably infinite"/>
+            <hfp:hasProperty name="numeric" value="false"/>
+         </xs:appinfo>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NMTOKENS">Built-in derived type.
+NMTOKENS represents the NMTOKENS attribute type.
+The itemType of NMTOKENS is NMTOKEN.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction>
+         <xs:simpleType>
+            <xs:list itemType="xs:NMTOKEN"/>
+         </xs:simpleType>
+         <xs:minLength value="1" id="NMTOKENS.minLength"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="Name" id="Name">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#Name">Built-in derived type.
+Name represents XML Names.
+The base type of Name is token.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:token">
+         <xs:pattern value="\i\c*" id="Name.pattern">
+            <xs:annotation>
+               <xs:documentation source="http://www.w3.org/TR/REC-xml#NT-Name">
+            pattern matches production 5 from the XML spec
+          </xs:documentation>
+            </xs:annotation>
+         </xs:pattern>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="NCName" id="NCName">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NCName">Built-in derived type.
+NCName represents XML "non-colonized" Names.
+The base type of NCName is Name.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:Name">
+         <xs:pattern value="[\i-[:]][\c-[:]]*" id="NCName.pattern">
+            <xs:annotation>
+               <xs:documentation source="http://www.w3.org/TR/REC-xml-names/#NT-NCName">
+            pattern matches production 4 from the Namespaces in XML spec
+          </xs:documentation>
+            </xs:annotation>
+         </xs:pattern>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="ID" id="ID">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#ID">Built-in derived type.
+ID represents the ID attribute type.
+The base type of ID is NCName.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:NCName"/>
+  </xs:simpleType>
+  <xs:simpleType name="IDREF" id="IDREF">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#IDREF">Built-in derived type.
+IDREF represents the IDREF attribute type.
+The base type of IDREF is NCName.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:NCName"/>
+  </xs:simpleType>
+  <xs:simpleType name="ENTITY" id="ENTITY">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#ENTITY">Built-in derived type.
+ENTITY represents the ENTITY attribute type.
+The base type of ENTITY is NCName.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:NCName"/>
+  </xs:simpleType>
+  <xs:simpleType name="integer" id="integer">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#integer">Built-in derived type.
+The integer datatype is derived from decimal by fixing the value of fractionDigits to be 0.
+This results in the standard mathematical concept of the integer numbers.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:decimal">
+         <xs:fractionDigits fixed="true" value="0" id="integer.fractionDigits"/>
+         <xs:pattern value="[\-+]?[0-9]+" id="integer.pattern"/>
+      
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="nonPositiveInteger" id="nonPositiveInteger">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#nonPositiveInteger">Built-in derived type.
+The nonPositiveInteger datatype is derived from integer by setting the value of maxInclusive to be 0.
+This results in the standard mathematical concept of the non-positive integers.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:integer">
+         <xs:maxInclusive value="0" id="nonPositiveInteger.maxInclusive"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="negativeInteger" id="negativeInteger">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#negativeInteger">Built-in derived type.
+The negativeInteger datatype is derived from nonPositiveInteger by setting the value of maxInclusive to be -1. This results in the standard mathematical concept of the negative integers.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:nonPositiveInteger">
+         <xs:maxInclusive value="-1" id="negativeInteger.maxInclusive"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="long" id="long">
+      <xs:annotation>
+         <xs:appinfo>
+            <hfp:hasProperty name="bounded" value="true"/>
+            <hfp:hasProperty name="cardinality" value="finite"/>
+         </xs:appinfo>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#long">Built-in derived type.
+The long datatype is derived from integer by setting the value of maxInclusive to be 9223372036854775807 and minInclusive to be -9223372036854775808.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:integer">
+         <xs:minInclusive value="-9223372036854775808" id="long.minInclusive"/>
+         <xs:maxInclusive value="9223372036854775807" id="long.maxInclusive"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="int" id="int">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#int">Built-in derived type.
+The int datatype is derived from long by setting the value of maxInclusive to be 2147483647 and minInclusive to be -2147483648.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:long">
+         <xs:minInclusive value="-2147483648" id="int.minInclusive"/>
+         <xs:maxInclusive value="2147483647" id="int.maxInclusive"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="short" id="short">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#short">Built-in derived type.
+The short datatype is derived from int by setting the value of maxInclusive to be 32767 and minInclusive to be -32768.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:int">
+         <xs:minInclusive value="-32768" id="short.minInclusive"/>
+         <xs:maxInclusive value="32767" id="short.maxInclusive"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="byte" id="byte">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#byte">Built-in derived type.
+The byte datatype is derived from short by setting the value of maxInclusive to be 127 and minInclusive to be -128.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:short">
+         <xs:minInclusive value="-128" id="byte.minInclusive"/>
+         <xs:maxInclusive value="127" id="byte.maxInclusive"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="nonNegativeInteger" id="nonNegativeInteger">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#nonNegativeInteger">Built-in derived type.
+The nonNegativeInteger datatype is derived from integer by setting the value of minInclusive to be 0.
+This results in the standard mathematical concept of the non-negative integers.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:integer">
+         <xs:minInclusive value="0" id="nonNegativeInteger.minInclusive"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="unsignedLong" id="unsignedLong">
+      <xs:annotation>
+         <xs:appinfo>
+            <hfp:hasProperty name="bounded" value="true"/>
+            <hfp:hasProperty name="cardinality" value="finite"/>
+         </xs:appinfo>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedLong">Built-in derived type.
+The unsignedLong datatype is derived from nonNegativeInteger by setting the value of maxInclusive to be 18446744073709551615.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:nonNegativeInteger">
+         <xs:maxInclusive value="18446744073709551615" id="unsignedLong.maxInclusive"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="unsignedInt" id="unsignedInt">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedInt">Built-in derived type.
+The unsignedInt datatype is derived from unsignedLong by setting the value of maxInclusive to be 4294967295.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:unsignedLong">
+         <xs:maxInclusive value="4294967295" id="unsignedInt.maxInclusive"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="unsignedShort" id="unsignedShort">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedShort">Built-in derived type.
+The unsignedShort datatype is derived from unsignedInt by setting the value of maxInclusive to be 65535.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:unsignedInt">
+         <xs:maxInclusive value="65535" id="unsignedShort.maxInclusive"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="unsignedByte" id="unsignedByte">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedByte">Built-in derived type.
+The unsignedByte datatype is derived from unsignedShort by setting the value of maxInclusive to be 255.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:unsignedShort">
+         <xs:maxInclusive value="255" id="unsignedByte.maxInclusive"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="positiveInteger" id="positiveInteger">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#positiveInteger">Built-in derived type.
+The positiveInteger datatype is derived from nonNegativeInteger by setting the value of minInclusive to be 1.
+This results in the standard mathematical concept of the positive integer numbers.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:restriction base="xs:nonNegativeInteger">
+         <xs:minInclusive value="1" id="positiveInteger.minInclusive"/>
+      </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="yearMonthDuration">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#yearMonthDuration">
+        This type includes just those durations expressed in years and months.
+        Since the pattern given excludes days, hours, minutes, and seconds,
+        the values of this type have a seconds property of zero.  They are
+        totally ordered.
+      </xs:documentation>
+      </xs:annotation>
+      <xs:restriction base="xs:duration">
+         <xs:pattern id="yearMonthDuration.pattern" value="[^DT]*"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="dayTimeDuration">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#dayTimeDuration">
+        This type includes just those durations expressed in days, hours, minutes, and seconds.
+        The pattern given excludes years and months, so the values of this type 
+        have a months property of zero.  They are totally ordered.
+      </xs:documentation>
+      </xs:annotation>
+      <xs:restriction base="xs:duration">
+         <xs:pattern id="dayTimeDuration.pattern" value="[^YM]*(T.*)?"/>
+     </xs:restriction>
+  </xs:simpleType>
+    <xs:simpleType name="dateTimeStamp" id="dateTimeStamp">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#dateTimeStamp">
+        This datatype includes just those dateTime values Whose explicitTimezone
+        is present.  They are totally ordered.
+      </xs:documentation>
+      </xs:annotation>
+      <xs:restriction base="xs:dateTime">
+         <xs:explicitTimezone fixed="true" id="dateTimeStamp.explicitTimezone" value="required"/>
+     </xs:restriction>
+  </xs:simpleType>
+
+</xs:schema>
+    </xsl:variable>
+   <xsl:variable name="system_cache__appinfo:XMLSchema11.xsd">
+      <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           elementFormDefault="qualified"
+           xml:lang="EN"
+           targetNamespace="http://www.w3.org/2001/XMLSchema"
+           version="1.0">
+   <xs:annotation>
+      <xs:documentation>
+    Part 1 version: structures.xsd (rec-20120405)
+    Part 2 version: datatypes.xsd (rec-20120405)
+  </xs:documentation>
+   </xs:annotation>
+
+  <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema11-1/structures.html">
+   The schema corresponding to this document is normative,
+   with respect to the syntactic constraints it expresses in the
+   XML Schema Definition Language.  The documentation (within 'documentation' elements)
+   below, is not normative, but rather highlights important aspects of
+   the W3C Recommendation of which this is a part.
+
+      See below (at the bottom of this document) for information about
+      the revision and namespace-versioning policy governing this
+      schema document.
+
+    </xs:documentation>
+  </xs:annotation>
+  <xs:annotation>
+      <xs:documentation>
+   The simpleType element and all of its members are defined
+   towards the end of this schema document.</xs:documentation>
+   </xs:annotation>
+  <xs:include schemaLocation="primitives.xsd"/>
+  <xs:include schemaLocation="derived.xsd"/>
+  <xs:import namespace="http://www.w3.org/XML/1998/namespace"
+              schemaLocation="xml.xsd">
+      <xs:annotation>
+         <xs:documentation>
+       Get access to the xml: attribute groups for xml:lang
+       as declared on 'schema' and 'documentation' below
+     </xs:documentation>
+      </xs:annotation>
+  </xs:import>
+  <xs:complexType name="openAttrs">
+      <xs:annotation>
+         <xs:documentation>
+       This type is extended by almost all schema types
+       to allow attributes from other namespaces to be
+       added to user schemas.
+     </xs:documentation>
+      </xs:annotation>
+      <xs:complexContent>
+         <xs:restriction base="xs:anyType">
+            <xs:anyAttribute namespace="##other" processContents="lax"/>
+         </xs:restriction>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="annotated">
+      <xs:annotation>
+         <xs:documentation>
+       This type is extended by all types which allow annotation
+       other than &lt;schema&gt; itself
+     </xs:documentation>
+      </xs:annotation>
+      <xs:complexContent>
+         <xs:extension base="xs:openAttrs">
+            <xs:sequence>
+               <xs:element ref="xs:annotation" minOccurs="0"/>
+            </xs:sequence>
+            <xs:attribute name="id" type="xs:ID">
+               <xs:annotation>
+                  <xs:documentation>Specifies an ID.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+         </xs:extension>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:group name="composition">
+      <xs:choice>
+         <xs:element ref="xs:include"/>
+         <xs:element ref="xs:import"/>
+         <xs:element ref="xs:redefine"/>
+         <xs:element ref="xs:override"/>
+         <xs:element ref="xs:annotation"/>
+      </xs:choice>
+  </xs:group>
+  <xs:group name="schemaTop">
+      <xs:annotation>
+         <xs:documentation>
+   This group is for the
+   elements which occur freely at the top level of schemas.
+   All of their types are based on the "annotated" type by extension.</xs:documentation>
+      </xs:annotation>
+      <xs:choice>
+         <xs:group ref="xs:redefinable"/>
+         <xs:element ref="xs:element"/>
+         <xs:element ref="xs:attribute"/>
+         <xs:element ref="xs:notation"/>
+      </xs:choice>
+  </xs:group>
+  <xs:group name="redefinable">
+      <xs:annotation>
+         <xs:documentation>
+   This group is for the
+   elements which can self-redefine (see &lt;redefine&gt; below).</xs:documentation>
+      </xs:annotation>
+      <xs:choice>
+         <xs:element ref="xs:simpleType"/>
+         <xs:element ref="xs:complexType"/>
+         <xs:element ref="xs:group"/>
+         <xs:element ref="xs:attributeGroup"/>
+      </xs:choice>
+  </xs:group>
+  <xs:simpleType name="formChoice">
+      <xs:annotation>
+         <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+      </xs:annotation>
+      <xs:restriction base="xs:NMTOKEN">
+         <xs:enumeration value="qualified"/>
+         <xs:enumeration value="unqualified"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="reducedDerivationControl">
+      <xs:annotation>
+         <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+      </xs:annotation>
+      <xs:restriction base="xs:derivationControl">
+         <xs:enumeration value="extension"/>
+         <xs:enumeration value="restriction"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="derivationSet">
+      <xs:annotation>
+         <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+         <xs:documentation>
+   #all or (possibly empty) subset of {extension, restriction}</xs:documentation>
+      </xs:annotation>
+      <xs:union>
+         <xs:simpleType>
+            <xs:restriction base="xs:token">
+               <xs:enumeration value="#all"/>
+            </xs:restriction>
+         </xs:simpleType>
+         <xs:simpleType>
+            <xs:list itemType="xs:reducedDerivationControl"/>
+         </xs:simpleType>
+      </xs:union>
+  </xs:simpleType>
+  <xs:simpleType name="typeDerivationControl">
+      <xs:annotation>
+         <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+      </xs:annotation>
+      <xs:restriction base="xs:derivationControl">
+         <xs:enumeration value="extension"/>
+         <xs:enumeration value="restriction"/>
+         <xs:enumeration value="list"/>
+         <xs:enumeration value="union"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="fullDerivationSet">
+      <xs:annotation>
+         <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+         <xs:documentation>
+   #all or (possibly empty) subset of {extension, restriction, list, union}</xs:documentation>
+      </xs:annotation>
+      <xs:union>
+         <xs:simpleType>
+            <xs:restriction base="xs:token">
+               <xs:enumeration value="#all"/>
+            </xs:restriction>
+         </xs:simpleType>
+         <xs:simpleType>
+            <xs:list itemType="xs:typeDerivationControl"/>
+         </xs:simpleType>
+      </xs:union>
+  </xs:simpleType>
+  <xs:element name="schema" id="schema">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-schema"> Defines the
+                root element of a                 schema. A schema consists of a set of schema
+                components. A schema is represented in XML by one or more                 schema
+                documents, that is, one or more &lt;schema&gt; element information items. A schema
+                document contains representations for a collection of schema components, e.g. type
+                definitions and                 element declarations, which have a common target
+                namespace. <br/> See more info at
+                http://www.w3.org/TR/xmlschema-1/#element-schema</xs:documentation>
+      </xs:annotation>
+    
+      <xs:complexType>
+         <xs:complexContent>
+            <xs:extension base="xs:openAttrs">
+               <xs:sequence>
+                  <xs:group ref="xs:composition" minOccurs="0" maxOccurs="unbounded"/>
+                  <xs:sequence minOccurs="0">
+                     <xs:element ref="xs:defaultOpenContent"/>
+                     <xs:element ref="xs:annotation" minOccurs="0" maxOccurs="unbounded"/>
+                  </xs:sequence>
+                  <xs:sequence minOccurs="0" maxOccurs="unbounded">
+                     <xs:group ref="xs:schemaTop"/>
+                     <xs:element ref="xs:annotation" minOccurs="0" maxOccurs="unbounded"/>
+                  </xs:sequence>
+               </xs:sequence>
+               <xs:attribute name="targetNamespace" type="xs:anyURI">
+                  <xs:annotation>
+                     <xs:documentation>Most components corresponding to representations
+                                within a given schema                                 will have a
+                                target namespace which corresponds to the targetNamespace attribute.
+                                The                                 appropriate form of schema
+                                document corresponding to a schema whose components have no
+                                target namespace is one which has no targetNamespace attribute
+                                specified at                                 all.</xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+               <xs:attribute name="version" type="xs:token">
+                  <xs:annotation>
+                     <xs:documentation> Optional. Specifies the version of the schema. It is
+                                for user                                 convenience, and the XML
+                                Schema specification defines no semantics for
+                                it.</xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+               <xs:attribute name="finalDefault"
+                             type="xs:fullDerivationSet"
+                             default=""
+                             use="optional">
+                  <xs:annotation>
+                     <xs:documentation> Optional. Specifies the default value of the final
+                                attribute on element,                                 simpleType,
+                                and complexType elements in the target namespace. The final
+                                attribute                                 prevents a specified type
+                                of derivation of an element, simpleType, or complexType
+                                element. For element and complexType elements, this value can
+                                contain #all or a list                                 that is a
+                                subset of extension or restriction. For simpleType elements, this
+                                value can                                 additionally contain list
+                                and union: <ul>
+                                    <li>extension - prevents derivation by extension</li>
+                                    <li>restriction - prevents derivation by restriction</li>
+                                    <li>list - prevents derivation by list </li>
+                                    <li>union - prevents derivation by union </li>
+                                    <li>#all - prevents all derivation.</li>
+                                </ul> 
+                     </xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+               <xs:attribute name="blockDefault"
+                             type="xs:blockSet"
+                             default=""
+                             use="optional">
+                  <xs:annotation>
+                     <xs:documentation> Optional. Specifies the default value of the block
+                                attribute on element                                 and complexType
+                                elements in the target namespace. The block attribute prevents a
+                                complex                                 type (or element) that has a
+                                specified type of derivation from being used in place of
+                                this complex type. This value can contain #all or a list that is a
+                                subset of extension,                                 restriction, or
+                                substitution: <ul>
+                                    <li>extension - prevents complex types derived by extension </li>
+                                    <li>restriction - prevents complex types derived by
+                                        restriction</li>
+                                    <li>substitution - prevents substitution of elements</li>
+                                    <li>#all - prevents all derived complex types.</li>
+                                </ul> 
+                     </xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+               <xs:attribute name="attributeFormDefault"
+                             type="xs:formChoice"
+                             default="unqualified"
+                             use="optional">
+                  <xs:annotation>
+                     <xs:documentation>Optional. The form for attributes declared in the
+                                target namespace of this                                 schema. The
+                                value must be "qualified" or "unqualified". Default is
+                                "unqualified". <ul>
+                                    <li>"unqualified" indicates that attributes from the target
+                                        namespace are not
+                                        required to be qualified with the namespace prefix.</li>
+                                    <li> "qualified" indicates that attributes from the target
+                                        namespace must be
+                                        qualified with the namespace prefix.</li>
+                                </ul> 
+                     </xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+               <xs:attribute name="elementFormDefault"
+                             type="xs:formChoice"
+                             default="unqualified"
+                             use="optional">
+                  <xs:annotation>
+                     <xs:documentation>Optional. The form for elements declared in the target
+                                namespace of this                                 schema. The value
+                                must be "qualified" or "unqualified". Default is "unqualified". <ul>
+                                    <li>"unqualified" indicates that elements from the target
+                                        namespace are not required
+                                        to be qualified with the namespace prefix. </li>
+                                    <li>"qualified" indicates that elements from the target
+                                        namespace must be qualified
+                                        with the namespace prefix.</li>
+                                </ul> 
+                     </xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+               <xs:attribute name="defaultAttributes" type="xs:QName">
+                  <xs:annotation>
+                     <xs:documentation>Specify a set of attributes that apply to every complexType in a schema document.</xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+               <xs:attribute name="xpathDefaultNamespace"
+                             type="xs:xpathDefaultNamespace"
+                             default="##local"
+                             use="optional">
+                  <xs:annotation>
+                     <xs:documentation>The default namespace used when evalueates the XPath expression.</xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+               <xs:attribute name="id" type="xs:ID">
+                  <xs:annotation>
+                     <xs:documentation> Optional. Specifies a unique ID for the element. It
+                                is for user                                 convenience, and the XML
+                                Schema specification defines no semantics for
+                                it.</xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+               <xs:attribute ref="xml:lang"/>
+            </xs:extension>
+         </xs:complexContent>
+      </xs:complexType>
+      <xs:key name="element">
+         <xs:selector xpath="xs:element"/>
+         <xs:field xpath="@name"/>
+      </xs:key>
+      <xs:key name="attribute">
+         <xs:selector xpath="xs:attribute"/>
+         <xs:field xpath="@name"/>
+      </xs:key>
+      <xs:key name="type">
+         <xs:selector xpath="xs:complexType|xs:simpleType"/>
+         <xs:field xpath="@name"/>
+      </xs:key>
+      <xs:key name="group">
+         <xs:selector xpath="xs:group"/>
+         <xs:field xpath="@name"/>
+      </xs:key>
+      <xs:key name="attributeGroup">
+         <xs:selector xpath="xs:attributeGroup"/>
+         <xs:field xpath="@name"/>
+      </xs:key>
+      <xs:key name="notation">
+         <xs:selector xpath="xs:notation"/>
+         <xs:field xpath="@name"/>
+      </xs:key>
+      <xs:key name="identityConstraint">
+         <xs:selector xpath=".//xs:key|.//xs:unique|.//xs:keyref"/>
+         <xs:field xpath="@name"/>
+      </xs:key>
+  </xs:element>
+  <xs:simpleType name="allNNI">
+      <xs:annotation>
+         <xs:documentation>
+   for maxOccurs</xs:documentation>
+      </xs:annotation>
+      <xs:union memberTypes="xs:nonNegativeInteger">
+         <xs:simpleType>
+            <xs:restriction base="xs:NMTOKEN">
+               <xs:enumeration value="unbounded"/>
+            </xs:restriction>
+         </xs:simpleType>
+      </xs:union>
+  </xs:simpleType>
+  <xs:attributeGroup name="occurs">
+      <xs:annotation>
+         <xs:documentation>
+   for all particles</xs:documentation>
+      </xs:annotation>
+      <xs:attribute name="minOccurs"
+                    type="xs:nonNegativeInteger"
+                    default="1"
+                    use="optional">
+         <xs:annotation>
+            <xs:documentation>Specifies the minimum number of occurrences for this particle.
+                    Default is                     1.</xs:documentation>
+         </xs:annotation>
+      </xs:attribute>
+      <xs:attribute name="maxOccurs" type="xs:allNNI" default="1" use="optional">
+         <xs:annotation>
+            <xs:documentation>Specifies the maximum number of occurrences for this particle.
+                    Default is                     1.</xs:documentation>
+         </xs:annotation>
+      </xs:attribute>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="defRef">
+      <xs:annotation>
+         <xs:documentation>
+   for element, group and attributeGroup,
+   which both define and reference</xs:documentation>
+      </xs:annotation>
+      <xs:attribute name="name" type="xs:NCName">
+         <xs:annotation>
+            <xs:documentation>Specifies a name.</xs:documentation>
+         </xs:annotation>
+      </xs:attribute>
+      <xs:attribute name="ref" type="xs:QName">
+         <xs:annotation>
+            <xs:documentation>Specifies a reference.</xs:documentation>
+         </xs:annotation>
+      </xs:attribute>
+  </xs:attributeGroup>
+  <xs:group name="typeDefParticle">
+      <xs:annotation>
+         <xs:documentation>
+   'complexType' uses this</xs:documentation>
+      </xs:annotation>
+      <xs:choice>
+         <xs:element name="group" type="xs:groupRef">
+            <xs:annotation>
+               <xs:documentation>Specifies a group reference.</xs:documentation>
+            </xs:annotation>
+         </xs:element>
+         <xs:element ref="xs:all"/>
+         <xs:element ref="xs:choice"/>
+         <xs:element ref="xs:sequence"/>
+      </xs:choice>
+  </xs:group>
+  <xs:group name="nestedParticle">
+      <xs:choice>
+         <xs:element name="element" type="xs:localElement">
+            <xs:annotation>
+               <xs:documentation>Specifies a local element or a reference to a global
+                        element.</xs:documentation>
+            </xs:annotation>
+         </xs:element>
+         <xs:element name="group" type="xs:groupRef">
+            <xs:annotation>
+               <xs:documentation>Specifies a group reference.</xs:documentation>
+            </xs:annotation>
+         </xs:element>
+      
+         <xs:element ref="xs:choice"/>
+         <xs:element ref="xs:sequence"/>
+         <xs:element ref="xs:any"/>
+      </xs:choice>
+  </xs:group>
+  <xs:group name="particle">
+      <xs:choice>
+         <xs:element name="element" type="xs:localElement">
+            <xs:annotation>
+               <xs:documentation>Specifies a local element or a reference to a global
+                        element.</xs:documentation>
+            </xs:annotation>
+         </xs:element>
+         <xs:element name="group" type="xs:groupRef">
+            <xs:annotation>
+               <xs:documentation>Specifies a group reference.</xs:documentation>
+            </xs:annotation>
+         </xs:element>
+         <xs:element ref="xs:all"/>
+         <xs:element ref="xs:choice"/>
+         <xs:element ref="xs:sequence"/>
+         <xs:element ref="xs:any"/>
+      </xs:choice>
+  </xs:group>
+  <xs:complexType name="attribute">
+      <xs:complexContent>
+         <xs:extension base="xs:annotated">
+            <xs:sequence>
+               <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0">
+                  <xs:annotation>
+                     <xs:documentation>Specifies an anonymous local simple type for the
+                                attribute in case the                                 attribute does
+                                not have the type attribute to specify a built-in or a pre-declared
+                                type.                                 The default when no simple
+                                type definition is referenced or provided is the simple
+                                ur-type definition, which imposes no constraints at
+                                all.</xs:documentation>
+                  </xs:annotation>
+               </xs:element>
+            </xs:sequence>
+            <xs:attributeGroup ref="xs:defRef"/>
+            <xs:attribute name="type" type="xs:QName">
+               <xs:annotation>
+                  <xs:documentation>The type attribute is used when the declaration can use a
+                            built-in or                             pre-declared simple type
+                            definition. Otherwise an anonymous &lt;simpleType&gt; is
+                            provided inline. The default when no simple type definition is
+                            referenced or provided is the                             simple ur-type
+                            definition, which imposes no constraints at all.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="use" default="optional" use="optional">
+               <xs:annotation>
+                  <xs:documentation>Specifies the attribute use: prohibited, optional or
+                            required, default is
+                            optional.</xs:documentation>
+               </xs:annotation>
+               <xs:simpleType>
+                  <xs:restriction base="xs:NMTOKEN">
+                     <xs:enumeration value="prohibited"/>
+                     <xs:enumeration value="optional"/>
+                     <xs:enumeration value="required"/>
+                  </xs:restriction>
+               </xs:simpleType>
+            </xs:attribute>
+            <xs:attribute name="default" type="xs:string">
+               <xs:annotation>
+                  <xs:documentation>The default attribute specifies that the attribute is to
+                            appear                             unconditionally in the
+                            post-schema-validation infoset, with the supplied value used whenever
+                            the attribute is not actually present.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="fixed" type="xs:string">
+               <xs:annotation>
+                  <xs:documentation>The fixed attribute indicates that the attribute value if
+                            present must equal                             the supplied constraint
+                            value, and if absent receives the supplied value as for
+                            default.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="form" type="xs:formChoice">
+               <xs:annotation>
+                  <xs:documentation>Specifies if a local attribute belongs to the schema
+                            target namespace or has                             no namespace. The
+                            value must be "qualified" or "unqualified". The default value is
+                            provided                             by the attributeFormDefault
+                            attribute on the enclosing &lt;schema&gt;
+                            element.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="targetNamespace" type="xs:anyURI">
+               <xs:annotation>
+                  <xs:documentation>Specifies the target namespace for local attribute declarations. 
+                The namespace URI may be different from the schema target namespace.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+          
+            <xs:attribute name="inheritable" type="xs:boolean">
+               <xs:annotation>
+                  <xs:documentation>Specifies if the attribute is inheritable. Inheritable attributes
+                can be used by &lt;alternative&gt; element on descendant elements.
+            </xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+         </xs:extension>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="topLevelAttribute">
+      <xs:complexContent>
+         <xs:restriction base="xs:attribute">
+            <xs:sequence>
+               <xs:element ref="xs:annotation" minOccurs="0"/>
+               <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0">
+                  <xs:annotation>
+                     <xs:documentation> Specifies an anonymous local simple type for the
+                                attribute in case the                                 attribute does
+                                not have the type attribute to specify a built-in or a pre-declared
+                                type.                                 The default when no simple
+                                type definition is referenced or provided is the simple
+                                ur-type definition, which imposes no constraints at all.
+                            </xs:documentation>
+                  </xs:annotation>
+               </xs:element>
+            </xs:sequence>
+            <xs:attribute name="ref" use="prohibited"/>
+            <xs:attribute name="form" use="prohibited"/>
+            <xs:attribute name="use" use="prohibited"/>
+            <xs:attribute name="targetNamespace" use="prohibited"/>
+            <xs:attribute name="name" type="xs:NCName" use="required">
+               <xs:annotation>
+                  <xs:documentation>Specifies the required top level attribute
+                            name.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="inheritable" type="xs:boolean">
+               <xs:annotation>
+                  <xs:documentation>Specifies if the attribute is inheritable. Inheritable attributes
+                can be used by &lt;alternative&gt; element on descendant elements.
+            </xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:anyAttribute namespace="##other" processContents="lax"/>
+         </xs:restriction>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:group name="attrDecls">
+      <xs:sequence>
+         <xs:choice minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="attribute" type="xs:attribute">
+               <xs:annotation>
+                  <xs:documentation>Specifies an attribute.</xs:documentation>
+               </xs:annotation>
+            </xs:element>
+            <xs:element name="attributeGroup" type="xs:attributeGroupRef">
+               <xs:annotation>
+                  <xs:documentation>Specifies an attribute group reference.</xs:documentation>
+               </xs:annotation>
+            </xs:element>
+         </xs:choice>
+         <xs:element ref="xs:anyAttribute" minOccurs="0"/>
+      </xs:sequence>
+  </xs:group>
+  <xs:element name="anyAttribute" id="anyAttribute">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-anyAttribute">
+                Enables the author to                 extend the XML document with attributes not
+                specified by the schema.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:complexType>
+         <xs:complexContent>
+            <xs:extension base="xs:wildcard">
+               <xs:attribute name="notQName" type="xs:qnameListA" use="optional">
+                  <xs:annotation>
+                     <xs:documentation>Specify an element or attribute that is not allowed.</xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+            </xs:extension>
+         </xs:complexContent>
+      </xs:complexType>
+  </xs:element>
+  <xs:group name="assertions">
+      <xs:sequence>
+         <xs:element name="assert"
+                     type="xs:assertion"
+                     minOccurs="0"
+                     maxOccurs="unbounded">
+            <xs:annotation>
+               <xs:documentation>The element is used to make assertions about element and attribute
+                values.</xs:documentation>
+            </xs:annotation>
+         </xs:element>
+      </xs:sequence>
+  </xs:group>
+  <xs:complexType name="assertion">
+      <xs:complexContent>
+         <xs:extension base="xs:annotated">
+            <xs:attribute name="test" type="xs:string">
+               <xs:annotation>
+                  <xs:documentation>Specifies the XPath expression to be evaluated when the element is validated.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="xpathDefaultNamespace" type="xs:xpathDefaultNamespace">
+               <xs:annotation>
+                  <xs:documentation>The default namespace used when evalueates the XPath expression.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+         </xs:extension>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:group name="complexTypeModel">
+      <xs:choice>
+         <xs:element ref="xs:simpleContent"/>
+         <xs:element ref="xs:complexContent"/>
+         <xs:sequence>
+            <xs:annotation>
+               <xs:documentation>
+   This branch is short for
+   &lt;complexContent&gt;
+   &lt;restriction base="xs:anyType"&gt;
+   ...
+   &lt;/restriction&gt;
+   &lt;/complexContent&gt;</xs:documentation>
+            </xs:annotation>
+            <xs:element ref="xs:openContent" minOccurs="0"/>
+            <xs:group ref="xs:typeDefParticle" minOccurs="0"/>
+            <xs:group ref="xs:attrDecls"/>
+            <xs:group ref="xs:assertions"/>
+         </xs:sequence>
+      </xs:choice>
+  </xs:group>
+  <xs:complexType name="complexType" abstract="true">
+      <xs:complexContent>
+         <xs:extension base="xs:annotated">
+            <xs:group ref="xs:complexTypeModel"/>
+            <xs:attribute name="name" type="xs:NCName">
+               <xs:annotation>
+                  <xs:documentation>
+      Will be restricted to required or prohibited</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="mixed" type="xs:boolean" use="optional">
+               <xs:annotation>
+                  <xs:documentation>
+      Not allowed if simpleContent child is chosen.
+      May be overridden by setting on complexContent child.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="abstract"
+                          type="xs:boolean"
+                          default="false"
+                          use="optional">
+               <xs:annotation>
+                  <xs:documentation>Specifies whether the complex type is abstract or not.
+                            Default is false.                             Complex types for which
+                            abstract is true must not be used as the type definition for the
+                            validation of element information items. Abstract complex types can be
+                            used as base type                             definitions, or even as
+                            the type definitions of element declarations, provided in every case
+                            a concrete derived type definition is used for validation.
+                        </xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="final" type="xs:derivationSet">
+               <xs:annotation>
+                  <xs:documentation> A complex type with an empty specification for final can
+                            be used as a base                             type definition for other
+                            types derived by either of extension or restriction; the explicit
+                            values extension, and restriction prevent further derivations by
+                            extension and restriction                             respectively. If
+                            all values are specified, then the complex type is said to be final,
+                            because no further derivations are possible. Finality is not inherited,
+                            that is, a type                             definition derived by
+                            restriction from a type definition which is final for extension is not
+                            itself, in the absence of any explicit final attribute of its own, final
+                            for anything.                         </xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="block" type="xs:derivationSet">
+               <xs:annotation>
+                  <xs:documentation> Specifies the value of the block attribute on this
+                            complexType The block                             attribute prevents a
+                            complex type that has a specified type of derivation from being used in
+                            place of this complex type. This value can contain #all or a list that
+                            is a subset of                             extension and restriction: <ul>
+                                <li>extension - prevents complex types derived by extension </li>
+                                <li>restriction - prevents complex types derived by restriction</li>
+                                <li>#all - prevents all derived complex types.</li>
+                            </ul> 
+                  </xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="defaultAttributesApply"
+                          type="xs:boolean"
+                          default="true"
+                          use="optional">
+               <xs:annotation>
+                  <xs:documentation>The &lt;schema&gt; element can carry a defaultAttributes attribute, which
+                identifies a named Attribute Group Definition; each complex type defined in the
+                schema document then automatically includes that attribute group, unless this is
+                overridden by the defaultAttributesApply attribute on the &lt;complexType&gt; element.
+                </xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+         </xs:extension>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="topLevelComplexType">
+      <xs:complexContent>
+         <xs:restriction base="xs:complexType">
+            <xs:sequence>
+               <xs:element ref="xs:annotation" minOccurs="0"/>
+               <xs:group ref="xs:complexTypeModel"/>
+            </xs:sequence>
+            <xs:attribute name="name" type="xs:NCName" use="required">
+               <xs:annotation>
+                  <xs:documentation>Defines the name of the top level complex type. No complex
+                            type definition can                             have the same name as
+                            another simple or complex type definition.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:anyAttribute namespace="##other" processContents="lax"/>
+         </xs:restriction>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="localComplexType">
+      <xs:complexContent>
+         <xs:restriction base="xs:complexType">
+            <xs:sequence>
+               <xs:element ref="xs:annotation" minOccurs="0"/>
+               <xs:group ref="xs:complexTypeModel"/>
+            </xs:sequence>
+            <xs:attribute name="name" use="prohibited"/>
+            <xs:attribute name="abstract" use="prohibited"/>
+            <xs:attribute name="final" use="prohibited"/>
+            <xs:attribute name="block" use="prohibited"/>
+            <xs:anyAttribute namespace="##other" processContents="lax"/>
+         </xs:restriction>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="restrictionType">
+      <xs:complexContent>
+         <xs:extension base="xs:annotated">
+            <xs:sequence>
+               <xs:choice minOccurs="0">
+            
+                  <xs:sequence>
+                     <xs:element ref="xs:openContent" minOccurs="0"/>
+                     <xs:group ref="xs:typeDefParticle"/>
+                  </xs:sequence>
+                  <xs:group ref="xs:simpleRestrictionModel"/>
+               </xs:choice>
+               <xs:group ref="xs:attrDecls"/>
+               <xs:group ref="xs:assertions"/>
+            </xs:sequence>
+            <xs:attribute name="base" type="xs:QName" use="required">
+               <xs:annotation>
+                  <xs:documentation>Specifies the base type for the
+                            restriction.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+         </xs:extension>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="complexRestrictionType">
+      <xs:complexContent>
+         <xs:restriction base="xs:restrictionType">
+            <xs:sequence>
+               <xs:element ref="xs:annotation" minOccurs="0"/>
+               <xs:choice minOccurs="0">
+                  <xs:annotation>
+                     <xs:documentation>This choice is added simply to
+                   make this a valid restriction per the REC</xs:documentation>
+                  </xs:annotation>
+            
+                  <xs:sequence>
+                     <xs:element ref="xs:openContent" minOccurs="0"/>
+                     <xs:group ref="xs:typeDefParticle"/>
+                  </xs:sequence>
+               </xs:choice>
+               <xs:group ref="xs:attrDecls"/>
+               <xs:group ref="xs:assertions"/>
+            </xs:sequence>
+            <xs:anyAttribute namespace="##other" processContents="lax"/>
+         </xs:restriction>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="extensionType">
+      <xs:complexContent>
+         <xs:extension base="xs:annotated">
+            <xs:sequence>
+               <xs:element ref="xs:openContent" minOccurs="0"/>
+               <xs:group ref="xs:typeDefParticle" minOccurs="0"/>
+               <xs:group ref="xs:attrDecls"/>
+               <xs:group ref="xs:assertions"/>
+            </xs:sequence>
+            <xs:attribute name="base" type="xs:QName" use="required">
+               <xs:annotation>
+                  <xs:documentation>Specifies the base type for the
+                            extension.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+        
+         </xs:extension>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="complexContent" id="complexContent">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexContent">
+                Defines extensions or                 restrictions on a complex type that contains
+                mixed content or elements only. </xs:documentation>
+      </xs:annotation>
+    
+      <xs:complexType>
+         <xs:complexContent>
+            <xs:extension base="xs:annotated">
+               <xs:choice>
+                  <xs:element name="restriction" type="xs:complexRestrictionType">
+                     <xs:annotation>
+                        <xs:documentation>Defines a restriction.</xs:documentation>
+                     </xs:annotation>
+                  </xs:element>
+                  <xs:element name="extension" type="xs:extensionType">
+                     <xs:annotation>
+                        <xs:documentation>Defines an extension.</xs:documentation>
+                     </xs:annotation>
+                  </xs:element>
+               </xs:choice>
+               <xs:attribute name="mixed" type="xs:boolean">
+                  <xs:annotation>
+                     <xs:documentation>
+       Overrides any setting on complexType parent.</xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+            </xs:extension>
+         </xs:complexContent>
+      </xs:complexType>
+  </xs:element>
+  <xs:element name="openContent" id="openContent">
+      <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema11-1/structures.html#element-openContent">
+                Specifies that any element can appear interleaved among the declared elements.
+            </xs:documentation>
+        </xs:annotation>
+    
+      <xs:complexType>
+         <xs:complexContent>
+            <xs:extension base="xs:annotated">
+               <xs:sequence>
+                  <xs:element name="any" minOccurs="0" type="xs:wildcard">
+                     <xs:annotation>
+                        <xs:documentation>Wildcard used to specify the elements accepted by open content.</xs:documentation>
+                     </xs:annotation>
+                  </xs:element>
+               </xs:sequence>
+               <xs:attribute name="mode" default="interleave" use="optional">
+                  <xs:annotation>
+                     <xs:documentation>Specifies where the extension elements can be inserted.
+                The value must be "interleave", "suffix" or "none". Default is "interleave".</xs:documentation>
+                  </xs:annotation>
+                  <xs:simpleType>
+                     <xs:restriction base="xs:NMTOKEN">
+                        <xs:enumeration value="none"/>
+                        <xs:enumeration value="interleave"/>
+                        <xs:enumeration value="suffix"/>
+                     </xs:restriction>
+                  </xs:simpleType>
+               </xs:attribute>
+          
+            </xs:extension>
+         </xs:complexContent>
+      </xs:complexType>
+  </xs:element>
+  <xs:element name="defaultOpenContent" id="defaultOpenContent">
+      <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema11-1/structures.html#element-defaultOpenContent">
+                Specifies that any element can appear interleaved among the declared elements.
+            </xs:documentation>
+        </xs:annotation>
+    
+      <xs:complexType>
+         <xs:complexContent>
+            <xs:extension base="xs:annotated">
+               <xs:sequence>
+                  <xs:element name="any" type="xs:wildcard">
+                     <xs:annotation>
+                        <xs:documentation>Wildcard used to specify the elements accepted by default open content.</xs:documentation>
+                     </xs:annotation>
+                  </xs:element>
+               </xs:sequence>
+               <xs:attribute name="appliesToEmpty"
+                             type="xs:boolean"
+                             default="false"
+                             use="optional">
+                  <xs:annotation>
+                     <xs:documentation>Controls whether or not extension elements can be inserted into empty elements.</xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+               <xs:attribute name="mode" default="interleave" use="optional">
+                  <xs:annotation>
+                     <xs:documentation>Specifies where the extension elements can be inserted.</xs:documentation>
+                  </xs:annotation>
+                  <xs:simpleType>
+                     <xs:restriction base="xs:NMTOKEN">
+                        <xs:enumeration value="interleave"/>
+                        <xs:enumeration value="suffix"/>
+                     </xs:restriction>
+                  </xs:simpleType>
+               </xs:attribute>
+          
+            </xs:extension>
+         </xs:complexContent>
+      </xs:complexType>
+  </xs:element>
+  <xs:complexType name="simpleRestrictionType">
+      <xs:complexContent>
+         <xs:restriction base="xs:restrictionType">
+            <xs:sequence>
+               <xs:element ref="xs:annotation" minOccurs="0"/>
+               <xs:choice minOccurs="0">
+                  <xs:annotation>
+                     <xs:documentation>This choice is added simply to
+                   make this a valid restriction per the REC</xs:documentation>
+                  </xs:annotation>
+                  <xs:group ref="xs:simpleRestrictionModel"/>
+               </xs:choice>
+               <xs:group ref="xs:attrDecls"/>
+               <xs:group ref="xs:assertions"/>
+            </xs:sequence>
+            <xs:anyAttribute namespace="##other" processContents="lax"/>
+         </xs:restriction>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="simpleExtensionType">
+      <xs:complexContent>
+         <xs:restriction base="xs:extensionType">
+            <xs:sequence>
+               <xs:annotation>
+                  <xs:documentation>
+      No typeDefParticle group reference</xs:documentation>
+               </xs:annotation>
+               <xs:element ref="xs:annotation" minOccurs="0"/>
+               <xs:group ref="xs:attrDecls"/>
+               <xs:group ref="xs:assertions"/>
+            </xs:sequence>
+            <xs:anyAttribute namespace="##other" processContents="lax"/>
+         </xs:restriction>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="simpleContent" id="simpleContent">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-simpleContent">
+                Contains extensions or                 restrictions on a text-only complex type or
+                on a simple type as content and contains no
+                elements.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:complexType>
+         <xs:complexContent>
+            <xs:extension base="xs:annotated">
+               <xs:choice>
+                  <xs:element name="restriction" type="xs:simpleRestrictionType">
+                     <xs:annotation>
+                        <xs:documentation>Defines restrictions on a simpleType,
+                                    simpleContent, or a
+                                    complexContent. </xs:documentation>
+                     </xs:annotation>
+                  </xs:element>
+                  <xs:element name="extension" type="xs:simpleExtensionType">
+                     <xs:annotation>
+                        <xs:documentation>Extends an existing simpleType or complexType
+                                    element.                                 </xs:documentation>
+                     </xs:annotation>
+                  </xs:element>
+               </xs:choice>
+            </xs:extension>
+         </xs:complexContent>
+      </xs:complexType>
+  </xs:element>
+  <xs:element name="complexType" type="xs:topLevelComplexType" id="complexType">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexType">
+                Defines a top level                 complex type.<br/> Complex Type Definitions
+                provide for: <ul>
+                    <li>Constraining element information items by providing Attribute Declarations
+                        governing the                         appearance and content of
+                        attributes.</li>
+                    <li>Constraining element information item children to be empty, or to conform to
+                        a specified                         element-only or mixed content model, or
+                        else constraining the character information item
+                        children to conform to a specified simple type definition.</li>
+                    <li>Using the mechanisms of Type Definition Hierarchy to derive a complex type
+                        from another simple                         or complex type.</li>
+                    <li>Specifying post-schema-validation infoset contributions for elements.</li>
+                    <li>Limiting the ability to derive additional types from a given complex
+                        type.</li>
+                    <li>Controlling the permission to substitute, in an instance, elements of a
+                        derived type for                         elements declared in a content
+                        model to be of a given complex type.</li>
+                </ul> 
+         </xs:documentation>
+      </xs:annotation>
+    
+  </xs:element>
+  <xs:simpleType name="blockSet">
+      <xs:annotation>
+         <xs:documentation>
+    A utility type, not for public use</xs:documentation>
+         <xs:documentation>
+    #all or (possibly empty) subset of {substitution, extension,
+    restriction}</xs:documentation>
+      </xs:annotation>
+      <xs:union>
+         <xs:simpleType>
+            <xs:restriction base="xs:token">
+               <xs:enumeration value="#all"/>
+            </xs:restriction>
+         </xs:simpleType>
+         <xs:simpleType>
+            <xs:list>
+               <xs:simpleType>
+                  <xs:restriction base="xs:derivationControl">
+                     <xs:enumeration value="extension"/>
+                     <xs:enumeration value="restriction"/>
+                     <xs:enumeration value="substitution"/>
+                  </xs:restriction>
+               </xs:simpleType>
+            </xs:list>
+         </xs:simpleType>
+      </xs:union>
+  </xs:simpleType>
+  <xs:complexType name="element" abstract="true">
+      <xs:annotation>
+         <xs:documentation>
+   The element element can be used either
+   at the top level to define an element-type binding globally,
+   or within a content model to either reference a globally-defined
+   element or type or declare an element-type binding locally.
+   The ref form is not allowed at the top level.</xs:documentation>
+      </xs:annotation>
+      <xs:complexContent>
+         <xs:extension base="xs:annotated">
+            <xs:sequence>
+               <xs:choice minOccurs="0">
+                  <xs:element name="simpleType" type="xs:localSimpleType">
+                     <xs:annotation>
+                        <xs:documentation>Specifies a local simple type.</xs:documentation>
+                     </xs:annotation>
+                  </xs:element>
+                  <xs:element name="complexType" type="xs:localComplexType">
+                     <xs:annotation>
+                        <xs:documentation>Defines a local complex type. Complex Type
+                                    Definitions provide for: <ul>
+                                        <li>Constraining element information items by providing
+                                            Attribute Declarations
+                                            governing the appearance and content of attributes.</li>
+                                        <li>Constraining element information item children to be
+                                            empty, or to conform to
+                                            a specified element-only or mixed content model, or else
+                                            constraining the
+                                            character information item children to conform to a
+                                            specified simple type
+                                            definition.</li>
+                                        <li>Using the mechanisms of Type Definition Hierarchy to
+                                            derive a complex type
+                                            from another simple or complex type.</li>
+                                        <li>Specifying post-schema-validation infoset contributions
+                                            for elements.</li>
+                                        <li>Limiting the ability to derive additional types from a
+                                            given complex
+                                            type.</li>
+                                        <li>Controlling the permission to substitute, in an
+                                            instance, elements of a
+                                            derived type for elements declared in a content model to
+                                            be of a given
+                                            complex type.</li>
+                                    </ul> 
+                        </xs:documentation>
+                     </xs:annotation>
+                  </xs:element>
+               </xs:choice>
+               <xs:element name="alternative"
+                           type="xs:altType"
+                           minOccurs="0"
+                           maxOccurs="unbounded">
+                  <xs:annotation>
+                     <xs:documentation>The &lt;alternative&gt; element is used specify an element a choice
+                types, depending on the value of the attributes. </xs:documentation>
+                  </xs:annotation>
+               </xs:element>
+               <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+            </xs:sequence>
+            <xs:attributeGroup ref="xs:defRef"/>
+            <xs:attribute name="type" type="xs:QName">
+               <xs:annotation>
+                  <xs:documentation>Specifies a type definition for this element by reference
+                            to a defined                             type.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+        
+            <xs:attribute name="substitutionGroup">
+               <xs:annotation>
+                  <xs:documentation>Defines the substitution group head element. XML Schema
+                            provides a mechanism,                             called substitution
+                            groups, that allows elements to be substituted for other elements. More
+                            specifically, elements can be assigned to a special group of elements
+                            that are said to be                             substitutable for a
+                            particular named element called the head element. (Note that the head
+                            element must be declared as a global element.).</xs:documentation>
+               </xs:annotation>
+               <xs:simpleType>
+                  <xs:list itemType="xs:QName"/>
+               </xs:simpleType>
+            </xs:attribute>
+            <xs:attributeGroup ref="xs:occurs"/>
+            <xs:attribute name="default" type="xs:string">
+               <xs:annotation>
+                  <xs:documentation>Specifies a default value for this element. The element
+                            must have either a                             simple type or a complex
+                            type emptiable and with mixed content.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="fixed" type="xs:string">
+               <xs:annotation>
+                  <xs:documentation>Specifies a fixed value for this element. If fixed is
+                            specified, then the                             element's content must
+                            either be empty, in which case fixed behaves as default, or its value
+                            must match the supplied constraint value.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="nillable" type="xs:boolean" use="optional">
+               <xs:annotation>
+                  <xs:documentation>Specifies if the element is nillable, default is false. If
+                            nillable is true                             then an element may also be
+                            valid if it specifies xsi:nil="true" even if it has no text or
+                            element content despite a content type which would otherwise require
+                            content.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="abstract"
+                          type="xs:boolean"
+                          default="false"
+                          use="optional">
+               <xs:annotation>
+                  <xs:documentation>Specifies if the element is abstract, default is false.
+                            Element declarations                             for which abstract is
+                            true can appear in content models only when substitution is
+                            allowed.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="final" type="xs:derivationSet">
+               <xs:annotation>
+                  <xs:documentation>Specifies the value of the final attribute for this
+                            element. The final                             attribute prevents a
+                            specified type of derivation of an element. For elements this value can
+                            contain #all or a list that is a subset of extension or restriction. <ul>
+                                <li>extension - prevents derivation by extension</li>
+                                <li>restriction - prevents derivation by restriction</li>
+                                <li>#all - prevents all derivation.</li>
+                            </ul> 
+                  </xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="block" type="xs:blockSet">
+               <xs:annotation>
+                  <xs:documentation>Specifies the value of the block attribute on this
+                            element. The block                             attribute prevents an
+                            element that has a specified type of derivation from being used in
+                            place of this element. This value can contain #all or a list that is a
+                            subset of extension,                             restriction, or
+                            substitution.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="form" type="xs:formChoice">
+               <xs:annotation>
+                  <xs:documentation>Specifies the target namespace for this element. The value
+                            must be "qualified"                             or "unqualified". The
+                            default value is provided by the elementFormDefault attribute on the
+                            enclosing &lt;schema&gt; element. <ul>
+                                <li>"unqualified" indicates that a local element belongs to no
+                                    namespace.</li>
+                                <li>"qualified" indicates that a local element belongs to the schema
+                                    target                                     namespace.</li>
+                            </ul> 
+                  </xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="targetNamespace" type="xs:anyURI">
+               <xs:annotation>
+                  <xs:documentation>Specifies the target namespace for local element declarations. 
+                The namespace URI may be different from the schema target namespace.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+         </xs:extension>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="topLevelElement">
+      <xs:complexContent>
+         <xs:restriction base="xs:element">
+            <xs:sequence>
+               <xs:element ref="xs:annotation" minOccurs="0"/>
+               <xs:choice minOccurs="0">
+                  <xs:element name="simpleType" type="xs:localSimpleType">
+                     <xs:annotation>
+                        <xs:documentation>Specifies a local simple type.</xs:documentation>
+                     </xs:annotation>
+                  </xs:element>
+                  <xs:element name="complexType" type="xs:localComplexType">
+                     <xs:annotation>
+                        <xs:documentation>Defines a local complex type. Complex Type
+                                    Definitions provide for: <ul>
+                                        <li>Constraining element information items by providing
+                                            Attribute Declarations
+                                            governing the appearance and content of attributes.</li>
+                                        <li>Constraining element information item children to be
+                                            empty, or to conform to
+                                            a specified element-only or mixed content model, or else
+                                            constraining the
+                                            character information item children to conform to a
+                                            specified simple type
+                                            definition.</li>
+                                        <li>Using the mechanisms of Type Definition Hierarchy to
+                                            derive a complex type
+                                            from another simple or complex type.</li>
+                                        <li>Specifying post-schema-validation infoset contributions
+                                            for elements.</li>
+                                        <li>Limiting the ability to derive additional types from a
+                                            given complex
+                                            type.</li>
+                                        <li>Controlling the permission to substitute, in an
+                                            instance, elements of a
+                                            derived type for elements declared in a content model to
+                                            be of a given
+                                            complex type.</li>
+                                    </ul> 
+                        </xs:documentation>
+                     </xs:annotation>
+                  </xs:element>
+               </xs:choice>
+               <xs:element name="alternative"
+                           type="xs:altType"
+                           minOccurs="0"
+                           maxOccurs="unbounded">
+                  <xs:annotation>
+                     <xs:documentation>The &lt;alternative&gt; element is used specify an element a choice
+                types, depending on the value of the attributes. </xs:documentation>
+                  </xs:annotation>
+               </xs:element>
+               <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+            </xs:sequence>
+            <xs:attribute name="ref" use="prohibited"/>
+            <xs:attribute name="form" use="prohibited"/>
+            <xs:attribute name="targetNamespace" use="prohibited"/>
+            <xs:attribute name="minOccurs" use="prohibited"/>
+            <xs:attribute name="maxOccurs" use="prohibited"/>
+            <xs:attribute name="name" type="xs:NCName" use="required">
+               <xs:annotation>
+                  <xs:documentation>Specifies the required top level element
+                            name.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:anyAttribute namespace="##other" processContents="lax"/>
+         </xs:restriction>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="localElement">
+      <xs:complexContent>
+         <xs:restriction base="xs:element">
+            <xs:sequence>
+               <xs:element ref="xs:annotation" minOccurs="0"/>
+               <xs:choice minOccurs="0">
+                  <xs:element name="simpleType" type="xs:localSimpleType">
+                     <xs:annotation>
+                        <xs:documentation>Specifies a local simple type.</xs:documentation>
+                     </xs:annotation>
+                  </xs:element>
+                  <xs:element name="complexType" type="xs:localComplexType">
+                     <xs:annotation>
+                        <xs:documentation>Defines a local complex type. Complex Type
+                                    Definitions provide for: <ul>
+                                        <li>Constraining element information items by providing
+                                            Attribute Declarations
+                                            governing the appearance and content of attributes.</li>
+                                        <li>Constraining element information item children to be
+                                            empty, or to conform to
+                                            a specified element-only or mixed content model, or else
+                                            constraining the
+                                            character information item children to conform to a
+                                            specified simple type
+                                            definition.</li>
+                                        <li>Using the mechanisms of Type Definition Hierarchy to
+                                            derive a complex type
+                                            from another simple or complex type.</li>
+                                        <li>Specifying post-schema-validation infoset contributions
+                                            for elements.</li>
+                                        <li>Limiting the ability to derive additional types from a
+                                            given complex
+                                            type.</li>
+                                        <li>Controlling the permission to substitute, in an
+                                            instance, elements of a
+                                            derived type for elements declared in a content model to
+                                            be of a given
+                                            complex type.</li>
+                                    </ul> 
+                        </xs:documentation>
+                     </xs:annotation>
+                  </xs:element>
+               </xs:choice>
+               <xs:element name="alternative"
+                           type="xs:altType"
+                           minOccurs="0"
+                           maxOccurs="unbounded">
+                  <xs:annotation>
+                     <xs:documentation>The &lt;alternative&gt; element is used specify an element a choice
+                types, depending on the value of the attributes. </xs:documentation>
+                  </xs:annotation>
+               </xs:element>
+               <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+            </xs:sequence>
+            <xs:attribute name="substitutionGroup" use="prohibited"/>
+            <xs:attribute name="final" use="prohibited"/>
+            <xs:attribute name="abstract" use="prohibited"/>
+            <xs:anyAttribute namespace="##other" processContents="lax"/>
+         </xs:restriction>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="element" type="xs:topLevelElement" id="element">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-element"> Defines an
+                element. An element                 declaration is an association of a name with a
+                type definition, either simple or complex, an (optional)                 default
+                value and a (possibly empty) set of identity-constraint definitions.
+            </xs:documentation>
+      </xs:annotation>
+    
+  </xs:element>
+  <xs:complexType name="altType">
+      <xs:annotation>
+         <xs:documentation>
+        This type is used for 'alternative' elements.
+      </xs:documentation>
+      </xs:annotation>
+      <xs:complexContent>
+         <xs:extension base="xs:annotated">
+            <xs:choice minOccurs="0">
+               <xs:element name="simpleType" type="xs:localSimpleType">
+                  <xs:annotation>
+                     <xs:documentation> Defines a simple type. A simple type definition is a set of
+                constraints on strings and information about the values they encode, applicable to
+                the normalized value of an attribute information item or of an element information
+                item with no element children. Informally, it applies to the values of attributes
+                and the text-only content of elements. </xs:documentation>
+                  </xs:annotation>
+               </xs:element>
+               <xs:element name="complexType" type="xs:localComplexType">
+                  <xs:annotation>
+                     <xs:documentation>Defines a local complex type. Complex Type
+                Definitions provide for: <ul>
+                           <li>Constraining element information items by providing
+                        Attribute Declarations
+                        governing the appearance and content of attributes.</li>
+                           <li>Constraining element information item children to be
+                        empty, or to conform to
+                        a specified element-only or mixed content model, or else
+                        constraining the
+                        character information item children to conform to a
+                        specified simple type
+                        definition.</li>
+                           <li>Using the mechanisms of Type Definition Hierarchy to
+                        derive a complex type
+                        from another simple or complex type.</li>
+                           <li>Specifying post-schema-validation infoset contributions
+                        for elements.</li>
+                           <li>Limiting the ability to derive additional types from a
+                        given complex
+                        type.</li>
+                           <li>Controlling the permission to substitute, in an
+                        instance, elements of a
+                        derived type for elements declared in a content model to
+                        be of a given
+                        complex type.</li>
+                        </ul> 
+                     </xs:documentation>
+                  </xs:annotation>
+               </xs:element>
+            </xs:choice>
+            <xs:attribute name="test" type="xs:string" use="optional">
+               <xs:annotation>
+                  <xs:documentation>Specifies an XPath expression. If the XPath expression is evaluated to
+                true,then the specified type is selected as the element type. The expressions
+                allowed are limited to a subset of XPath 2.0.In the XPath expression are accessible
+                only the attributes of the current element and inheriritable attributes from
+                ancestor elements. </xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="type" type="xs:QName" use="optional">
+               <xs:annotation>
+                  <xs:documentation>Specifies the type of the element that should be used if the test
+                attribute is evaluated to true. The type specified must be derived from the element
+                declared type or a special simple type definition called xs:error (which has no
+                valid instances).</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="xpathDefaultNamespace" type="xs:xpathDefaultNamespace">
+               <xs:annotation>
+                  <xs:documentation>The default namespace used when evalueates the XPath
+                expression.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+         </xs:extension>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="group" abstract="true">
+      <xs:annotation>
+         <xs:documentation>
+   group type for explicit groups, named top-level groups and
+   group references</xs:documentation>
+      </xs:annotation>
+      <xs:complexContent>
+         <xs:extension base="xs:annotated">
+        
+            <xs:group ref="xs:particle" minOccurs="0" maxOccurs="unbounded"/>
+          
+            <xs:attributeGroup ref="xs:defRef"/>
+            <xs:attributeGroup ref="xs:occurs"/>
+         </xs:extension>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="realGroup">
+      <xs:complexContent>
+         <xs:restriction base="xs:group">
+            <xs:sequence>
+               <xs:element ref="xs:annotation" minOccurs="0"/>
+               <xs:choice minOccurs="0" maxOccurs="1">
+                  <xs:element ref="xs:all"/>
+                  <xs:element ref="xs:choice"/>
+                  <xs:element ref="xs:sequence"/>
+               </xs:choice>
+          
+            </xs:sequence>
+            <xs:anyAttribute namespace="##other" processContents="lax"/>
+         </xs:restriction>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="namedGroup">
+      <xs:complexContent>
+         <xs:restriction base="xs:realGroup">
+            <xs:sequence>
+               <xs:element ref="xs:annotation" minOccurs="0"/>
+               <xs:choice minOccurs="1" maxOccurs="1">
+                  <xs:element name="all">
+                     <xs:annotation>
+                        <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-all">
+                                    Specifies that                                     the child
+                                    elements can appear in any order. Each child element can occur 0
+                                    or 1
+                                    time.</xs:documentation>
+                     </xs:annotation>
+                     <xs:complexType>
+                        <xs:complexContent>
+                           <xs:restriction base="xs:all">
+                              <xs:group ref="xs:allModel"/>
+                              <xs:attribute name="minOccurs" use="prohibited"/>
+                              <xs:attribute name="maxOccurs" use="prohibited"/>
+                              <xs:anyAttribute namespace="##other" processContents="lax"/>
+                           </xs:restriction>
+                        </xs:complexContent>
+                     </xs:complexType>
+                  </xs:element>
+                  <xs:element name="choice" type="xs:simpleExplicitGroup">
+                     <xs:annotation>
+                        <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-choice">
+                                    Allows only                                     one of the
+                                    elements contained in the &lt;choice&gt; declaration to be
+                                    present within the containing element.</xs:documentation>
+                     </xs:annotation>
+                  </xs:element>
+                  <xs:element name="sequence" type="xs:simpleExplicitGroup">
+                     <xs:annotation>
+                        <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-sequence">
+                                    Specifies                                     that the child
+                                    elements must appear in a sequence. Each child element can occur
+                                    from                                     0 to any number of
+                                    times.</xs:documentation>
+                     </xs:annotation>
+                  </xs:element>
+               </xs:choice>
+            </xs:sequence>
+            <xs:attribute name="name" type="xs:NCName" use="required">
+               <xs:annotation>
+                  <xs:documentation>Specifies the required named group
+                            name.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="ref" use="prohibited"/>
+            <xs:attribute name="minOccurs" use="prohibited"/>
+            <xs:attribute name="maxOccurs" use="prohibited"/>
+            <xs:anyAttribute namespace="##other" processContents="lax"/>
+         </xs:restriction>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="groupRef">
+      <xs:complexContent>
+         <xs:restriction base="xs:realGroup">
+            <xs:sequence>
+               <xs:element ref="xs:annotation" minOccurs="0"/>
+            </xs:sequence>
+            <xs:attribute name="ref" type="xs:QName" use="required">
+               <xs:annotation>
+                  <xs:documentation>Specifies the group this group reference points
+                            to.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="name" use="prohibited"/>
+            <xs:anyAttribute namespace="##other" processContents="lax"/>
+         </xs:restriction>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="explicitGroup">
+      <xs:annotation>
+         <xs:documentation>
+   group type for the three kinds of group</xs:documentation>
+      </xs:annotation>
+      <xs:complexContent>
+         <xs:restriction base="xs:group">
+            <xs:sequence>
+               <xs:element ref="xs:annotation" minOccurs="0"/>
+               <xs:group ref="xs:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+            </xs:sequence>
+            <xs:attribute name="name" use="prohibited"/>
+            <xs:attribute name="ref" use="prohibited"/>
+            <xs:anyAttribute namespace="##other" processContents="lax"/>
+         </xs:restriction>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="simpleExplicitGroup">
+      <xs:complexContent>
+         <xs:restriction base="xs:explicitGroup">
+            <xs:sequence>
+               <xs:element ref="xs:annotation" minOccurs="0"/>
+               <xs:group ref="xs:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+            </xs:sequence>
+            <xs:attribute name="minOccurs" use="prohibited"/>
+            <xs:attribute name="maxOccurs" use="prohibited"/>
+            <xs:anyAttribute namespace="##other" processContents="lax"/>
+         </xs:restriction>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:group name="allModel">
+      <xs:sequence>
+         <xs:element ref="xs:annotation" minOccurs="0"/>
+         <xs:choice minOccurs="0" maxOccurs="unbounded">
+            <xs:annotation>
+               <xs:documentation>This choice with min/max is here to
+                          avoid a pblm with the Elt:All/Choice/Seq
+                          Particle derivation constraint</xs:documentation>
+            </xs:annotation>
+            <xs:element name="element" type="xs:localElement">
+               <xs:annotation>
+                  <xs:documentation>Specifies a local element or a reference to a global
+                            element.</xs:documentation>
+               </xs:annotation>
+            </xs:element>
+            <xs:element ref="xs:any"/>
+            <xs:element name="group">
+               <xs:annotation>
+                  <xs:documentation>Specifies a group reference.</xs:documentation>
+               </xs:annotation>
+               <xs:complexType>
+                  <xs:complexContent>
+                     <xs:restriction base="xs:groupRef">
+                        <xs:sequence>
+                           <xs:element ref="xs:annotation" minOccurs="0"/>
+                        </xs:sequence>
+                        <xs:attribute name="minOccurs" fixed="1" type="xs:nonNegativeInteger"/>
+                        <xs:attribute name="maxOccurs" fixed="1" type="xs:nonNegativeInteger"/>
+                     </xs:restriction>
+                  </xs:complexContent>
+               </xs:complexType>
+            </xs:element>
+         </xs:choice>
+      </xs:sequence>
+  </xs:group>
+  <xs:complexType name="all">
+      <xs:annotation>
+         <xs:documentation>
+   Only elements allowed inside</xs:documentation>
+      </xs:annotation>
+      <xs:complexContent>
+         <xs:restriction base="xs:explicitGroup">
+            <xs:group ref="xs:allModel"/>
+            <xs:attribute name="minOccurs" default="1" use="optional">
+               <xs:annotation>
+                  <xs:documentation>Specifies the minimum number of occurrences, possible
+                            values are 0 and 1,                             default is
+                            1.</xs:documentation>
+               </xs:annotation>
+               <xs:simpleType>
+                  <xs:restriction base="xs:nonNegativeInteger">
+                     <xs:enumeration value="0"/>
+                     <xs:enumeration value="1"/>
+                  </xs:restriction>
+               </xs:simpleType>
+            </xs:attribute>
+            <xs:attribute name="maxOccurs" default="1" use="optional">
+               <xs:annotation>
+                  <xs:documentation>Specifies the maximum number of occurrences, possible
+                            value is 1, default is                             1.</xs:documentation>
+               </xs:annotation>
+               <xs:simpleType>
+                  <xs:restriction base="xs:allNNI">
+                     <xs:enumeration value="0"/>
+                     <xs:enumeration value="1"/>
+                  </xs:restriction>
+               </xs:simpleType>
+            </xs:attribute>
+            <xs:anyAttribute namespace="##other" processContents="lax"/>
+         </xs:restriction>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="all" type="xs:all" id="all">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-all"> Specifies that
+                the child elements                 can appear in any order. Each child element can
+                occur 0 or 1 time. </xs:documentation>
+      </xs:annotation>
+    
+  </xs:element>
+  <xs:element name="choice" type="xs:explicitGroup" id="choice">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-choice"> Allows only
+                one of the elements                 contained in the &lt;choice&gt; declaration to
+                be present within the containing                 element.</xs:documentation>
+      </xs:annotation>
+    
+  </xs:element>
+  <xs:element name="sequence" type="xs:explicitGroup" id="sequence">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-sequence"> Specifies
+                that the child                 elements must appear in a sequence. Each child
+                element can occur from 0 to any number of                 times.</xs:documentation>
+      </xs:annotation>
+    
+  </xs:element>
+  <xs:element name="group" type="xs:namedGroup" id="group">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-group"> Defines a
+                group of elements to                 be used in complex type
+                definitions.</xs:documentation>
+      </xs:annotation>
+    
+  </xs:element>
+  <xs:attributeGroup name="anyAttrGroup">
+      <xs:attribute name="namespace" type="xs:namespaceList" use="optional">
+         <xs:annotation>
+            <xs:documentation>Specifies the namespace(s) allowed by the wildcard, default is ##any
+                standing for any namespace.</xs:documentation>
+        </xs:annotation>
+      </xs:attribute>
+      <xs:attribute name="notNamespace" use="optional">
+         <xs:annotation>
+            <xs:documentation>Specify the namespace that extension elements or attributes cannot come from.</xs:documentation>
+        </xs:annotation>
+         <xs:simpleType>
+            <xs:restriction base="xs:basicNamespaceList">
+               <xs:minLength value="1"/>
+            </xs:restriction>
+         </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="processContents" default="strict" use="optional">
+         <xs:annotation>
+            <xs:documentation>Specifies the validation constraint to be applied on the content that
+                matched the wildcard. Possible values are <ul>
+                    <li>skip - that means no validation</li>
+                    <li>lax - that means validation will be performed if a schema is available</li>
+                    <li>strict - that means validation is required </li>
+                </ul> The default is strict. </xs:documentation>
+        </xs:annotation>
+         <xs:simpleType>
+            <xs:restriction base="xs:NMTOKEN">
+               <xs:enumeration value="skip"/>
+               <xs:enumeration value="lax"/>
+               <xs:enumeration value="strict"/>
+            </xs:restriction>
+         </xs:simpleType>
+      </xs:attribute>
+  </xs:attributeGroup>
+  <xs:complexType name="wildcard">
+      <xs:complexContent>
+         <xs:extension base="xs:annotated">
+        
+            <xs:attributeGroup ref="xs:anyAttrGroup"/>
+         </xs:extension>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="any" id="any">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-any"> Enables the
+                author to extend the                 XML document with elements not specified by the
+                schema.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:complexType>
+         <xs:complexContent>
+            <xs:extension base="xs:wildcard">
+               <xs:attribute name="notQName" type="xs:qnameList" use="optional">
+                  <xs:annotation>
+                     <xs:documentation>Specify an element or attribute that is not allowed.</xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+               <xs:attributeGroup ref="xs:occurs"/>
+            </xs:extension>
+         </xs:complexContent>
+      </xs:complexType>
+  </xs:element>
+  <xs:annotation>
+      <xs:documentation>
+   simple type for the value of the 'namespace' attr of
+   'any' and 'anyAttribute'</xs:documentation>
+  </xs:annotation>
+  <xs:annotation>
+      <xs:documentation>
+   Value is
+              ##any      - - any non-conflicting WFXML/attribute at all
+
+              ##other    - - any non-conflicting WFXML/attribute from
+                              namespace other than targetNS
+
+              ##local    - - any unqualified non-conflicting WFXML/attribute 
+
+              one or     - - any non-conflicting WFXML/attribute from
+              more URI        the listed namespaces
+              references
+              (space separated)
+
+    ##targetNamespace or ##local may appear in the above list, to
+        refer to the targetNamespace of the enclosing
+        schema or an absent targetNamespace respectively</xs:documentation>
+  </xs:annotation>
+  <xs:simpleType name="namespaceList">
+      <xs:annotation>
+         <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+      </xs:annotation>
+    
+      <xs:union memberTypes="xs:specialNamespaceList xs:basicNamespaceList"/>
+  </xs:simpleType>
+  <xs:simpleType name="basicNamespaceList">
+      <xs:annotation>
+         <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+      </xs:annotation>
+      <xs:list>
+         <xs:simpleType>
+            <xs:union memberTypes="xs:anyURI">
+               <xs:simpleType>
+                  <xs:restriction base="xs:token">
+                     <xs:enumeration value="##targetNamespace"/>
+                     <xs:enumeration value="##local"/>
+                  </xs:restriction>
+               </xs:simpleType>
+            </xs:union>
+         </xs:simpleType>
+      </xs:list>
+  </xs:simpleType>
+  <xs:simpleType name="specialNamespaceList">
+      <xs:annotation>
+         <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+      </xs:annotation>
+      <xs:restriction base="xs:token">
+         <xs:enumeration value="##any"/>
+         <xs:enumeration value="##other"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="qnameList">
+      <xs:annotation>
+         <xs:documentation>
+        A utility type, not for public use
+      </xs:documentation>
+      </xs:annotation>
+      <xs:list>
+         <xs:simpleType>
+            <xs:union memberTypes="xs:QName">
+               <xs:simpleType>
+                  <xs:restriction base="xs:token">
+                     <xs:enumeration value="##defined"/>
+                     <xs:enumeration value="##definedSibling"/>
+                  </xs:restriction>
+               </xs:simpleType>
+            </xs:union>
+         </xs:simpleType>
+      </xs:list>
+  </xs:simpleType>
+  <xs:simpleType name="qnameListA">
+      <xs:annotation>
+         <xs:documentation>
+        A utility type, not for public use
+      </xs:documentation>
+      </xs:annotation>
+      <xs:list>
+         <xs:simpleType>
+            <xs:union memberTypes="xs:QName">
+               <xs:simpleType>
+                  <xs:restriction base="xs:token">
+                     <xs:enumeration value="##defined"/>
+                  </xs:restriction>
+               </xs:simpleType>
+            </xs:union>
+         </xs:simpleType>
+      </xs:list>
+  </xs:simpleType>
+  <xs:simpleType name="xpathDefaultNamespace">
+      <xs:union memberTypes="xs:anyURI">
+         <xs:simpleType>
+            <xs:restriction base="xs:token">
+               <xs:enumeration value="##defaultNamespace"/>
+               <xs:enumeration value="##targetNamespace"/>
+               <xs:enumeration value="##local"/>
+            </xs:restriction>
+         </xs:simpleType>
+      </xs:union>
+  </xs:simpleType>
+  <xs:element name="attribute" type="xs:topLevelAttribute" id="attribute">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attribute"> Defines
+                an                 attribute.</xs:documentation>
+      </xs:annotation>
+    
+  </xs:element>
+  <xs:complexType name="attributeGroup" abstract="true">
+      <xs:complexContent>
+         <xs:extension base="xs:annotated">
+        
+            <xs:group ref="xs:attrDecls"/>
+          
+            <xs:attributeGroup ref="xs:defRef"/>
+         </xs:extension>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="namedAttributeGroup">
+      <xs:complexContent>
+         <xs:restriction base="xs:attributeGroup">
+            <xs:sequence>
+               <xs:element ref="xs:annotation" minOccurs="0"/>
+               <xs:group ref="xs:attrDecls"/>
+          
+            </xs:sequence>
+            <xs:attribute name="name" type="xs:NCName" use="required">
+               <xs:annotation>
+                  <xs:documentation>Specifies the required named attribute group
+                            name.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="ref" use="prohibited"/>
+            <xs:anyAttribute namespace="##other" processContents="lax"/>
+         </xs:restriction>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="attributeGroupRef">
+      <xs:complexContent>
+         <xs:restriction base="xs:attributeGroup">
+            <xs:sequence>
+               <xs:element ref="xs:annotation" minOccurs="0"/>
+            </xs:sequence>
+            <xs:attribute name="ref" type="xs:QName" use="required">
+               <xs:annotation>
+                  <xs:documentation>Specifies the attribute group this attribute group
+                            reference points                             to.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="name" use="prohibited"/>
+            <xs:anyAttribute namespace="##other" processContents="lax"/>
+         </xs:restriction>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="attributeGroup"
+               type="xs:namedAttributeGroup"
+               id="attributeGroup">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attributeGroup">Defines an attribute                 group to be used in complex type
+                definitions.</xs:documentation>
+      </xs:annotation>
+    
+  </xs:element>
+  <xs:element name="include" id="include">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-include"> Adds
+                multiple schemas with the                 same target namespace to a
+                document.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:complexType>
+         <xs:complexContent>
+            <xs:extension base="xs:annotated">
+               <xs:attribute name="schemaLocation" type="xs:anyURI" use="required">
+                  <xs:annotation>
+                     <xs:documentation>Required. Specifies the URI to the schema to include
+                                in the target                                 namespace of the
+                                containing schema.</xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+            </xs:extension>
+         </xs:complexContent>
+      </xs:complexType>
+  </xs:element>
+  <xs:element name="redefine" id="redefine">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-redefine"> Redefines
+                simple and complex                 types, groups, and attribute groups from an
+                external schema.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:complexType>
+         <xs:complexContent>
+            <xs:extension base="xs:openAttrs">
+               <xs:choice minOccurs="0" maxOccurs="unbounded">
+                  <xs:element ref="xs:annotation"/>
+                  <xs:group ref="xs:redefinable"/>
+               </xs:choice>
+               <xs:attribute name="schemaLocation" type="xs:anyURI" use="required">
+                  <xs:annotation>
+                     <xs:documentation>Required. A URI to the location of a schema
+                                document.</xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+               <xs:attribute name="id" type="xs:ID">
+                  <xs:annotation>
+                     <xs:documentation>Optional. Specifies a unique ID for the
+                                element.</xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+            </xs:extension>
+         </xs:complexContent>
+      </xs:complexType>
+  </xs:element>
+
+  <xs:element name="override" id="override">
+      <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema11-1/structures.html#element-override">
+                Overrides simple and complex types, groups, and attribute groups from an external schema.
+                Does not imposes constraints on the new definitions provided for components whose definitions are
+                being overridden. </xs:documentation>
+        </xs:annotation>
+    
+      <xs:complexType>
+         <xs:complexContent>
+            <xs:extension base="xs:openAttrs">
+               <xs:sequence>
+                  <xs:element ref="xs:annotation" minOccurs="0"/>
+                  <xs:group ref="xs:schemaTop" minOccurs="0" maxOccurs="unbounded"/>
+               </xs:sequence>
+               <xs:attribute name="schemaLocation" type="xs:anyURI" use="required">
+                  <xs:annotation>
+                     <xs:documentation>Required. A URI to the location of a schema
+                document.</xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+               <xs:attribute name="id" type="xs:ID"/>
+            </xs:extension>
+         </xs:complexContent>
+      </xs:complexType>
+  </xs:element>
+  <xs:element name="import" id="import">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-import"> Adds
+                multiple schemas with                 different target namespace to a
+                document.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:complexType>
+         <xs:complexContent>
+            <xs:extension base="xs:annotated">
+               <xs:attribute name="namespace" type="xs:anyURI">
+                  <xs:annotation>
+                     <xs:documentation>Required. Specifies the URI of the namespace to
+                                import.</xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+               <xs:attribute name="schemaLocation" type="xs:anyURI">
+                  <xs:annotation>
+                     <xs:documentation>Optional. Specifies the URI to the schema for the
+                                imported
+                                namespace.</xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+            </xs:extension>
+         </xs:complexContent>
+      </xs:complexType>
+  </xs:element>
+  <xs:element name="selector" id="selector">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-selector"> Specifies
+                an XPath expression                 that selects a set of elements for an identity
+                constraint. </xs:documentation>
+      </xs:annotation>
+    
+      <xs:complexType>
+         <xs:complexContent>
+            <xs:extension base="xs:annotated">
+               <xs:attribute name="xpath" use="required">
+                  <xs:annotation>
+                     <xs:documentation>Defines the XPath selector
+                                expression.</xs:documentation>
+                  </xs:annotation>
+                  <xs:simpleType>
+                     <xs:annotation>
+                        <xs:documentation>A subset of XPath expressions for use
+in selectors</xs:documentation>
+                        <xs:documentation>A utility type, not for public
+use</xs:documentation>
+                     </xs:annotation>
+                     <xs:restriction base="xs:token"/>
+                
+                  </xs:simpleType>
+               </xs:attribute>
+               <xs:attribute name="xpathDefaultNamespace" type="xs:xpathDefaultNamespace">
+                  <xs:annotation>
+                     <xs:documentation>The default namespace used when evalueates the XPath
+                expression.</xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+            </xs:extension>
+         </xs:complexContent>
+      </xs:complexType>
+  </xs:element>
+  <xs:element name="field" id="field">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-field"> Specifies an
+                XPath expression                 that specifies the value used to define an identity
+                constraint.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:complexType>
+         <xs:complexContent>
+            <xs:extension base="xs:annotated">
+               <xs:attribute name="xpath" use="required">
+                  <xs:annotation>
+                     <xs:documentation>Required. Identifies a single element or attribute
+                                whose content or value                                 is used for
+                                the constraint.</xs:documentation>
+                  </xs:annotation>
+                  <xs:simpleType>
+                     <xs:annotation>
+                        <xs:documentation>A subset of XPath expressions for use
+in fields</xs:documentation>
+                        <xs:documentation>A utility type, not for public
+use</xs:documentation>
+                     </xs:annotation>
+                     <xs:restriction base="xs:token"/>
+                
+                  </xs:simpleType>
+               </xs:attribute>
+               <xs:attribute name="xpathDefaultNamespace" type="xs:xpathDefaultNamespace">
+                  <xs:annotation>
+                     <xs:documentation>The default namespace used when evalueates the XPath
+                expression.</xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+            </xs:extension>
+         </xs:complexContent>
+      </xs:complexType>
+  </xs:element>
+  <xs:complexType name="keybase">
+      <xs:complexContent>
+         <xs:extension base="xs:annotated">
+            <xs:sequence minOccurs="0">
+               <xs:element ref="xs:selector"/>
+               <xs:element ref="xs:field" minOccurs="1" maxOccurs="unbounded"/>
+            </xs:sequence>
+            <xs:attribute name="name" type="xs:NCName">
+               <xs:annotation>
+                  <xs:documentation>Specifies the required identity constraint
+                            name.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="ref" type="xs:QName"/>
+         </xs:extension>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:group name="identityConstraint">
+      <xs:annotation>
+         <xs:documentation>The three kinds of identity constraints, all with
+                     type of or derived from 'keybase'.
+   </xs:documentation>
+      </xs:annotation>
+      <xs:choice>
+         <xs:element ref="xs:unique"/>
+         <xs:element ref="xs:key"/>
+         <xs:element ref="xs:keyref"/>
+      </xs:choice>
+  </xs:group>
+  <xs:element name="unique" type="xs:keybase" id="unique">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-unique"> Defines
+                that an element or an                 attribute value must be unique within the
+                scope. </xs:documentation>
+      </xs:annotation>
+    
+  </xs:element>
+  <xs:element name="key" type="xs:keybase" id="key">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-key"> Specifies an
+                attribute or element                 value as a key (unique, non-nullable, and
+                always present) within the containing element in an instance
+                document. </xs:documentation>
+      </xs:annotation>
+    
+  </xs:element>
+  <xs:element name="keyref" id="keyref">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-keyref"> Specifies
+                that an attribute or                 element value correspond to those of the
+                specified key or unique element.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:complexType>
+         <xs:complexContent>
+            <xs:extension base="xs:keybase">
+               <xs:attribute name="refer" type="xs:QName">
+                  <xs:annotation>
+                     <xs:documentation>Required. Specifies the name of a key or unique
+                                element defined in this or                                 another
+                                schema.</xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+            </xs:extension>
+         </xs:complexContent>
+      </xs:complexType>
+  </xs:element>
+  <xs:element name="notation" id="notation">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-notation"> Describes
+                the format of                 non-XML data within an XML
+                document.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:complexType>
+         <xs:complexContent>
+            <xs:extension base="xs:annotated">
+               <xs:attribute name="name" type="xs:NCName" use="required">
+                  <xs:annotation>
+                     <xs:documentation>Required. Specifies a name for the
+                                notation.</xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+               <xs:attribute name="public" type="xs:public">
+                  <xs:annotation>
+                     <xs:documentation>Required. Specifies a URI corresponding to the public
+                                identifier.</xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+               <xs:attribute name="system" type="xs:anyURI">
+                  <xs:annotation>
+                     <xs:documentation>Optional. Specifies a URI corresponding to the system
+                                identifier.                             </xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+            </xs:extension>
+         </xs:complexContent>
+      </xs:complexType>
+  </xs:element>
+  <xs:simpleType name="public">
+      <xs:annotation>
+         <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+         <xs:documentation>
+   A public identifier, per ISO 8879</xs:documentation>
+      </xs:annotation>
+      <xs:restriction base="xs:token"/>
+  </xs:simpleType>
+  <xs:element name="appinfo" id="appinfo">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-appinfo"> Specifies
+                information to be                 used by the application. </xs:documentation>
+      </xs:annotation>
+    
+      <xs:complexType mixed="true">
+         <xs:sequence minOccurs="0" maxOccurs="unbounded">
+            <xs:any processContents="lax"/>
+         </xs:sequence>
+         <xs:attribute name="source" type="xs:anyURI">
+            <xs:annotation>
+               <xs:documentation>Optional. A URI reference that specifies the source of the
+                        application                         information. </xs:documentation>
+            </xs:annotation>
+         </xs:attribute>
+         <xs:anyAttribute namespace="##other" processContents="lax"/>
+      </xs:complexType>
+  </xs:element>
+  <xs:element name="documentation" id="documentation">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-documentation">
+                Defines text comments in                 a schema. </xs:documentation>
+      </xs:annotation>
+    
+      <xs:complexType mixed="true">
+         <xs:sequence minOccurs="0" maxOccurs="unbounded">
+            <xs:any processContents="lax"/>
+         </xs:sequence>
+         <xs:attribute name="source" type="xs:anyURI">
+            <xs:annotation>
+               <xs:documentation>Optional. Specifies the source of the application
+                        information.</xs:documentation>
+            </xs:annotation>
+         </xs:attribute>
+         <xs:attribute ref="xml:lang"/>
+         <xs:anyAttribute namespace="##other" processContents="lax"/>
+      </xs:complexType>
+  </xs:element>
+  <xs:element name="annotation" id="annotation">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-annotation">Specifies schema                 comments.</xs:documentation>
+      </xs:annotation>
+    
+      <xs:complexType>
+         <xs:complexContent>
+            <xs:extension base="xs:openAttrs">
+               <xs:choice minOccurs="0" maxOccurs="unbounded">
+                  <xs:element ref="xs:appinfo"/>
+                  <xs:element ref="xs:documentation"/>
+               </xs:choice>
+               <xs:attribute name="id" type="xs:ID">
+                  <xs:annotation>
+                     <xs:documentation>Optional. Specifies a unique ID for the
+                                element.</xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+            </xs:extension>
+         </xs:complexContent>
+      </xs:complexType>
+  </xs:element>
+  <xs:annotation>
+      <xs:documentation>
+   notations for use within  schema documents</xs:documentation>
+  </xs:annotation>
+  <xs:notation name="XMLSchemaStructures"
+                public="structures"
+                system="http://www.w3.org/2000/08/XMLSchema.xsd"/>
+  <xs:notation name="XML"
+                public="REC-xml-19980210"
+                system="http://www.w3.org/TR/1998/REC-xml-19980210"/>
+  <xs:complexType name="anyType" mixed="true">
+      <xs:annotation>
+         <xs:documentation>
+   Not the real urType, but as close an approximation as we can
+   get in the XML representation</xs:documentation>
+      </xs:annotation>
+      <xs:sequence>
+         <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
+      </xs:sequence>
+      <xs:anyAttribute processContents="lax"/>
+  </xs:complexType>
+
+  <xs:annotation>
+      <xs:documentation>
+      In keeping with the XML Schema WG's standard versioning policy, 
+      the material in this schema document will persist at the URI
+      http://www.w3.org/2012/04/XMLSchema.xsd.
+
+      At the date of issue it can also be found at the URI
+      http://www.w3.org/2009/XMLSchema/XMLSchema.xsd.
+
+      The schema document at that URI may however change in the future, 
+      in order to remain compatible with the latest version of XSD 
+      and its namespace.  In other words, if XSD or the XML Schema 
+      namespace change, the version of this document at 
+      http://www.w3.org/2009/XMLSchema/XMLSchema.xsd will change accordingly; 
+      the version at http://www.w3.org/2012/04/XMLSchema.xsd will not change.
+
+      Previous dated (and unchanging) versions of this schema document 
+      include:
+
+       http://www.w3.org/2012/01/XMLSchema.xsd
+          (XSD 1.1 Proposed Recommendation)
+
+        http://www.w3.org/2011/07/XMLSchema.xsd
+          (XSD 1.1 Candidate Recommendation)
+
+        http://www.w3.org/2009/04/XMLSchema.xsd
+          (XSD 1.1 Candidate Recommendation)
+
+        http://www.w3.org/2004/10/XMLSchema.xsd
+          (XSD 1.0 Recommendation, Second Edition)
+
+        http://www.w3.org/2001/05/XMLSchema.xsd
+          (XSD 1.0 Recommendation, First Edition)
+
+
+    </xs:documentation>
+  </xs:annotation>
+
+
+
+
+  <xs:simpleType name="derivationControl">
+      <xs:annotation>
+         <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+      </xs:annotation>
+      <xs:restriction base="xs:NMTOKEN">
+         <xs:enumeration value="substitution"/>
+         <xs:enumeration value="extension"/>
+         <xs:enumeration value="restriction"/>
+         <xs:enumeration value="list"/>
+         <xs:enumeration value="union"/>
+      </xs:restriction>
+  </xs:simpleType>
+  <xs:group name="simpleDerivation">
+      <xs:choice>
+         <xs:element ref="xs:restriction"/>
+         <xs:element ref="xs:list"/>
+         <xs:element ref="xs:union"/>
+      </xs:choice>
+  </xs:group>
+  <xs:simpleType name="simpleDerivationSet">
+      <xs:annotation>
+         <xs:documentation>
+   #all or (possibly empty) subset of {restriction, extension, union, list}
+   </xs:documentation>
+         <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+      </xs:annotation>
+      <xs:union>
+         <xs:simpleType>
+            <xs:restriction base="xs:token">
+               <xs:enumeration value="#all"/>
+            </xs:restriction>
+         </xs:simpleType>
+         <xs:simpleType>
+            <xs:list>
+               <xs:simpleType>
+                  <xs:restriction base="xs:derivationControl">
+                     <xs:enumeration value="list"/>
+                     <xs:enumeration value="union"/>
+                     <xs:enumeration value="restriction"/>
+                     <xs:enumeration value="extension"/>
+                  </xs:restriction>
+               </xs:simpleType>
+            </xs:list>
+         </xs:simpleType>
+      </xs:union>
+  </xs:simpleType>
+  <xs:complexType name="simpleType" abstract="true">
+      <xs:complexContent>
+         <xs:extension base="xs:annotated">
+            <xs:group ref="xs:simpleDerivation"/>
+            <xs:attribute name="final" type="xs:simpleDerivationSet">
+               <xs:annotation>
+                  <xs:documentation>Specifies the value of the final attribute on this
+                            simpleType. The final                             attribute prevents a
+                            specified type of derivation. For simpleType elements this value can
+                            contain #all or a list that is a subset of restriction, list or union: <ul>
+                                <li>restriction - prevents derivation by restriction</li>
+                                <li>list - prevents derivation by list</li>
+                                <li>union - prevents derivation by union</li>
+                                <li>#all - prevents all derivation</li>
+                            </ul> 
+                  </xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="name" type="xs:NCName">
+               <xs:annotation>
+                  <xs:documentation>
+              Can be restricted to required or forbidden
+            </xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+         </xs:extension>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="topLevelSimpleType">
+      <xs:complexContent>
+         <xs:restriction base="xs:simpleType">
+            <xs:sequence>
+               <xs:element ref="xs:annotation" minOccurs="0"/>
+               <xs:group ref="xs:simpleDerivation"/>
+            </xs:sequence>
+            <xs:attribute name="name" type="xs:NCName" use="required">
+               <xs:annotation>
+                  <xs:documentation>
+              Required at the top level
+            </xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:anyAttribute namespace="##other" processContents="lax"/>
+         </xs:restriction>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="localSimpleType">
+      <xs:complexContent>
+         <xs:restriction base="xs:simpleType">
+            <xs:sequence>
+               <xs:element ref="xs:annotation" minOccurs="0"/>
+               <xs:group ref="xs:simpleDerivation"/>
+            </xs:sequence>
+            <xs:attribute name="name" use="prohibited">
+               <xs:annotation>
+                  <xs:documentation>
+              Forbidden when nested
+            </xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="final" use="prohibited"/>
+            <xs:anyAttribute namespace="##other" processContents="lax"/>
+         </xs:restriction>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="simpleType" type="xs:topLevelSimpleType" id="simpleType">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-simpleType"> Defines
+                a simple type. A                 simple type definition is a set of constraints on
+                strings and information about the values they encode,                 applicable to
+                the normalized value of an attribute information item or of an element information
+                item                 with no element children. Informally, it applies to the values
+                of attributes and the text-only content                 of elements.
+            </xs:documentation>
+      </xs:annotation>
+    
+  </xs:element>
+  <xs:element name="facet" abstract="true">
+      <xs:annotation>
+         <xs:documentation>
+        An abstract element, representing facets in general.
+        The facets defined by this spec are substitutable for
+        this element, and implementation-defined facets should
+        also name this as a substitution-group head.
+      </xs:documentation>
+      </xs:annotation>
+  </xs:element>
+  <xs:group name="simpleRestrictionModel">
+      <xs:sequence>
+         <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0">
+            <xs:annotation>
+               <xs:documentation>Specifies a local simple type.</xs:documentation>
+            </xs:annotation>
+         </xs:element>
+         <xs:choice minOccurs="0" maxOccurs="unbounded">
+            <xs:element ref="xs:facet"/>
+            <xs:any processContents="lax" namespace="##other"/>
+         </xs:choice>
+      </xs:sequence>
+  </xs:group>
+  <xs:element name="restriction" id="restriction">
+      <xs:annotation>
+         <xs:documentation> Defines restrictions on a simpleType, simpleContent, or a
+                complexContent.             </xs:documentation>
+      </xs:annotation>
+      <xs:complexType>
+         <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-restriction">
+          base attribute and simpleType child are mutually
+          exclusive, but one or other is required
+        </xs:documentation>
+         </xs:annotation>
+         <xs:complexContent>
+            <xs:extension base="xs:annotated">
+               <xs:group ref="xs:simpleRestrictionModel"/>
+               <xs:attribute name="base" type="xs:QName" use="optional">
+                  <xs:annotation>
+                     <xs:documentation>Specifies the base type for the
+                                restriction.</xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+            </xs:extension>
+         </xs:complexContent>
+      </xs:complexType>
+  </xs:element>
+  <xs:element name="list" id="list">
+      <xs:annotation>
+         <xs:documentation> Defines a simple type element as a list of values.
+            </xs:documentation>
+      </xs:annotation>
+      <xs:complexType>
+         <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-list">
+          itemType attribute and simpleType child are mutually
+          exclusive, but one or other is required
+        </xs:documentation>
+         </xs:annotation>
+         <xs:complexContent>
+            <xs:extension base="xs:annotated">
+               <xs:sequence>
+                  <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0">
+                     <xs:annotation>
+                        <xs:documentation> Defines a simple type and specifies the
+                                    constraints and information
+                                    about the values of attributes or text-only elements.
+                                </xs:documentation>
+                     </xs:annotation>
+                  </xs:element>
+               </xs:sequence>
+               <xs:attribute name="itemType" type="xs:QName" use="optional">
+                  <xs:annotation>
+                     <xs:documentation> Specifies the name of a built-in data type or
+                                simpleType element defined                                 in this
+                                or another schema. This attribute is not allowed if the content
+                                contains a                                 simpleType element,
+                                otherwise it is required. </xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+            </xs:extension>
+         </xs:complexContent>
+      </xs:complexType>
+  </xs:element>
+  <xs:element name="union" id="union">
+      <xs:annotation>
+         <xs:documentation> Defines a simple type as a collection (union) of values from
+                specified simple data types.             </xs:documentation>
+      </xs:annotation>
+      <xs:complexType>
+         <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-union">
+          memberTypes attribute must be non-empty or there must be
+          at least one simpleType child
+        </xs:documentation>
+         </xs:annotation>
+         <xs:complexContent>
+            <xs:extension base="xs:annotated">
+               <xs:sequence>
+                  <xs:element name="simpleType"
+                              type="xs:localSimpleType"
+                              minOccurs="0"
+                              maxOccurs="unbounded">
+                     <xs:annotation>
+                        <xs:documentation> Defines a simple type and specifies the
+                                    constraints and information
+                                    about the values of attributes or text-only elements.
+                                </xs:documentation>
+                     </xs:annotation>
+                  </xs:element>
+               </xs:sequence>
+               <xs:attribute name="memberTypes" use="optional">
+                  <xs:annotation>
+                     <xs:documentation>Optional. Specifies a list of built-in data types or
+                                simpleType elements                                 defined in a
+                                schema. </xs:documentation>
+                  </xs:annotation>
+                  <xs:simpleType>
+                     <xs:list itemType="xs:QName"/>
+                  </xs:simpleType>
+               </xs:attribute>
+            </xs:extension>
+         </xs:complexContent>
+      </xs:complexType>
+  </xs:element>
+  <xs:complexType name="facet">
+      <xs:complexContent>
+         <xs:extension base="xs:annotated">
+            <xs:attribute name="value" use="required">
+               <xs:annotation>
+                  <xs:documentation>Specifies the facet value.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="fixed" type="xs:boolean" default="false" use="optional">
+               <xs:annotation>
+                  <xs:documentation>Default is false, specifies whether the content has a
+                            fixed                             value.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+         </xs:extension>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:complexType name="noFixedFacet">
+      <xs:complexContent>
+         <xs:restriction base="xs:facet">
+            <xs:sequence>
+               <xs:element ref="xs:annotation" minOccurs="0"/>
+            </xs:sequence>
+            <xs:attribute name="fixed" use="prohibited"/>
+            <xs:anyAttribute namespace="##other" processContents="lax"/>
+         </xs:restriction>
+      </xs:complexContent>
+  </xs:complexType>
+  <xs:element name="minExclusive"
+               type="xs:facet"
+               id="minExclusive"
+               substitutionGroup="xs:facet">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-minExclusive">
+                Specifies the lower                 bounds for numeric values (the value must be
+                greater than this value). </xs:documentation>
+      </xs:annotation>
+    
+  </xs:element>
+  <xs:element name="minInclusive"
+               type="xs:facet"
+               id="minInclusive"
+               substitutionGroup="xs:facet">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-minInclusive">
+                Specifies the lower                 bounds for numeric values (the value must be
+                greater than or equal to this value).</xs:documentation>
+      </xs:annotation>
+    
+  </xs:element>
+  <xs:element name="maxExclusive"
+               type="xs:facet"
+               id="maxExclusive"
+               substitutionGroup="xs:facet">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-maxExclusive">
+                Specifies the upper                 bounds for numeric values (the value must be
+                less than this value). </xs:documentation>
+      </xs:annotation>
+    
+  </xs:element>
+  <xs:element name="maxInclusive"
+               type="xs:facet"
+               id="maxInclusive"
+               substitutionGroup="xs:facet">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-maxInclusive">
+                Specifies the upper                 bounds for numeric values (the value must be
+                less than or equal to this value). </xs:documentation>
+      </xs:annotation>
+    
+  </xs:element>
+  <xs:complexType name="numFacet">
+      <xs:complexContent>
+         <xs:restriction base="xs:facet">
+            <xs:sequence>
+               <xs:element ref="xs:annotation" minOccurs="0"/>
+            </xs:sequence>
+            <xs:attribute name="value" type="xs:nonNegativeInteger" use="required">
+               <xs:annotation>
+                  <xs:documentation>Specifies the facet value.</xs:documentation>
+               </xs:annotation>
+            </xs:attribute>
+            <xs:anyAttribute namespace="##other" processContents="lax"/>
+         </xs:restriction>
+      </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="intFacet">
+      <xs:complexContent>
+         <xs:restriction base="xs:facet">
+            <xs:sequence>
+               <xs:element ref="xs:annotation" minOccurs="0"/>
+            </xs:sequence>
+            <xs:attribute name="value" type="xs:integer" use="required"/>
+            <xs:anyAttribute namespace="##other" processContents="lax"/>
+         </xs:restriction>
+      </xs:complexContent>
+  </xs:complexType>
+
+  <xs:element name="totalDigits" id="totalDigits" substitutionGroup="xs:facet">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-totalDigits">
+                Specifies the exact number                 of digits allowed. Must be greater than
+                zero. </xs:documentation>
+      </xs:annotation>
+    
+      <xs:complexType>
+         <xs:complexContent>
+            <xs:restriction base="xs:numFacet">
+               <xs:sequence>
+                  <xs:element ref="xs:annotation" minOccurs="0"/>
+               </xs:sequence>
+               <xs:attribute name="value" type="xs:positiveInteger" use="required">
+                  <xs:annotation>
+                     <xs:documentation>Specifies the facet value.</xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+               <xs:anyAttribute namespace="##other" processContents="lax"/>
+            </xs:restriction>
+         </xs:complexContent>
+      </xs:complexType>
+  </xs:element>
+  <xs:element name="fractionDigits"
+               type="xs:numFacet"
+               id="fractionDigits"
+               substitutionGroup="xs:facet">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-fractionDigits">
+                Specifies the maximum                 number of decimal places allowed. Must be
+                equal to or greater than zero. </xs:documentation>
+      </xs:annotation>
+    
+  </xs:element>
+
+  <xs:element name="length"
+               type="xs:numFacet"
+               id="length"
+               substitutionGroup="xs:facet">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-length"> Specifies
+                the exact number of                 characters or list items allowed. Must be equal
+                to or greater than zero. </xs:documentation>
+      </xs:annotation>
+    
+  </xs:element>
+  <xs:element name="minLength"
+               type="xs:numFacet"
+               id="minLength"
+               substitutionGroup="xs:facet">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-minLength">
+                Specifies the minimum number                 of characters or list items allowed.
+                Must be equal to or greater than zero. </xs:documentation>
+      </xs:annotation>
+    
+  </xs:element>
+  <xs:element name="maxLength"
+               type="xs:numFacet"
+               id="maxLength"
+               substitutionGroup="xs:facet">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-maxLength">
+                Specifies the maximum number                 of characters or list items allowed.
+                Must be equal to or greater than zero. </xs:documentation>
+      </xs:annotation>
+    
+  </xs:element>
+  <xs:element name="enumeration"
+               type="xs:noFixedFacet"
+               id="enumeration"
+               substitutionGroup="xs:facet">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-enumeration">
+                Defines a list of                 acceptable values. </xs:documentation>
+      </xs:annotation>
+    
+  </xs:element>
+  <xs:element name="whiteSpace" id="whiteSpace" substitutionGroup="xs:facet">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-whiteSpace">
+                Specifies how white space                 (line feeds, tabs, spaces, and carriage
+                returns) are handled. </xs:documentation>
+      </xs:annotation>
+    
+      <xs:complexType>
+         <xs:complexContent>
+            <xs:restriction base="xs:facet">
+               <xs:sequence>
+                  <xs:element ref="xs:annotation" minOccurs="0"/>
+               </xs:sequence>
+               <xs:attribute name="value" use="required">
+                  <xs:annotation>
+                     <xs:documentation>Specifies the facet value.</xs:documentation>
+                  </xs:annotation>
+                  <xs:simpleType>
+                     <xs:restriction base="xs:NMTOKEN">
+                        <xs:enumeration value="preserve"/>
+                        <xs:enumeration value="replace"/>
+                        <xs:enumeration value="collapse"/>
+                     </xs:restriction>
+                  </xs:simpleType>
+               </xs:attribute>
+               <xs:anyAttribute namespace="##other" processContents="lax"/>
+            </xs:restriction>
+         </xs:complexContent>
+      </xs:complexType>
+  </xs:element>
+  <xs:element name="pattern" id="pattern" substitutionGroup="xs:facet">
+      <xs:annotation>
+         <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-pattern"> Defines
+                the exact sequence of                 characters that are acceptable.
+            </xs:documentation>
+      </xs:annotation>
+    
+      <xs:complexType>
+         <xs:complexContent>
+            <xs:restriction base="xs:noFixedFacet">
+               <xs:sequence>
+                  <xs:element ref="xs:annotation" minOccurs="0"/>
+               </xs:sequence>
+               <xs:attribute name="value" type="xs:string" use="required">
+                  <xs:annotation>
+                     <xs:documentation>Specifies the regular expression constraint.</xs:documentation>
+                  </xs:annotation>
+               </xs:attribute>
+               <xs:anyAttribute namespace="##other" processContents="lax"/>
+            </xs:restriction>
+         </xs:complexContent>
+      </xs:complexType>
+  </xs:element>
+  <xs:element name="assertion"
+               type="xs:assertion"
+               id="assertion"
+               substitutionGroup="xs:facet">
+      <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-assertion"> The
+                facet is used to constrain simpleTypes. 
+                An assertion is a predicate associated with
+                a type, which is checked for each instance of the type. If an element or attribute
+                information item fails to satisfy an assertion associated with a given type, then
+                that information item is not locally valid with respect to that type.
+            </xs:documentation>
+        </xs:annotation>
+    
+  </xs:element>
+  <xs:element name="explicitTimezone"
+               id="explicitTimezone"
+               substitutionGroup="xs:facet">
+      <xs:annotation>
+            <xs:documentation source="http://www.w3.org/TR/xmlschema11-2/#element-explicitTimezone">
+                Specifies if the time zone in date/time datatypes is optional, required or prohibited.
+            </xs:documentation>
+        </xs:annotation>
+    
+      <xs:complexType>
+         <xs:complexContent>
+            <xs:restriction base="xs:facet">
+               <xs:sequence>
+                  <xs:element ref="xs:annotation" minOccurs="0"/>
+               </xs:sequence>
+               <xs:attribute name="value" use="required">
+                  <xs:annotation>
+                     <xs:documentation>The value of this facet is one of these: 
+                required, prohibited, optional</xs:documentation>
+                  </xs:annotation>
+                  <xs:simpleType>
+                     <xs:restriction base="xs:NMTOKEN">
+                        <xs:enumeration value="optional"/>
+                        <xs:enumeration value="required"/>
+                        <xs:enumeration value="prohibited"/>
+                     </xs:restriction>
+                  </xs:simpleType>
+               </xs:attribute>
+               <xs:anyAttribute namespace="##other" processContents="lax"/>
+            </xs:restriction>
+         </xs:complexContent>
+      </xs:complexType>
+  </xs:element>
+
+  <xs:annotation>
+      <xs:documentation>
+      In keeping with the XML Schema WG's standard versioning policy, 
+      this schema document will persist at the URI
+      http://www.w3.org/2012/04/datatypes.xsd.
+
+      At the date of issue it can also be found at the URI
+      http://www.w3.org/2009/XMLSchema/datatypes.xsd.
+
+      The schema document at that URI may however change in the future, 
+      in order to remain compatible with the latest version of XSD 
+      and its namespace.  In other words, if XSD or the XML Schema 
+      namespace change, the version of this document at 
+      http://www.w3.org/2009/XMLSchema/datatypes.xsd will change accordingly; 
+      the version at http://www.w3.org/2012/04/datatypes.xsd will not change.
+
+      Previous dated (and unchanging) versions of this schema document 
+      include:
+
+        http://www.w3.org/2012/01/datatypes.xsd
+          (XSD 1.1 Proposed Recommendation)
+
+        http://www.w3.org/2011/07/datatypes.xsd
+          (XSD 1.1 Candidate Recommendation)
+
+        http://www.w3.org/2009/04/datatypes.xsd
+          (XSD 1.1 Candidate Recommendation)
+
+        http://www.w3.org/2004/10/datatypes.xsd
+          (XSD 1.0 Recommendation, Second Edition)
+
+        http://www.w3.org/2001/05/datatypes.xsd
+          (XSD 1.0 Recommendation, First Edition)
+
+    </xs:documentation>
+  </xs:annotation>
+
+
+
+</xs:schema>
+   </xsl:variable>
+   <xsl:variable name="system_cache__appinfo:builtintypes.xsd">
+      <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+         elementFormDefault="qualified"
+         xml:lang="EN"
+         targetNamespace="http://www.w3.org/2001/XMLSchema"
+         version="1.0">
+         <!-- TODO @2015-11-04 - trzeba te typy skad sciagnac - nie wiem skad -->
+         <xs:simpleType name="anyAtomicType"/>
+            
+         
+      </xs:schema>
+   </xsl:variable>
+
+</xsl:stylesheet>