Exclusions from this concept illustration:
Transformations for the imported schemas
Transformations of
Annotation/Documentation in Schemas
Transformations of Comments in
Schemas
** Minor version schemas **
Example of Global NDR:
Document Schema -
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
xmlns:xsd="
http://www.w3.org/2001/XMLSchema"
xmlns="SomeDocument"
xmlns:uac2-0="GlobalImportedAggregateSchema"
xmlns:ubc2-0="GlobalImportedBasicSchema"
targetNamespace="SomeDocument"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
version="1.0">
<xsd:import
namespace="GlobalImportedAggregateSchema"
schemaLocation="GlobalImportedAggregateSchema.xsd"/>
<xsd:import
namespace="GlobalImportedBasicSchema"
schemaLocation="GlobalImportedBasicSchema.xsd"/>
<xsd:element
name="SomeDocument" type="SomeDocumentType">
<xsd:annotation>
<xsd:documentation>Some
documentation</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:complexType name="SomeDocumentType">
<xsd:annotation>
<xsd:documentation>Some
documentation</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element
ref="Something" minOccurs="0"
maxOccurs="1">
<xsd:annotation>
<xsd:documentation>Some
documentation</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="Something"
type="uac2-0:SomethingType"/>
</xsd:schema>
Example Document -
<?xml version="1.0" encoding="UTF-8"?>
<SomeDocument
xmlns:AIAS="LocalImportedAggregateSchema" xmlns:AIBS="LocalImportedBasicSchema"
xmlns="SomeDocument" xmlns:uac2-0="GlobalImportedAggregateSchema"
xmlns:ubc2-0="GlobalImportedBasicSchema" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="SomeDocument
GlobalDocumentSchema.xsd">
<Something>
<uac2-0:SomeReference>
<ubc2-0:SomeID
ID="String">normalizedString</ubc2-0:SomeID>
</uac2-0:SomeReference>
</Something>
</SomeDocument>
Example of Local NDR:
Document Schema -
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns="SomeDocument" xmlns:AIAS="LocalImportedAggregateSchema"
xmlns:AIBS="LocalImportedBasicSchema" xmlns:xs="
http://www.w3.org/2001/XMLSchema"
targetNamespace="SomeDocument" elementFormDefault="qualified"
attributeFormDefault="unqualified" version="1.0">
<xs:import
namespace="LocalImportedAggregateSchema"
schemaLocation="LocalImportedAggregateSchema.xsd"/>
<xs:import
namespace="LocalImportedBasicSchema"
schemaLocation="LocalImportedBasicSchema.xsd"/>
<xs:element
name="SomeDocument" type="SomeDocumentType"/>
<xs:complexType
name="SomeDocumentType">
<xs:sequence>
<xs:element
name="Something" type="AIAS:SomethingType"
minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
Example Document -
<?xml version="1.0" encoding="UTF-8"?>
<SomeDocument
xmlns:AIAS="LocalImportedAggregateSchema" xmlns:AIBS="LocalImportedBasicSchema"
xmlns="SomeDocument" xmlns:uac2-0="GlobalImportedAggregateSchema"
xmlns:ubc2-0="GlobalImportedBasicSchema" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="SomeDocument
LocalDocumentSchema.xsd">
<Something>
<AIAS:SomeReference>
<AIBS:SomeID
ID="String">normalizedString</AIBS:SomeID>
</AIAS:SomeReference>
</Something>
</SomeDocument>
Sample Stylesheet (for the transformation of the document
schemas):
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
version="2.0" xmlns:xsl="
http://www.w3.org/1999/XSL/Transform"
xmlns:fn="
http://www.w3.org/2005/02/xpath-functions"
xmlns:xdt="
http://www.w3.org/2005/02/xpath-datatypes"
xmlns:ubc2-0="GlobalImportedBasicSchema"
xmlns:uac2-0="GlobalImportedAggregateSchema" xmlns:xsd="
http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="uac2-0 ubc2-0 xsd fn xdt" >
<xsl:output
method="xml" version="1.0" encoding="UTF-8"
indent="yes"/>
<xsl:template
match="/">
<xsl:for-each
select="xsd:schema">
<xs:schema
xmlns:AIBS="LocalImportedBasicSchema" xmlns:AIAS="LocalImportedAggregateSchema"
xmlns:xs="
http://www.w3.org/2001/XMLSchema"
xmlns="SomeDocument">
<xsl:attribute
name="targetNamespace"><xsl:value-of
select="@targetNamespace"/></xsl:attribute>
<xsl:attribute
name="elementFormDefault"><xsl:value-of
select="@elementFormDefault"/></xsl:attribute>
<xsl:attribute
name="attributeFormDefault"><xsl:value-of
select="@attributeFormDefault"/></xsl:attribute>
<xsl:attribute
name="version"><xsl:value-of
select="@version"/></xsl:attribute>
<xs:import>
<xsl:attribute
name="namespace">LocalImportedAggregateSchema</xsl:attribute>
<xsl:attribute
name="schemaLocation">LocalImportedAggregateSchema.xsd</xsl:attribute>
</xs:import>
<xs:import>
<xsl:attribute
name="namespace">LocalImportedBasicSchema</xsl:attribute>
<xsl:attribute
name="schemaLocation">LocalImportedBasicSchema.xsd</xsl:attribute>
</xs:import>
<xsl:for-each
select="xsd:element[1]">
<xs:element>
<xsl:attribute
name="name"><xsl:value-of
select="@name"/></xsl:attribute>
<xsl:attribute
name="type"><xsl:value-of
select="@type"/></xsl:attribute>
</xs:element>
</xsl:for-each>
<!--
xsd:element[>1] could be used (with XSLT 2.0 say) to contribute to the
imported schema content -->
<xsl:for-each
select="xsd:complexType">
<xs:complexType>
<xsl:attribute
name="name"><xsl:value-of
select="@name"/></xsl:attribute>
<xs:sequence>
<xsl:for-each
select="xsd:sequence/xsd:element">
<xs:element>
<xsl:attribute
name="name"><xsl:value-of
select="@ref"/></xsl:attribute>
<xsl:attribute
name="type"><xsl:value-of select="concat('AIAS:', @ref,
'Type')"/></xsl:attribute>
<xsl:attribute
name="minOccurs"><xsl:value-of
select="@minOccurs"/></xsl:attribute>
</xs:element>
</xsl:for-each>
</xs:sequence>
</xs:complexType>
</xsl:for-each>
</xs:schema>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Imported Schemas:
Global NDR Imported Aggregate Schema -
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
xmlns:xsd="
http://www.w3.org/2001/XMLSchema"
xmlns="GlobalImportedAggregateSchema" xmlns:ubc2-0="GlobalImportedBasicSchema"
targetNamespace="GlobalImportedAggregateSchema" elementFormDefault="qualified"
attributeFormDefault="unqualified" version="test">
<xsd:import
namespace="GlobalImportedBasicSchema"
schemaLocation="GlobalImportedBasicSchema.xsd"/>
<xsd:element
name="Something" type="SomethingType"/>
<xsd:element
name="SomeReference" type="SomeReferenceType"/>
<xsd:complexType
name="SomethingType">
<xsd:sequence>
<xsd:element
ref="SomeReference"
minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType
name="SomeReferenceType">
<xsd:sequence>
<xsd:element
ref="ubc2-0:SomeID"
minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
Global NDR Imported Basic Schema -
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
xmlns:xsd="
http://www.w3.org/2001/XMLSchema"
xmlns="GlobalImportedBasicSchema" xmlns:udt="SchemaModule"
targetNamespace="GlobalImportedBasicSchema" elementFormDefault="qualified"
attributeFormDefault="unqualified" version="test">
<xsd:import
namespace="SchemaModule"
schemaLocation="UnqualifiedDataType.xsd"/>
<xsd:element
name="SomeID" type="IdentifierType"/>
<xsd:complexType
name="IdentifierType">
<xsd:simpleContent>
<xsd:extension
base="udt:IdentifierType"/>
</xsd:simpleContent>
</xsd:complexType>
</xsd:schema>
Common Datatypes Schema ('Unqualified') -
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
targetNamespace="SchemaModule" xmlns:udt="SchemaModule" xmlns:xsd="
http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xsd:complexType
name="IdentifierType">
<xsd:simpleContent>
<xsd:extension
base="xsd:normalizedString">
<xsd:attribute
name="ID" type="xsd:normalizedString"
use="optional">
</xsd:attribute>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:schema>
Local NDR Imported Aggregate Schema -
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
xmlns:xsd="
http://www.w3.org/2001/XMLSchema"
xmlns="LocalImportedAggregateSchema" xmlns:AIBS="LocalImportedBasicSchema"
targetNamespace="LocalImportedAggregateSchema" elementFormDefault="qualified"
attributeFormDefault="unqualified" version="test">
<xsd:import
namespace="LocalImportedBasicSchema"
schemaLocation="LocalImportedBasicSchema.xsd"/>
<xsd:complexType
name="SomethingType">
<xsd:sequence>
<xsd:element
name="SomeReference" type="AIBS:SomeReferenceType"
minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
Local NDR Imported Basic Schema -
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
xmlns:xsd="
http://www.w3.org/2001/XMLSchema"
xmlns="LocalImportedBasicSchema" xmlns:udt="SchemaModule"
targetNamespace="LocalImportedBasicSchema" elementFormDefault="qualified"
attributeFormDefault="unqualified" version="test">
<xsd:import
namespace="SchemaModule"
schemaLocation="UnqualifiedDataType.xsd"/>
<xsd:complexType
name="SomeReferenceType">
<xsd:sequence>
<xsd:element
name="SomeID"
type="udt:IdentifierType"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>