<?xml version="1.0" encoding="ISO-8859-1"?><?xml-stylesheet href="Book-to-HTML.xsl" type="text/xsl"?><!--DOCTYPE book SYSTEM "../../../../Docbook/DTD-version-4.2/docbookx.dtd" [--><book xreflabel="UBL-NDRProfile.xml">
   <title>Universal Business Language (UBL) Naming and Design Rules</title>
   <bookinfo>
      <title>Universal Business Language (UBL) Naming and Design Rules</title>
      <date>19 July 2006</date>
      <pubsnumber>cd-UBL-NDR-2.0</pubsnumber>
      <authorgroup>
         <editor>
            <personname>
               <firstname>Mavis </firstname>
               <surname>Cournane,</surname>
            </personname>
            <address>
               <affiliation>
                  <orgname>Cognitran Limited </orgname>
               </affiliation>
            </address>
            <email>mavis.Cournane@cognitran.com</email>
         </editor>
         <editor>
            <personname>
               <firstname>Mike </firstname>
               <surname>Grimley</surname>
            </personname>
            <address>
               <affiliation>
                  <orgname>US Navy </orgname>
               </affiliation>
            </address>
            <email>MJGrimley@acm.org</email>
         </editor>
      </authorgroup>
      <copyright>
         <year>2001</year>
         <year>2002</year>
         <year>2003</year>
         <year>2004</year>
         <holder> The Organization for the Advancement of Structured Information Standards [OASIS] </holder>
      </copyright>
      <contrib>Mark Crawford SAP
</contrib>
      <contrib>Bill Burcham, Sterling Commerce
</contrib>
      <contrib>Fabrice Desré, France Telecom
</contrib>
      <contrib>Matt Gertner, Schemantix
</contrib>
      <contrib>Jessica Glace, LMI
</contrib>
      <contrib>Arofan Gregory, Aeon LLC 
</contrib>
      <contrib>Michael Grimley, US Navy
</contrib>
      <contrib>Eduardo Gutentag, Sun Microsystems
</contrib>
      <contrib>Sue Probert, CommerceOne
</contrib>
      <contrib>Gunther Stuhec, SAP
</contrib>
      <contrib>Paul Thorpe, OSS Nokalva
</contrib>
      <contrib>Jim Wilson, CIDX </contrib>
   </bookinfo>
   <chapter>
      <title>Universal Business Language (UBL) Naming and Design Rules</title>
      <!--I don't know what to do with these pieces of information.-->
      <para role="Titlepageinfo">Past Chair</para>
      <orderedlist>
         <listitem>
            <para role="Titlepageinfodescription">Eve Maler, Sun Microsystems &lt;eve.maler@sun.com&gt;</para>
         </listitem>
      </orderedlist>
      <abstract>
         <title>Abstract:</title>
         <para role="Titlepageinfodescription">This specification documents the naming and design rules and guidelines for the construction of XML components for the UBL vocabulary.</para>
         <para role="Legalnotice">Copyright © 2001, 2002, 2003, 2004 The Organization for the Advancement of Structured Information Standards [OASIS] </para>
      </abstract>
      <section>
         <title>Status:</title>
         <para role="Titlepageinfodescription">This document has been approved by the OASIS Universal Business Language Technical Committee as a Committee Draft and is submitted for consideration as an OASIS Standard </para>
      </section>
   </chapter>
   <chapter>
      <title>
         <emphasis role="bold"/>Introduction</title>
      <para role="SpecificationText">XML is often described as the lingua franca of e-commerce. The implication is that by standardizing on XML, enterprises will be able to trade with anyone, any time, without the need for the costly custom integration work that has been necessary in the past. But this vision of XML-based &#8220;plug-and-play&#8221; commerce is overly simplistic. Of course XML can be used to create electronic catalogs, purchase orders, invoices, shipping notices, and the other documents needed to conduct business. But XML by itself doesn't guarantee that these documents can be understood by any business other than the one that creates them. XML is only the foundation on which additional standards can be defined to achieve the goal of true interoperability. The Universal Business Language (UBL) initiative is the next step in achieving this goal.</para>
      <para role="SpecificationText">The task of creating a universal XML business language is a challenging one. Most large enterprises have already invested significant time and money in an e-business infrastructure and are reluctant to change the way they conduct electronic business. Furthermore, every company has different requirements for the information exchanged in a specific business process, such as procurement or supply-chain optimization. A standard business language must strike a difficult balance, adapting to the specific needs of a given company while remaining general enough to let different companies in different industries communicate with each other.</para>
      <para>The UBL effort addresses this problem by building on the work of the electronic business XML (ebXML) initiative. The ebXML effort, currently continuing development in the Organization for the Advancement of Structured Information Standards (OASIS), is an initiative to develop a technical framework that enables XML and other payloads to be utilized in a consistent manner for the exchange of all electronic business data. UBL is organized as an OASIS Technical Committee to guarantee a rigorous, open process for the standardization of the XML business language. The development of UBL within OASIS also helps ensure a fit with other essential ebXML specifications. UBL will be promoted to the level of international standard.</para>
      <para role="SpecificationText">The UBL Technical Committee has established the UBL Naming and Design Rules Subcommittee with the charter to "Recommend to the TC rules and guidelines for normative-form schema design, instance design, and markup naming, and write and maintain documentation of these rules and guidelines". Accordingly, this specification documents the rules and guidelines for the naming and design of XML components for the UBL library. It contains only rules that have been agreed on by the OASIS UBL Naming and Design Rules Subcommittee (NDR SC). Proposed rules, and rationales for those that have been agreed on, appear in the accompanying NDR SC position papers, which are available at http://www.oasis-open.org/committees/ubl/ndrsc/.</para>
      <section>
         <title>Audiences</title>
         <para role="SpecificationText">This document has several primary and secondary targets that together constitute its intended audience. Our primary target audience is the members of the UBL Technical Committee. Specifically, the UBL Technical Committee will use the rules in this document to create normative form schema for business transactions. Developers implementing ebXML Core Components may find the rules contained herein sufficiently useful to merit adoption as, or infusion into, their own approaches to ebXML Core Component based XML schema development. All other XML Schema developers may find the rules contained herein sufficiently useful to merit consideration for adoption as, or infusion into, their own approaches to XML schema development.</para>
      </section>
      <section>
         <title>Scope</title>
         <para role="SpecificationText">This specification conveys a normative set of XML schema design rules and naming conventions for the creation of business based XML schema for business documents being exchanged between two parties using XML constructs defined in accordance with the ebXML Core Components Technical Specification.</para>
      </section>
      <section>
         <title>Terminology and Notation</title>
         <para>The key words <emphasis role="bold">MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, SHOULD NOT, RECOMMENDED, MAY,</emphasis> and <emphasis role="bold">OPTIONAL</emphasis> in this document are to be interpreted as described in Internet Engineering Task Force (IETF) Request for Comments (RFC) 2119. Non-capitalized forms of these words are used in the regular English sense.</para>
         <glosslist>
            <glossentry>
               <glossterm>Definition</glossterm>
               <glossdef>
                  <para role="BodyText">A formal definition of a term. Definitions are normative.</para>
               </glossdef>
            </glossentry>
            <glossentry>
               <glossterm>Example</glossterm>
               <glossdef>
                  <para role="BodyText"> A representation of a definition or a rule. Examples are informative.</para>
               </glossdef>
            </glossentry>
            <glossentry>
               <glossterm>Note</glossterm>
               <glossdef>
                  <para role="BodyText">Explanatory information. Notes are informative.</para>
               </glossdef>
            </glossentry>
            <glossentry>
               <glossterm>RRR<emphasis role="italics">n</emphasis>
               </glossterm>
               <glossdef>
                  <para role="BodyText"> Identification of a rule that requires conformance to ensure that an XML Schema is UBL conformant. The value RRR is a prefix to categorize the type of rule where the value of RRR is as defined in Table 1 and n (1..n) indicates the sequential number of the rule within its category. In order to ensure continuity across versions of the specification, rule numbers that are deleted in future versions will not be re-issued, and any new rules will be assigned the next higher number &#8211; regardless of location in the text. Future versions will contain an appendix that lists deleted rules and the reason for their deletion. Only rules and definitions are normative; all other text is explanatory. </para>
               </glossdef>
            </glossentry>
         </glosslist>
         <para role="Caption">
            <emphasis>Figure 1 - Rule Prefix Token Value</emphasis>
         </para>
         <informaltable>
            <tgroup cols="2">
               <colspec colwidth="217px" colname="col1"/>
               <colspec colwidth="337px" colname="col2"/>
               <tbody>
                  <row>
                     <entry>
                        <para role="BodyText">Rule Prefix Token</para>
                     </entry>
                     <entry>
                        <para role="BodyText">Value</para>
                     </entry>
                  </row>
                  <row>
                     <entry>
                        <para role="BodyText">ATD</para>
                     </entry>
                     <entry>
                        <para role="BodyText">Attribute Declaration</para>
                     </entry>
                  </row>
                  <row>
                     <entry>
                        <para role="BodyText">ATN</para>
                     </entry>
                     <entry>
                        <para role="BodyText">Attribute Naming</para>
                     </entry>
                  </row>
                  <row>
                     <entry>
                        <para role="BodyText">CDL</para>
                     </entry>
                     <entry>
                        <para role="BodyText">Code List</para>
                     </entry>
                  </row>
                  <row>
                     <entry>
                        <para role="BodyText">CTD</para>
                     </entry>
                     <entry>
                        <para role="BodyText">ComplexType Definition</para>
                     </entry>
                  </row>
                  <row>
                     <entry>
                        <para role="BodyText">DOC</para>
                     </entry>
                     <entry>
                        <para role="BodyText">Documentation</para>
                     </entry>
                  </row>
                  <row>
                     <entry>
                        <para role="BodyText">ELD</para>
                     </entry>
                     <entry>
                        <para role="BodyText">Element Declaration</para>
                     </entry>
                  </row>
                  <row>
                     <entry>
                        <para role="BodyText">ELN</para>
                     </entry>
                     <entry>
                        <para role="BodyText">Element Naming</para>
                     </entry>
                  </row>
                  <row>
                     <entry>
                        <para role="BodyText">GNR</para>
                     </entry>
                     <entry>
                        <para role="BodyText">General Naming</para>
                     </entry>
                  </row>
                  <row>
                     <entry>
                        <para role="BodyText">GTD</para>
                     </entry>
                     <entry>
                        <para role="BodyText">General Type Definition</para>
                     </entry>
                  </row>
                  <row>
                     <entry>
                        <para role="BodyText">GXS</para>
                     </entry>
                     <entry>
                        <para role="BodyText">General XML Schema</para>
                     </entry>
                  </row>
                  <row>
                     <entry>
                        <para role="BodyText">IND</para>
                     </entry>
                     <entry>
                        <para role="BodyText">Instance Document</para>
                     </entry>
                  </row>
                  <row>
                     <entry>
                        <para role="BodyText">MDC</para>
                     </entry>
                     <entry>
                        <para role="BodyText">Modeling Constraints</para>
                     </entry>
                  </row>
                  <row>
                     <entry>
                        <para role="BodyText">NMC</para>
                     </entry>
                     <entry>
                        <para role="BodyText">Naming Constraints</para>
                     </entry>
                  </row>
                  <row>
                     <entry>
                        <para role="BodyText">NMS</para>
                     </entry>
                     <entry>
                        <para role="BodyText">Namespace</para>
                     </entry>
                  </row>
                  <row>
                     <entry>
                        <para role="BodyText">RED</para>
                     </entry>
                     <entry>
                        <para role="BodyText">Root Element Declaration</para>
                     </entry>
                  </row>
                  <row>
                     <entry>
                        <para role="BodyText">SSM</para>
                     </entry>
                     <entry>
                        <para role="BodyText">Schema Structure Modularity</para>
                     </entry>
                  </row>
                  <row>
                     <entry>
                        <para role="BodyText">STA</para>
                     </entry>
                     <entry>
                        <para role="BodyText">Standards Adherence</para>
                     </entry>
                  </row>
                  <row>
                     <entry>
                        <para role="BodyText">VER</para>
                     </entry>
                     <entry>
                        <para role="BodyText">Versioning</para>
                     </entry>
                  </row>
               </tbody>
            </tgroup>
         </informaltable>
         <para>
            <emphasis role="bold">Bold</emphasis> &#8211; The bolding of words is used to represent example names or parts of names taken from the library.</para>
         <para role="BodyText">Courier &#8211; All words appearing in courier font are values, objects, and keywords.</para>
         <para>
            <emphasis role="italics">Italics</emphasis> &#8211; All words appearing in italics, when not titles or used for emphasis, are special terms defined in Appendix C.</para>
         <para>Keywords &#8211; keywords reflect concepts or constructs expressed in the language of their source standard.  Keywords have been given an identifying prefix to reflect their source.  The following prefixes are used:</para>
         <para>xsd: &#8211; represents W3C XML Schema Definition Language. If a concept, the words will be in upper camel case, and if a construct, they will be in lower camel case.</para>
         <para>xsd: &#8211; complexType represents an XSD construct</para>
         <para>xsd: &#8211; SchemaExpression represents a concept</para>
         <para>ccts: &#8211; represents ISO 15000-5 ebXML Core Components Technical Specification</para>
         <para>ubl: &#8211; represents the OASIS Universal Business Language</para>
         <para>The terms &#8220;W3C XML Schema&#8221; and &#8220;XSD&#8221; are used throughout this document. They are considered synonymous; both refer to XML Schemas that conform to Parts 1 and 2 of the W3C <emphasis role="italics">XML Schema Definition Language </emphasis>(XSD) Recommendations. See Appendix C for additional term definitions.</para>
      </section>
      <section>
         <title>Guiding Principles</title>
         <para>The UBL guiding principles encompass three areas:</para>
         <para role="listbul">General UBL guiding principles</para>
         <para role="listbul">Extensibility</para>
         <para role="listbul">Code generation</para>
         <section>
            <title>Adherence to General UBL Guiding Principles</title>
            <para>The UBL Technical Committee has approved a set of high-level guiding principles. The UBL Naming and Design Rules Subcommittee (NDRSC) has followed these high-level guiding principles for the design of UBL NDR. These UBL guiding principles are:</para>
            <para role="listbul">Internet Use &#8211; UBL shall be straightforwardly usable over the Internet.</para>
            <para role="listbul">Interchange and Application Use &#8211; UBL is intended for interchange and application use.</para>
            <para role="listbul">Tool Use and Support &#8211; The design of UBL will not make any assumptions about sophisticated tools for creation, management, storage, or presentation being available. The lowest common denominator for tools is incredibly low (for example, Notepad) and the variety of tools used is staggering. We do not see this situation changing in the near term.</para>
            <para role="listbul">Legibility &#8211; UBL documents should be human-readable and reasonably clear.</para>
            <para role="listbul">Simplicity &#8211; The design of UBL must be as simple as possible (but no simpler).</para>
            <para role="listbul">80/20 Rule &#8211; The design of UBL should provide the 20% of features that accommodate 80% of the needs.</para>
            <para role="listbul">Component Reuse &#8211;The design of UBL document types should contain as many common features as possible. The nature of e-commerce transactions is to pass along information that gets incorporated into the next transaction down the line. For example, a purchase order contains information that will be copied into the purchase order response. This forms the basis of our need for a core library of reusable components. Reuse in this context is important, not only for the efficient development of software, but also for keeping audit trails.</para>
            <para role="listbul">Standardization &#8211; The number of ways to express the same information in a UBL document is to be kept as close to one as possible.</para>
            <para role="listbul">Domain Expertise &#8211; UBL will leverage expertise in a variety of domains through interaction with appropriate development efforts.</para>
            <para role="listbul">Customization and Maintenance &#8211; The design of UBL must facilitate customization and maintenance.</para>
            <para role="listbul">Context Sensitivity &#8211; The design of UBL must ensure that context-sensitive document types aren&#8217;t precluded.</para>
            <para role="listbul">Prescriptiveness &#8211; UBL design will balance prescriptiveness in any single usage scenario with prescriptiveness across the breadth of usage scenarios supported. Having precise, tight content models and datatypes is a good thing (and for this reason, we might want to advocate the creation of more document type &#8220;flavors&#8221; rather than less). However, in an interchange format, it is often difficult to get the prescriptiveness that would be desired in any single usage scenario.</para>
            <para role="listbul">Content Orientation &#8211; Most UBL document types should be as &#8220;content-oriented&#8221; (as opposed to merely structural) as possible. Some document types, such as product catalogs, will likely have a place for structural material such as paragraphs, but these will be rare.</para>
            <para role="listbul">XML Technology &#8211; UBL design will avail itself of standard XML processing technology wherever possible (XML itself, XML Schema, XSLT, XPath, and so on). However, UBL will be cautious about basing decisions on &#8220;standards&#8221; (foundational or vocabulary) that are works in progress.</para>
            <para role="listbul">Relationship to Other Namespaces &#8211; UBL design will be cautious about making dependencies on other namespaces. UBL does not need to reuse existing namespaces wherever possible. For example, XHTML might be useful in catalogs and comments, but it brings its own kind of processing overhead, and if its use is not prescribed carefully it could harm our goals for content orientation as opposed to structural markup.</para>
            <para role="listbul">Legacy formats &#8211; UBL is not responsible for catering to legacy formats; companies (such as ERP vendors) can compete to come up with good solutions to permanent conversion. This is not to say that mappings to and from other XML dialects or non-XML legacy formats wouldn&#8217;t be very valuable.</para>
            <para role="listbul">Relationship to xCBL &#8211; UBL will not be a strict subset of xCBL, nor will it be explicitly compatible with it in any way.<xref linkend="UBL-fn-3"/>
               <footnote id="UBL-fn-3">
                  <para role="FootnoteText"> XML Common Business Library (xCBL) is a set of XML business documents and their components.</para>
               </footnote>
            </para>
         </section>
         <section>
            <title>Design For Extensibility</title>
            <para role="SpecificationText">Many e-commerce document types are, broadly speaking, useful but require minor structural modifications for specific tasks or markets. When a truly common XML structure is to be established for e-commerce, it needs to be easy and inexpensive to modify.</para>
            <para role="SpecificationText">Many data structures used in e-commerce are very similar to &#8217;standard&#8216; data structures, but have some significant semantic difference native to a particular industry or process. In traditional Electronic Data Interchange (EDI), there has been a gradual increase in the number of published components to accommodate market-specific variations. Handling these variations are a requirement, and one that is not easy to meet. A related EDI phenomenon is the overloading of the meaning and use of existing elements, which greatly complicates interoperation.</para>
            <para role="SpecificationText">To avoid the high degree of cross-application coordination required to handle structural variations common to EDI and XML based systems&#8211;it is necessary to accommodate the required variations in basic data structures without either overloading the meaning and use of existing data elements, or requiring wholesale addition of new data elements. This can be accomplished by allowing implementers to specify new element types that inherit the properties of existing elements, and to also specify exactly the structural and data content of the modifications.</para>
            <para>This approach can be expressed by saying that extensions of core elements are driven by context.<xref linkend="UBL-fn-4"/>
               <footnote id="UBL-fn-4">
                  <para> ebXML, Core Components Technical Specification &#8211; Part 8 of the ebXML Technical Framework, V2.01, 15 November, 2003</para>
               </footnote> Context driven extensions should be renamed to distinguish them from their parents, and designed so that only the new elements require new processing. Similarly, data structures should be designed so that processes can be easily engineered to ignore additions that are not needed. The UBL context methodology is discussed in the <emphasis role="italics">Guidelines for the Customization of UBL Schemas </emphasis>available as part of UBL 1.0.</para>
         </section>
         <section>
            <title>Code Generation</title>
            <para>The UBL NDR makes no assumptions on the availability or capabilities of tools to generate UBL conformant XSD Schemas. In conformance with UBL guiding principles, the UBL NDR design process has scrupulously avoided establishing any naming or design rules that sub-optimize the UBL schemas in favor of tool generation. Additionally, in conformance with UBL guiding principles, the NDR is sufficiently rigorous to avoid requiring human judgment at schema generation time.</para>
         </section>
      </section>
      <section>
         <title>Choice of schema language</title>
         <para role="Legalnotice">The W3C XML Schema Definition Language has become the generally accepted schema language that is experiencing the most widespread adoption. Although other schema languages exist that offer their own advantages and disadvantages, UBL has determined that the best approach for developing an international XML business standard is to base its work on W3C XSD. </para>
         <para role="Rule-Standards">All UBL schema design rules MUST be based on the W3C XML Schema Recommendations: XML Schema Part 1: Structures and XML Schema Part 2: Datatypes.</para>
         <para role="SpecificationText">A W3C technical specification holding recommended status represents consensus within the W3C and has the W3C Director's stamp of approval. Recommendations are appropriate for widespread deployment and promote W3C's mission. Before the Director approves a recommendation, it must show an alignment with the W3C architecture. By aligning with W3C specifications holding recommended status, UBL can ensure that its products and deliverables are well suited for use by the widest possible audience with the best availability of common support tools.</para>
         <para role="Rule-Standards">All UBL schema and messages MUST be based on the W3C suite of technical specifications holding recommendation status.</para>
      </section>
   </chapter>
   <chapter>
      <title>Relationship to ebXML Core Components</title>
      <para>UBL employs the methodology and model described in <emphasis role="italics">Core Components Technical Specification, Part 8 of the ebXML Technical Framework, Version 2.01 </emphasis>of 15 November 2003 (CCTS) t<emphasis role="bold">o build the UBL Component Library. The Core Components work is a continuation of work that originated in, and remains a part of, the ebXML initiative. The Core Components concept defines a new paradigm in</emphasis> the design and implementation of reusable syntactically neutral information building blocks. Syntax neutral Core Components are intended to form the basis of business information standardization efforts and to be realized in syntactically specific instantiations such as ANSI ASC X12, UN/EDIFACT, and XML representations such as UBL.</para>
      <para>The essence of the Core Components specification is captured in context neutral and context specific building blocks. The context neutral components are defined as Core Components (ccts:CoreComponents). Context neutral ccts:CoreComponents are defined in CCTS as &#8220;A building block for the creation of a semantically correct and meaningful information exchange package. It contains only the information pieces necessary to describe a specific concept.&#8221;<xref linkend="UBL-fn-5"/>
         <footnote id="UBL-fn-5">
            <para role="FootnoteText"> Core Components Technical Specification, Part 8 of the ebXML Technical Framework Version 2.0 (Second Edition), UN/CEFACT, 15 November 2003</para>
         </footnote> Figure 2-1 illustrates the various pieces of the overall ccts:CoreComponents metamodel.</para>
      <para>The context specific components are defined as Business Information Entities (ccts:BusinessInformationEntities).<xref linkend="UBL-fn-6"/>
         <footnote id="UBL-fn-6">
            <para role="FootnoteText"> See CCTS Section 6.2 for a detailed discussion of the ebXML context mechanism.</para>
         </footnote> Context specific ccts:BusinessInformationEntities are defined in CCTS as &#8220;A piece of business data or a group of pieces of business data with a unique <emphasis role="italics">Business Semantic</emphasis> definition.&#8221;<xref linkend="UBL-fn-7"/>
         <footnote id="UBL-fn-7">
            <para role="FootnoteText"> Core Components Technical Specification, Part 8 of the ebXML Technical Framework Version 2.0 (Second Edition), UN/CEFACT, 15 November 2003</para>
         </footnote> Figure 2-2 illustrates the various pieces of the overall ccts:BusinessInformationEntity metamodel and their relationship with the ccts:CoreComponents metamodel.</para>
      <para>As shown in Figure 2-2, there are different types of ccts:CoreComponents and ccts:BusinessInformationEntities. Each type of ccts:CoreComponent and ccts:BusinessInformationEntity has specific relationships between and amongst the other components and entities. The context neutral ccts:CoreComponents are the linchpin that establishes the formal relationship between the various context-specific ccts:BusinessInformationEntities.</para>
      <figure>
         <title>Figure 2-1 Core Components and Datatypes Metamodel<xref linkend="UBL-fn-8"/>
            <footnote id="UBL-fn-8">
               <para role="FootnoteText"> Core Components Technical Specification, Part 8 of the ebXML Technical Framework Version 2.0 (Second Edition), UN/CEFACT, 15 November 2003</para>
            </footnote>
         </title>
         <graphic fileref="Figures/figure2-1.jpg"/>
      </figure>
      <figure id="figure2-2">
         <title>Figure 2-2. Business Information Entities Basic Definition Model</title>
         <graphic fileref="Figures/figure2-2.jpg"/>
      </figure>
      <section>
         <title>Mapping Business Information Entities to XSD</title>
         <para>UBL consists of a library of ccts:BusinessInformationEntities. In creating this library, UBL has defined how each of the ccts:BusinessInformationEntity components map to an XSD construct (See figure 2-3). In defining this mapping, UBL has analyzed the CCTS metamodel and determined the optimal usage of XSD to express the various ccts:BusinessInformationEntity components. As stated above, a </para>
         <figure>
            <title>Figure 2-3. UBL Document Metamodel </title>
            <graphic fileref="Figures/figure2-3.jpg"/>
         </figure>
         <para>ccts:BusinessInformationEntity can be a ccts:AggregateBusinessInformationEntity, a ccts:BasicBusinessInformationEntity, or a ccts:AssociationBusinessInformationEntity. In understanding the logic of the UBL binding of ccts:BusinessInformationEntities to XSD expressions, it is important to understand the basic constructs of the ccts:AggregateBusinessInformationEntities and their relationships as shown in Figure 2-2<xref linkend="figure2-2"/>. </para>
         <para>Both Aggregate and Basic Business Information Entities <emphasis role="italics">must</emphasis>
               have a unique name (Dictionary Entry Name). The ccts:AggregateBusinessInformationEntities are treated as objects and are defined as xsd:complexTypes. The ccts:BasicBusinessInformationEntities are treated as attributes of the ccts:AggregateBusinessInformationEntity and are found in the content model of the ccts:AggregateBusinessInformationEntity as a referenced xsd:element. The ccts:BasicBusinessInformationEntities are based on a reusable ccts:BasicBusinessInformationEntityProperty which are defined as xsd:complexTypes. </para>
         <para>A Basic Business Information Entity Property represents an <emphasis role="italics">intrinsic</emphasis> property of an Aggregate Business Information Entity. Basic Business Information Entity properties are linked to a Datatype. UBL uses two types of Datatypes &#8211; unqualified that are provided by the UN/CEFACT Unqualified Datatype (udt) schema module,  and qualified datatypes that are defined by UBL. </para>
         <para>UBL&#8217;s use of the UN/CEFACT Unqualified Datatype schema module is primarily confined to its importation. It must not be assumed that UBL&#8217;s adoption of the UDT schema module extends to any of  ATG&#8217;s rules that have a bearing on the use of the UDT. </para>
         <para>The ccts:UnqualifiedDatatypes correspond to ccts:RepresentationTerms. The ubl:QualifiedDatatypes are derived from ccts:UnqualifiedDatatypes with restrictions to the allowed values or ranges of the corresponding ccts:ContentComponent or ccts:SupplementaryComponent.</para>
         <para>CCTS defines an approved set of primary and secondary representation terms. However, these representation terms are simply naming conventions to identify the Datatype of an object, not actual constructs. These representation terms are in fact the basis for Datatypes as defined in the CCTS.</para>
         <para>A ccts:Datatype &#8220;defines the set of valid values that can be used for a particular <emphasis role="italics">Basic Core Component Property</emphasis> or <emphasis role="italics">Basic Business Information Entity Property</emphasis>
            <emphasis role="italics">Datatype</emphasis>&#8221;<xref linkend="UBL-fn-9"/>
            <footnote id="UBL-fn-9">
               <para role="FootnoteText"> Core Components Technical Specification, Part 8 of the ebXML Technical Framework Version 2.0 (Second Edition), UN/CEFACT, 15 November 2003</para>
            </footnote> The ccts:Datatypes can be either unqualified&#8212;no restrictions applied&#8212;or qualified through the application of restrictions. The sum total of the datatypes is then instantiated as the basis for the various XSD simple and complex types defined in the UBL schemas. CCTS supports datatypes that are qualified, i.e. it enables users to define their own datatypes for their syntax neutral constructs. Thus ccts:Datatypes allow UBL to identify restrictions for elements when restrictions to the corresponding ccts:ContentComponent or ccts:SupplementaryComponent are required.</para>
         <para>There are two kinds of Business Information Entity Properties - Basic and Association. A ccts:AssociationBusinessInformationEntityProperty represents an <emphasis role="italics">extrinsic </emphasis>property &#8211; in other words an association from one ccts:AggregateBusinessInformationEntityProperty instance to another ccts:AggregateBusinessInformationEntityProperty instance. It is the ccts:AggregateBusinessInformationEntityProperty that expresses the relationship between ccts:AggregateBusinessInformationEntities. Due to their unique extrinsic association role, ccts:AssociationBusinessInformationEntities are not defined as xsd:complexTypes, rather they are either declared as elements that are then bound to the xsd:complexType of the associated ccts:AggregateBusinessInformationEntity, or they are reclassified ABIEs.</para>
         <para role="Legalnotice">As stated above, ccts:BasicBusinessInformationEntities define the intrinsic structure of a ccts:AggregateBusinessInformationEntity. These ccts:BasicBusinessInformationEntities are the &#8220;leaf&#8221; types in the system in that they contain no ccts:AssociationBusinessInformationEntity properties. </para>
         <para role="Legalnotice">A ccts:BasicBusinessInformationEntity <emphasis role="italics">must</emphasis>
            <emphasis role="italics">have a </emphasis>ccts:CoreComponentType<emphasis role="italics">. </emphasis>All ccts:CoreComponentTypes are low-level types, such as Identifiers and Dates. A ccts:CoreComponentType describes these low-level types for use by ccts:CoreComponents, and (in parallel) a ccts:Datatype, corresponding to that ccts:CoreComponentType, describes these low-level types for use by ccts:BusinessInformationEntities. Every ccts:CoreComponentType has a single ccts:ContentComponent and one or more ccts:SupplementaryComponents. A ccts:ContentComponent is of some Primitive Type<emphasis role="italics">. </emphasis>All<emphasis role="italics"/>ccts:CoreComponentTypes and their corresponding content and supplementary components are pre-defined in the CCTS. UBL has developed an xsd:SchemaModule that defines each of the pre-defined ccts:CoreComponentTypes as an xsd:complexType or xsd:simpleType and declares ccts:SupplementaryComponents as an xsd:attribute or uses the predefined facets of the built-in xsd:Datatype for those that are used as the base expression for an xsd:simpleType. UBL continues to work with UN/CEFACT and the Open Applications Group to develop a single normative schema for representing ccts:CoreComponentTypes.</para>
      </section>
   </chapter>
   <chapter>
      <title>General XML Constructs</title>
      <para>This chapter defines UBL rules related to general XML constructs to include:</para>
      <itemizedlist>
         <listitem>
            <para>Overall Schema Structure</para>
         </listitem>
         <listitem>
            <para>Naming and Modeling Constraints</para>
         </listitem>
         <listitem>
            <para>Reusability Scheme</para>
         </listitem>
         <listitem>
            <para>Namespace Scheme</para>
         </listitem>
         <listitem>
            <para>Versioning Scheme</para>
         </listitem>
         <listitem>
            <para>Modularity Strategy</para>
         </listitem>
         <listitem>
            <para>Annotation and Documentation Requirements</para>
         </listitem>
      </itemizedlist>
      <section>
         <title>Overall Schema Structure</title>
         <para>A key aspect of developing standards is to ensure consistency in their development. Since UBL is envisioned to be a collaborative standards development effort, with liberal developer customization opportunities through use of the xsd:extension and xsd:restriction mechanisms, it is essential to provide a mechanism that will guarantee that each occurrence of a UBL conformant schema will have the same look and feel. </para>
         <para><ulink id="rule-GXS1" url="rule-GXS1">Link to Profile</ulink></para>
         <section>
            <title>Element declarations within document schemas</title>
            <para role="definition0"> [Definition] Document schema &#8211; </para>
            <para role="definition0">The overarching schema within a specific namespace that conveys the business document functionality of that namespace. The document schema declares a target namespace and is likely to xsd:include internal schema modules or xsd:import external schema modules. Each namespace will have one, and only one, document schema.</para>
            <para>In order to facilitate the management and reuse of UBL constructs, all global elements, excluding the root element of the document schema must reside in either the CAC or CBC schema modules.</para>
            <para><ulink id="rule-ELD10" url="rule-ELD10">Link to Profile</ulink></para>
         </section>
      </section>
      <section>
         <title>Naming and Modeling Constraints</title>
         <para>A key aspect of UBL is to base its work on process modeling and data analysis as precursors to developing the UBL library. In determining how best to affect this work, several constraints have been identified that directly impact both the process modeling and data analysis, and the resultant UBL Schema. </para>
         <section>
            <title>Naming Constraints</title>
            <para>A primary aspect of the UBL library documentation are its spreadsheet models. The entries in these spreadsheet models fully define the constructs available for use in UBL business documents. These spreadsheet entries contain fully conformant CCTS dictionary entry names as well as truncated UBL XML element names developed in conformance with the rules in section 4. The dictionary entry name ties the information to its standardized semantics, while the name of the corresponding XML element is only shorthand for this full name. The rules for element naming and dictionary entry naming are different.</para>
            <para><ulink id="rule-NMC1" url="rule-NMC1">Link to Profile</ulink></para>
            <para>The fully qualified path anchors the use of that construct to a particular location in a business message. The definition of the construct identifies any semantic dependencies that the FQP has on other elements and attributes within the UBL library that are not otherwise enforced or made explicit in its structural definition.</para>
         </section>
         <section>
            <title>Modeling Constraints</title>
            <para>In keeping with UBL guiding principles, modeling constraints are limited to those necessary to ensure consistency in development of the UBL library.</para>
            <section>
               <title>Defining Classes</title>
               <para>UBL is based on instantiating ebXML ccts:BusinessInformationEntities. UBL models and the XML expressions of those models are class driven. Specifically, the UBL library defines classes for each ccts:AggregateBusinessInformationEntity and the UBL schemas instantiate those classes. The attributes of those classes consist of ccts:BasicBusinessInformationEntities.</para>
            </section>
            <section>
               <title>Core Component Types</title>
               <para>Each ccts:BasicBusinessInformationEntity has an associated ccts:CoreComponentType. The CCTS specifies an approved set of ccts:CoreComponentTypes. To ensure conformance, UBL is limited to using this approved set.</para>
               <para><ulink id="rule-MDC1" url="rule-MDC1">Link to Profile</ulink></para>
               <para role="Legalnotice">Customization is a key aspect of UBL&#8217;s reusability across business verticals. The UBL rules have been developed in recognition of the need to support customizations. Specific UBL customization rules are detailed in the UBL customization guidelines. </para>
            </section>
            <section>
               <title>Mixed Content</title>
               <para role="Legalnotice">UBL documents are designed to effect data-centric electronic commerce. Including mixed content in business documents is undesirable because business transactions are based on exchange of discrete pieces of data that must be clearly unambiguous. The white space aspects of mixed content make processing unnecessarily difficult and add a layer of complexity not desirable in business exchanges.</para>
               <para><ulink id="rule-MDC2" url="rule-MDC2">Link to Profile</ulink></para>
            </section>
         </section>
      </section>
      <section>
         <title>Reusability Scheme</title>
         <para>The effective management of the UBL library requires that all element declarations are unique across the breadth of the UBL library. Consequently, UBL elements are declared globally.</para>
         <section>
            <title>Reusable Elements</title>
            <para>UBL elements are global and qualified. Hence in the example below, the &lt;Address&gt; element is directly reusable as a modular component and some software can be used without modification. </para>
            <para>Example</para>
            <para>Software written to work with UBL's standard library will work with new assemblies of the same components since global elements will remain consistent and unchanged. The globally declared &lt;Address&gt; element is fully reusable without regard to the reusability of types and provides a solid mechanism for ensuring that extensions to the UBL core library will provide consistency and semantic clarity regardless of its placement within a particular type.</para>
            <para><ulink id="rule-ELD2" url="rule-ELD2">Link to Profile</ulink></para>
         </section>
      </section>
      <section>
         <title>Extension Scheme</title>
         <para>There is a recognized requirement that some organizations are required by law to send additional information not covered by the UBL document structure, thus requiring an extension to the UBL message. The xsd:any construct is seen as the most efficient way to implement this requirement.</para>
         <para>In general, UBL restricts the use of xsd:any because this feature permits the introduction of potentially unknown elements into an XML instance. However, limiting its use to a single, predefined element mitigates this risk. Since it is a priority that there can be meaningful validation of the UBL document instances the value of the xsd:processContents attribute of the element must be set to &#8220;skip&#8221;, thereby removing the potential for errors in the validation layer. There is cardinality restriction in the case of extension.</para>
         <para><ulink id="rule-GXS14" url="rule-GXS14">Link to Profile</ulink></para>
         <para>The following rules apply in the order below.</para>
         <para><ulink id="rule-ELD12" url="rule-ELD12">Link to Profile</ulink></para>
         <para><ulink id="rule-ELD13" url="rule-ELD13">Link to Profile</ulink></para>
         <para><ulink id="rule-ELD14" url="rule-ELD14">Link to Profile</ulink></para>
      </section>
      <section>
         <title>Namespace Scheme</title>
         <para>The concept of XML namespaces is defined in the W3C XML namespaces technical specification.<xref linkend="UBL-fn-10"/>
            <footnote id="UBL-fn-10">
               <para role="FootnoteText"> Tim Bray, D Hollander, A Layman, R Tobin; Namespaces in XML 1.1, W3C Recommendation, February 2004.</para>
            </footnote> The use of XML namespace is specified in the W3C XML Schema (XSD) Recommendation. A namespace is declared in the root element of a Schema using a namespace identifier. Namespace declarations can also identify an associated prefix&#8212;shorthand identifier&#8212;that allows for compression of the namespace name. For each UBL namespace, a normative token is defined as its prefix. These tokens are defined in the versioning scheme section. </para>
         <section>
            <title>Declaring Namespaces</title>
            <para>Neither XML 1.0 nor XSD require the use of Namespaces. However the use of namespaces is essential to managing the complex UBL library. UBL will use UBL-defined schemas (created by UBL) and UBL-used schemas (created by external activities) and both require a consistent approach to namespace declarations.</para>
            <para><ulink id="rule-NMS1" url="rule-NMS1">Link to Profile</ulink></para>
            <para>Each UBL schema module consists of a logical grouping of lower level artifacts that together comprise an association that will be able to be used in a variety of UBL schemas. These schema modules are grouped into a schema set. Each schema set is assigned a namespace that identifies that group of schema modules. As constructs are changed, new versions will be created. The schema set is the versioned entity, all schema modules within that package are of the same version, and each version has a unique namespace.</para>
            <para role="definition0">[Definition] Schema Set &#8211;</para>
            <para role="definition0">A collection of schema instances that together comprise the names in a specific UBL namespace. </para>
            <para>Schema validation ensures that an instance conforms to its declared schema. There should never be two (different) schemas with the same namespace Uniform Resource Identifier (URI). In keeping with Rule NMS1, each UBL schema module will be part of a versioned namespace.</para>
            <para><ulink id="rule-NMS2" url="rule-NMS2">Link to Profile</ulink></para>
            <para>UBL&#8217;s extension methodology encourages a wide variety in the number of schema modules that are created as derivations from UBL schema modules. Clarity and consistency requires that customized schema not be confused with those developed by UBL.</para>
            <para><ulink id="rule-NMS3" url="rule-NMS3">Link to Profile</ulink></para>
         </section>
         <section>
            <title>Namespace Uniform Resource Identifiers</title>
            <para>A UBL namespace name must be a URI reference that conforms to RFC 2396.<xref linkend="UBL-fn-11"/>
               <footnote id="UBL-fn-11">
                  <para role="FootnoteText"> T. Berners-Lee, R. Fielding, L. Masinter; Internet Engineering Task Force (IETF) RFC 2396, Uniform Resource Identifiers (URI): Generic Syntax, Internet Society, August 1998.</para>
               </footnote> UBL<emphasis role="italics"/>has adopted the Uniform Resource Name (URN) scheme as the standard for URIs for UBLnamespaces, in conformance with IETF&#8217;s RFC 3121, as defined in this next section.<xref linkend="UBL-fn-12"/>
               <footnote id="UBL-fn-12">
                  <para role="FootnoteText"> Karl Best, N. Walsh,; Internet Engineering Task Force (IETF) RFC 3121, A URN Namespace for OASIS, June 2001.</para>
               </footnote>
            </para>
            <para>Rule NMS2 requires separate namespaces for each UBL schema set. The UBL namespace rules differentiate between committee draft and OASIS Standard status. For each schema holding draft status, a UBL namespace must be declared and named.</para>
            <para><ulink id="rule-NMS4" url="rule-NMS4">Link to Profile</ulink></para>
            <para>urn:oasis:names:tc:ubl:schema:&lt;subtype&gt;:&lt;document-id&gt;</para>
            <para role="Note">The format for document-id is found in the next section.</para>
            <para>For each UBL schema holding OASIS Standard status, a UBL namespace must be declared and named using the same notation, but with the value &#8216;specification&#8221; replacing the value &#8216;tc&#8217;.</para>
            <para><ulink id="rule-NMS5" url="rule-NMS5">Link to Profile</ulink></para>
         </section>
         <section>
            <title>Schema Location</title>
            <para>UBL schemas use a URN namespace scheme. In contrast, schema locations are typically defined as a Uniform Resource Locator (URL). UBL schemas must be available both at design time and run time. As such, the UBL schema locations will differ from the UBL namespace declarations. UBL, as an OASIS TC, will utilize an OASIS URL for hosting UBL schemas. UBL will use the committee directory http://www.oasis-open.org/committees/ubl/schema/.</para>
         </section>
         <section>
            <title>Persistence</title>
            <para>A key differentiator in selecting URNs to define UBL namespaces is URN persistence. UBL namespaces must never violate this functionality by subsequently changing once it has been declared. Conversely, changes to a schema may result in a new namespace declaration. Thus a published schema version and its namespace association will always be inviolate.</para>
            <para><ulink id="rule-NMS6" url="rule-NMS6">Link to Profile</ulink></para>
         </section>
      </section>
      <section>
         <title>Versioning Scheme</title>
         <para>UBL has adopted a two-layer versioning scheme. Major version information is captured within the namespace name of each UBL schema module while combined major and minor version information is captured within the xsd:version attribute of the xsd:schema element.</para>
         <para>UBL namespaces conform to the OASIS namespace rules defined in RFC 3121. <xref linkend="UBL-fn-13"/>
            <footnote id="UBL-fn-13">
               <para role="FootnoteText"> Karl Best, N. Walsh; Internet Engineering Task Force (IETF) RFC 3121, A URN Namespace for OASIS, June 2001.</para>
            </footnote> The last field of the namespace name is called document-id. UBL has decided to include versioning information as part of the document-id component of the namespace. Only major version information will be captured within the document-id. The major field has an optional revision extension which can be used for draft schemas. For example, the namespace URI for the draft Invoice domain has this form:</para>
         <para>urn:oasis:names:tc:ubl:schema:xsd:Invoice-&lt;major&gt;[.&lt;revision&gt;]</para>
         <para>The <emphasis role="italics">major-version</emphasis> field is &#8220;1&#8221; for the first release of a namespace. Subsequent major releases increment the value by 1. For example, the first namespace URI for the first major release of the Invoice document has the form:</para>
         <para>urn:oasis:names:tc:ubl:schema:xsd:Invoice-1</para>
         <para>The second major release will have a URI of the form:</para>
         <para>urn:oasis:names:tc:ubl:schema:xsd:Invoice-2</para>
         <para>In general, the namespace URI for every major release of the Invoice domain has the form:</para>
         <para>urn:oasis:names:tc:ubl:schema:xsd:Invoice:-&lt;major-number&gt;[.&lt;revision&gt;]</para>
         <para><ulink id="rule-VER1" url="rule-VER1">Link to Profile</ulink></para>
         <para><ulink id="rule-revision" url="rule-revision">Link to Profile</ulink></para>
         <para><ulink id="rule-VER11" url="rule-VER11">Link to Profile</ulink></para>
         <para><ulink id="rule-revision1" url="rule-revision1">Link to Profile</ulink></para>
         <para><ulink id="rule-VER2" url="rule-VER2">Link to Profile</ulink></para>
         <para>&lt;name&gt;-&lt;major&gt;</para>
         <para><ulink id="rule-VER12" url="rule-VER12">Link to Profile</ulink></para>
         <para>&lt;major&gt;.0</para>
         <para>For each document produced by the TC, the TC will determine the value of the &lt;name&gt; variable. In UBL, the major-version field must be changed in a release that breaks compatibility with the previous release of that namespace. If a change does not break compatibility then only the minor version need change. Subsequent minor releases begin with minor-version 1.</para>
         <para>Example</para>
         <para role="Example">The namespace URI for the first minor release of the Invoice domain has this form:</para>
         <para role="Example">urn:oasis:names:tc:ubl:schema:xsd:Invoice-&lt;major&gt;</para>
         <para role="Example">The value of the xsd:schema xsd:version attribute for the first minor release of the Invoice domain has this form:</para>
         <para role="Example">&lt;major&gt;.1</para>
         <para><ulink id="rule-VER3" url="rule-VER3">Link to Profile</ulink></para>
         <para><ulink id="rule-revision2" url="rule-revision2">Link to Profile</ulink></para>
         <para><ulink id="rule-VER13" url="rule-VER13">Link to Profile</ulink></para>
         <para><ulink id="rule-revision3" url="rule-revision3">Link to Profile</ulink></para>
         <para><ulink id="rule-VER4" url="rule-VER4">Link to Profile</ulink></para>
         <para>&lt;name&gt;-&lt;major&gt;</para>
         <para><ulink id="rule-VER14" url="rule-VER14">Link to Profile</ulink></para>
         <para>&lt;major&gt;.&lt;non-zero&gt;</para>
         <para>Once a schema version is assigned a namespace, that schema version and that namespace will be associated in perpetuity. However, because minor schema versions will retain the major version namespace, this is not a one-to-one relationship. </para>
         <para><ulink id="rule-VER5" url="rule-VER5">Link to Profile</ulink></para>
         <para>UBL is composed of a number of interdependent namespaces. For instance, namespaces whose URI&#8217;s start with urn:oasis:names:tc:ubl:schema:xsd:Invoice-* are dependent upon the common basic and aggregate namespaces, whose URI&#8217;s have the form urn:oasis:names:tc:ubl:schema:xsd:CommonBasicComponents-* and urn:oasis:names:tc:ubl:schema:xsd:CommonAggregateComponents-* respectively. If either of the common namespaces requires a major version change then its namespace URI must change. If its namespace URI changes then any schema that imports the <emphasis role="italics">new version</emphasis> of the namespace must also change (to update the namespace declaration). And since this would require a major version change to the importing schema, its namespace URI in turn must change. The outcome is twofold:</para>
         <para role="listbul">There should never be ambiguity at the point of reference in a namespace declaration or version identification. A dependent schema imports precisely the version of the namespace that is needed. The dependent schema never needs to account for the possibility that the imported namespace can change.</para>
         <para role="listbul">When a dependent schema is upgraded to import a new version of a schema, the dependent schema&#8217;s version must change.</para>
         <para>Minor version changes, however, would not require changes to the namespace URI of any schemas.</para>
         <para>Version numbers are based on a logical progression. All major and minor version numbers will be based on positive integers. Version numbers always increment positively by one.</para>
         <para><ulink id="rule-VER6" url="rule-VER6">Link to Profile</ulink></para>
         <para><ulink id="rule-VER7" url="rule-VER7">Link to Profile</ulink></para>
         <para>UBL version information will also be captured in instances of UBL document schemas via a ubl:UBLVersion element.</para>
         <para><ulink id="rule-VER15" url="rule-VER15">Link to Profile</ulink></para>
         <para>A minor revision (of a schema) <emphasis role="italics">imports</emphasis> the schema module for the previous version. For instance, the schema module defining xsd:version = &#8220;1.2&#8221;<emphasis role="italics"> will </emphasis>import the schema defining xsd:version = &#8220;1.1&#8221;</para>
         <para>The version 1.2 revision may define new complex types by extending version 1.1 types. It may define brand new complex types and elements by composition. It may also use the XSD redefine element to change the definition of a type or element in the 1.1 version as long as it only redefines via the xsd:extension mechanism.</para>
         <para>For a particular namespace, the minor versions of a major version form a linearly-linked family. The first minor version schema imports its parent major version schema. Each successive minor version schema imports the schema module of the preceding minor version.</para>
         <para>Example</para>
         <para role="Example">The minor version schema module defining xsd:version = &#8220;1.2&#8221; will import the minor version schema defining xsd:version = &#8220;1.1&#8221;  which will, in turn, import the major version schema defining xsd:version = &#8220;1.0&#8221;. Each of these schemas will have the namespace name that is declared in the major version 1.0 schema.</para>
         <para><ulink id="rule-VER8" url="rule-VER8">Link to Profile</ulink></para>
         <para>To ensure that backwards compatibility through polymorphic processing of minor versions within a major version always occurs, minor versions must be limited to certain allowed changes. This guarantee of backward compatibility is built into the xsd:extension mechanism. Thus, backward incompatible version changes can not be expressed using this mechanism.</para>
         <para><ulink id="rule-VER9" url="rule-VER9">Link to Profile</ulink></para>
         <para>In addition to polymorphic processing considerations, semantic compatibility across minor versions (as well as major versions) is essential. Semantic compatibility in this sense pertains to preserving the business function. This does not preclude the deprecation of a particular syntactic construct, and its replacement by a completely new syntactic construct with a new name.</para>
         <para><ulink id="rule-VER10" url="rule-VER10">Link to Profile</ulink></para>
      </section>
      <section>
         <title>Modularity Strategy</title>
         <para>There are many possible mappings of XML schema constructs to namespaces and to files. In addition to the logical taming of complexity that namespaces provide, dividing the physical realization of schema into multiple files&#8212;schema modules&#8212;provides a mechanism whereby reusable components can be imported as needed without the need to import overly complex complete schema. </para>
         <para><ulink id="rule-SSM1" url="rule-SSM1">Link to Profile</ulink></para>
         <para role="definition0">[Definition] schema module &#8211;</para>
         <para role="definition0">A schema document containing type definitions and element declarations intended to be reused in multiple schemas.</para>
         <section>
            <title>UBL Modularity Model</title>
            <para>UBL relies extensively on modularity in schema design. There is no single UBL root schema. Rather, there are a number of UBL document schemas, each of which expresses a separate business function. The UBL modularity approach is structured so that users can reuse individual document schemas without having to import the entire UBL document schema library. Additionally, a document schema can import individual modules without having to import all UBL schema modules. Each document schema will define its own dependencies. The UBL schema modularity model ensures that logical associations exist between document and internal schema modules and that individual modules can be reused to the maximum extent possible. This is accomplished through the use of document and internal schema modules as shown in Figure 3-1.</para>
            <para>If the contents of a namespace are small enough then they can be completely specified within a single schema.</para>
            <para role="Caption">Figure 3-1. UBL Schema Modularity Model</para>
            <para>Figure 3-1 shows the one-to-one correspondence between document schemas and namespaces. It also shows the one-to-one correspondence between files and schema modules. As shown in figure 3-1, there are two types of schema in the UBL library &#8211; document schema and schema modules. Document schemas are always in their own namespace. Schema modules may be in a document schema namespace as in the case of internal schema modules, or in a separate namespace as in the ubl:qdt, ubl:cbc, ubl:cac, ubl:cl, and ubl:ccts schema modules. Both types of schema modules are conformant with W3C XSD.</para>
            <para>A namespace is a collection of semantically related elements, types and attributes. For larger namespaces, schema modules &#8211; internal schema modules &#8211; may be defined. UBL document schemas may have zero or more internal modules that they include. The document schema for a namespace then includes those internal modules.</para>
            <para role="definition0"> [Definition] Internal schema module &#8211;</para>
            <para role="definition0">A schema that is part of a schema set within a specific namespace.</para>
            <para role="FigureTitle">Figure 3-2 Schema Modules</para>
            <para role="FigureTitle"/>
            <para>Another way to visualize the structure is by example. Figure 3-2 depicts instances of the various schema modules from the previous diagram.</para>
            <para role="Caption">Figure 3-3 Order and Invoice Schema Import of Common Component Schema Modules</para>
            <para>Figure 3-3 shows how the order and invoice document schemas import the "CommonAggregateComponents Schema Module&#8221; and &#8220;CommonBasicComponents Schema Module&#8221; external schema modules. It also shows how the order document schema includes various internal modules &#8211; modules local to that namespace. The clear boxes show how the various schema modules are grouped into namespaces.</para>
            <para>Any UBL schema module, be it a document schema or an internal module, may import other document schemas from other namespaces.</para>
            <section>
               <title>Limitations on Import</title>
               <para>If two namespaces are mutually dependent then clearly, importing one will cause the other to be imported as well. For this reason there <emphasis role="italics">must not</emphasis>
                  <emphasis role="italics"/>exist circular dependencies between UBL schema modules. By extension, there <emphasis role="italics">must not</emphasis> exist circular dependencies between namespaces. A namespace &#8220;A&#8221; dependent upon type definitions or element declaration defined in another namespace &#8220;B&#8221; must import &#8220;B&#8217;s&#8221; document schema.</para>
               <para><ulink id="rule-SSM2" url="rule-SSM2">Link to Profile</ulink></para>
               <para>To ensure there is no ambiguity in understanding this rule, an additional rule is necessary to address potentially circular dependencies as well &#8211; schema A must not import internal schema modules of schema B.</para>
               <para><ulink id="rule-SSM3" url="rule-SSM3">Link to Profile</ulink></para>
            </section>
            <section>
               <title>Module Conformance</title>
               <para>UBL has defined a set of naming and design rules that are carefully crafted to ensure maximum interoperability and standardization.</para>
               <para><ulink id="rule-SSM4" url="rule-SSM4">Link to Profile</ulink></para>
            </section>
         </section>
         <section>
            <title>Internal and External Schema Modules</title>
            <para>UBL will create schema modules which, as illustrated in Figure 3-1 and Figure 3-2, will either be located in the same namespace as the corresponding document schema, or in a separate namespace.</para>
            <para><ulink id="rule-SSM5" url="rule-SSM5">Link to Profile</ulink></para>
         </section>
         <section>
            <title>Internal Schema Modules</title>
            <para>UBL internal schema modules do not declare a target namespace, but instead reside in the namespace of their parent schema. All internal schema modules will be accessed using xsd:include.</para>
            <para><ulink id="rule-SSM6" url="rule-SSM6">Link to Profile</ulink></para>
            <para>UBL internal schema modules will necessarily have semantically meaningful names. Internal schema module names will identify the parent schema module, the internal schema module function, and the schema module itself. </para>
            <para><ulink id="rule-SSM7" url="rule-SSM7">Link to Profile</ulink></para>
         </section>
         <section>
            <title>External Schema Modules</title>
            <para>UBL is dedicated to maximizing reuse. As the complex types and global element declarations will be reused in multiple UBL schemas, a logical modularity approach is to create UBL schema modules based on collections of reusable types and elements.</para>
            <para><ulink id="rule-SSM8" url="rule-SSM8">Link to Profile</ulink></para>
            <para>As identified in rule SSM2, UBL will create external schema modules. These external schema modules will be based on logical groupings of contents. At a minimum, UBL schema modules will be comprised of:</para>
            <orderedlist>
               <listitem>
                  <para>UBL CommonAggregateComponents</para>
               </listitem>
               <listitem>
                  <para>UBL CommonBasicComponents</para>
               </listitem>
               <listitem>
                  <para>UBL Code List(s)</para>
               </listitem>
               <listitem>
                  <para>UBL Qualified Datatypes</para>
               </listitem>
               <listitem>
                  <para>CCTS Core Component Parameters (Used as a reference only.)</para>
               </listitem>
            </orderedlist>
            <para>In addition UBL will use the following schema modules provided by UN/CEFACT.</para>
            <orderedlist>
               <listitem>
                  <para>CCTS Core Component Types</para>
               </listitem>
               <listitem>
                  <para>CCTS Unqualified Datatypes</para>
               </listitem>
               <listitem>
                  <para>UN/CEFACT Code Lists</para>
               </listitem>
            </orderedlist>
            <para>Furthermore, where extensions are used an extension schema module must be provided. This schema module must be named:</para>
            <orderedlist>
               <listitem>
                  <para>CommonExtensionComponents</para>
               </listitem>
            </orderedlist>
            <para>This schema module must not import UBL-defined external schema modules.</para>
            <para><ulink id="rule-SSM21" url="rule-SSM21">Link to Profile</ulink></para>
            <section>
               <title>UBL Common Aggregate Components Schema Module</title>
               <para>The UBL library will also contain a wide variety of ccts:AggregateBusinessInformationEntities. As defined in rule CTD1, each of these ccts:AggregateBusinessInformationEntity classes will be defined as an xsd:complexType. Although some of these complex types may be used on only one UBL Schema, many will be reused in multiple UBL schema modules. An aggregation of all of the ccts:AggregateBusinessInformationEntity xsd:complexType definitions that are used in multiple UBL schema modules into a single schema module of common aggregate types will provide for maximum ease of reuse.</para>
               <para><ulink id="rule-SSM9" url="rule-SSM9">Link to Profile</ulink></para>
               <para>The normative name for this xsd:ComplexType schema module will be based on its ccts:AggregateBusinessInformationEntity content.</para>
               <para><ulink id="rule-SSM10" url="rule-SSM10">Link to Profile</ulink></para>
               <para>Example</para>
               <para role="Example">Document Name: CommonAggregateComponents</para>
               <section>
                  <title>UBL CommonAggregateComponents Schema Module Namespace</title>
                  <para>In keeping with the overall UBL namespace approach, a singular namespace must be created for storing the ubl:CommonAggregateComponents schema module.</para>
                  <para><ulink id="rule-NMS7" url="rule-NMS7">Link to Profile</ulink></para>
                  <para>To ensure consistency in expressing this module, a normative token that will be used consistently in all UBL Schemas must be defined. </para>
                  <para><ulink id="rule-NMS8" url="rule-NMS8">Link to Profile</ulink></para>
               </section>
            </section>
            <section>
               <title>UBL CommonBasicComponents Schema Module</title>
               <para>The UBL library will contain a wide variety of ccts:BasicBusinessInformationEntities. These ccts:BasicBusinessInformationEntities are based on ccts:BasicBusinessInformationEntityProperties. BBIE properties are reusable in multiple BBIEs. As defined in rule CTD25, each of these ccts:BasicBusinessInformationEntityProperties is defined as an xsd:complexType. Although some of these complex types may be used in only one UBL Schema, many will be reused in multiple UBL schema modules. To maximize reuse and standardization, all of the ccts:BasicBusinessInformationEntityProperty xsd:ComplexType definitions that are used in multiple UBL schema modules will be aggregated into a single schema module of common basic types. </para>
               <para><ulink id="rule-SSM11" url="rule-SSM11">Link to Profile</ulink></para>
               <para>The normative name for this schema module will be based on its ccts:BasicBusinessInformationEntityProperty xsd:ComplexType content.</para>
               <para><ulink id="rule-SSM12" url="rule-SSM12">Link to Profile</ulink></para>
               <section>
                  <title>UBL CommonBasicComponents Schema Module Namespace</title>
                  <para>In keeping with the overall UBL namespace approach, a singular namespace must be created for storing the ubl:CommonBasicComponents schema module.</para>
                  <para><ulink id="rule-NMS9" url="rule-NMS9">Link to Profile</ulink></para>
                  <para>To ensure consistency in expressing the ubl:CommonBasicComponents schema module, a normative token that will be used consistently in all UBL Schema must be defined.</para>
                  <para><ulink id="rule-NMS10" url="rule-NMS10">Link to Profile</ulink></para>
               </section>
            </section>
            <section>
               <title>CCTS CoreComponentType Schema Module</title>
               <para>The CCTS defines an authorized set of Core Component Types (ccts:CoreComponentTypes) that convey content and supplementary information related to exchanged data. As the basis for all higher level CCTS models, the ccts:CoreComponentTypes are reusable in every UBL schema. An external schema module consisting of a complex type definition for each ccts:CoreComponentType is essential to maximize reusability. UBL uses the ccts:CoreComponentType schema module provided by UN/CEFACT.</para>
            </section>
            <section>
               <title>CCTS Datatypes Schema Modules</title>
               <para>The CCTS defines an authorized set of primary and secondary Representation Terms (ccts:RepresentationTerms) that describes the form of every ccts:BusinessInformationEntity. These ccts:RepresentationTerms are instantiated in the form of datatypes that are reusable in every UBL schema. The ccts:Datatype defines the set of valid values that can be used for its associated ccts:BasicBusinessInformationEntity Property. These datatypes may be qualified or unqualified, that is to say restricted or unrestricted. We refer to these as ccts:UnqualifiedDatatypes (even though they are technically ccts:Datatypes)or ubl:QualifiedDatatypes. </para>
               <section>
                  <title>CCTS Unqualified Datatypes Schema Module</title>
                  <para>UBL has adopted the UN/CEFACT Unqualified Datatype schema module.This includes the four code list schema modules that are imported into this schema module. When the ccts:UnqualifiedDatatypes schema module is referenced the &#8220;udt&#8221; namespace prefix must be used. </para>
                  <para><ulink id="rule-NMS17" url="rule-NMS17">Link to Profile</ulink></para>
               </section>
               <section>
                  <title>UBL Qualified Datatypes Schema Module</title>
                  <para>The ubl:QualifiedDatatype is defined by specifying restrictions on the ccts:UnqualifiedDatatype. To ensure the consistency of UBL qualified Datatypes (ubl:QualifiedDatatypes) with the UBL modularity and reuse goals requires creating a single schema module that defines all ubl:QualifiedDatatypes. </para>
                  <para><ulink id="rule-SSM18" url="rule-SSM18">Link to Profile</ulink></para>
                  <para>The ubl:QualifiedDatatypes must be based upon the ccts:UnqualifiedDatypes.</para>
                  <para><ulink id="rule-SSM20" url="rule-SSM20">Link to Profile</ulink></para>
                  <para>The ubl:QualifiedDatatypes schema module name must follow the UBL module naming approach.</para>
                  <para><ulink id="rule-SSM19" url="rule-SSM19">Link to Profile</ulink></para>
               </section>
               <section>
                  <title>UBL Qualified Datatypes Schema Module Namespace</title>
                  <para role="NoteHeading">In keeping with the overall UBL namespace approach, a singular namespace must be created for storing the ubl:QualifiedDatatypes schema module.</para>
                  <para><ulink id="rule-NMS15" url="rule-NMS15">Link to Profile</ulink></para>
                  <para>To ensure consistency in expressing the ubl:QualifiedDatatypes schema module, a normative token that will be used in all UBL schemas must be defined.</para>
                  <para><ulink id="rule-NMS16" url="rule-NMS16">Link to Profile</ulink></para>
                  <para>To ensure consistency in expressing the CommonExtensionComponent schema moduel, a normative token that will be used in all UBL schemas must be defined.</para>
                  <para><ulink id="rule-NMS18" url="rule-NMS18">Link to Profile</ulink></para>
               </section>
            </section>
         </section>
      </section>
      <section>
         <title>Annotation and Documentation Requirements</title>
         <para>Annotation is an essential tool in understanding and reusing a schema. UBL, as an implementation of CCTS, requires an extensive amount of annotation to provide all necessary metadata required by the CCTS specification. Each construct declared or defined within the UBL library contains the requisite associated metadata to fully describe its nature and support the CCTS requirement. Accordingly, UBL schema metadata for each construct will be defined in the CCTS core component parameters schema.</para>
         <section>
            <title>Schema Annotation</title>
            <para>Although the UBL schema annotation is necessary, its volume results in a considerable increase in the size of the UBL schemas with undesirable performance impacts. To address this issue, two normative schema will be developed for each UBL schema. A fully annotated schema will be provided to facilitate greater understanding of the schema module and its components, and to meet the CCTS metadata requirements. A schema devoid of annotation will also be provided that can be used at run-time if required to meet processor resource constraints. </para>
            <para><ulink id="rule-GXS2" url="rule-GXS2">Link to Profile</ulink></para>
         </section>
         <section>
            <title>Embedded documentation</title>
            <para>The information about each UBL ccts:BusinessInformationEntity is in the UBL spreadsheet models. UBL spreadsheets contain all necessary information to produce fully annotated Schemas. Fully annotated Schemas are valuable tools to implementers to assist in understanding the nuances of the information contained therein. UBL annotations will consist of information currently required by Section 7 of the CCTS and supplemented by metadata from the UBL spreadsheet models. </para>
            <para>The absence of an optional annotation inside the structured set of annotations in the documentation element implies the use of the default value. For example, there are several annotations relating to context such as ccts:BusinessContext or ccts:IndustryContext whose absence implies that their value is "all contexts".</para>
            <para>The following rules describe the documentation requirements for each ubl:QualifiedDatatype and ccts:UnqualifiedDatatype definition. Consequently, none of these documentation rules apply in the case of extension where the 'UBL Extensions' element is used.</para>
            <para><ulink id="rule-DOC1" url="rule-DOC1">Link to Profile</ulink></para>
            <para>&#8226; DictionaryEntryName (mandatory)</para>
            <para>&#8226; Version (mandatory):</para>
            <para>&#8226; Definition(mandatory)</para>
            <para>&#8226; RepresentationTerm (mandatory) </para>
            <para>&#8226; QualifierTerm(s) (mandatory, where used)</para>
            <para>&#8226; UniqueIdentifier (mandatory)</para>
            <para>&#8226; Usage Rule(s) (optional)</para>
            <para>&#8226; Content Component Restriction (optional)</para>
            <para><ulink id="rule-DOC2" url="rule-DOC2">Link to Profile</ulink></para>
            <para>&#8226; RestrictionType (mandatory): Defines the type of format restriction that applies to the Content Component.</para>
            <para>&#8226; RestrictionValue (mandatory): The actual value of the format restriction that applies to the Content Component.</para>
            <para>&#8226; ExpressionType (optional): Defines the type of the regular expression of the restriction value.</para>
            <para><ulink id="rule-DOC3" url="rule-DOC3">Link to Profile</ulink></para>
            <para>&#8226; SupplementaryComponentName (mandatory): Identifies the Supplementary Component on which the restriction applies.</para>
            <para>&#8226; RestrictionValue (mandatory, repetitive): The actual value(s) that is (are) valid for the Supplementary Component</para>
            <para>The following rule describes the documentation requirements for each ccts:BasicBusinessInformationEntity definition.</para>
            <para><ulink id="rule-DOC4" url="rule-DOC4">Link to Profile</ulink></para>
            <para>&#8226; ComponentType (mandatory): The type of component to which the object belongs. For Basic Business Information Entities this must be &#8220;BBIE&#8221;.</para>
            <para>&#8226; DictionaryEntryName (mandatory): The official name of a Basic Business Information Entity.</para>
            <para>&#8226; Version (optional): An indication of the evolution over time of the Basic Business Information Entity.</para>
            <para>&#8226; Definition(mandatory): The semantic meaning of a Basic Business Information Entity.</para>
            <para>&#8226; Cardinality(mandatory): Indication whether the Basic Business Information Entity represents a not-applicable, optional, mandatory and/or repetitive characteristic of the Aggregate Business Information Entity.</para>
            <para>&#8226; ObjectClassQualifier (optional): The qualifier for the object class.</para>
            <para>&#8226; ObjectClass(mandatory): The Object Class containing the Basic Business Information Entity.</para>
            <para>&#8226; PropertyTermQualifier (optional): A qualifier is a word or words which help define and differentiate a Basic Business Information Entity.</para>
            <para>&#8226; PropertyTerm(mandatory): Property Term represents the distinguishing characteristic or Property of the Object Class and shall occur naturally in the definition of the Basic Business Information Entity. </para>
            <para>&#8226; RepresentationTerm (mandatory): A Representation Term describes the form in which the Basic Business Information Entity is represented. </para>
            <para>&#8226; DataTypeQualifier (optional): semantically meaningful name that differentiates the Datatype of the Basic Business Information Entity from its underlying Core Component Type. </para>
            <para>&#8226; DataType (mandatory): Defines the Datatype used for the Basic Business Information Entity.</para>
            <para>&#8226; AlternativeBusinessTerms (optional): Any synonym terms under which the Basic Business Information Entity is commonly known and used in the business.</para>
            <para>&#8226; Examples (optional): Examples of possible values for the Basic Business Information Entity.</para>
            <para>The following rule describes the documentation requirements for each ccts:AggregateBusinessInformationEntity definition.</para>
            <para><ulink id="rule-DOC5" url="rule-DOC5">Link to Profile</ulink></para>
            <para>&#8226; ComponentType (mandatory): The type of component to which the object belongs. For Aggregate Business Information Entities this must be &#8220;ABIE&#8221;.</para>
            <para>&#8226; DictionaryEntryName (mandatory): The official name of the Aggregate Business Information Entity .</para>
            <para>&#8226; Version (optional): An indication of the evolution over time of the Aggregate Business Information Entity.</para>
            <para>&#8226; Definition(mandatory): The semantic meaning of the Aggregate Business Information Entity.</para>
            <para>&#8226; ObjectClassQualifier (optional): The qualifier for the object class.</para>
            <para>&#8226; ObjectClass(mandatory): The Object Class represented by the Aggregate Business Information Entity.</para>
            <para>&#8226; AlternativeBusinessTerms (optional): Any synonym terms under which the Aggregate Business Information Entity is commonly known and used in the business.</para>
            <para>The following rule describes the documentation requirements for each ccts:AssociationBusinessInformationEntity definition.</para>
            <para><ulink id="rule-DOC6" url="rule-DOC6">Link to Profile</ulink></para>
            <para>&#8226; ComponentType (mandatory): The type of component to which the object belongs. For Association Business Information Entities this must be &#8220;ASBIE&#8221;.</para>
            <para>&#8226; DictionaryEntryName (mandatory): The official name of the Association Business Information Entity.</para>
            <para>&#8226; Version (optional): An indication of the evolution over time of the Association Business Information Entity.</para>
            <para>&#8226; Definition(mandatory): The semantic meaning of the Association Business Information Entity.</para>
            <para>&#8226; Cardinality(mandatory): Indication whether the Association Business Information Entity represents an optional, mandatory and/or repetitive assocation.</para>
            <para>&#8226; ObjectClass(mandatory): The Object Class containing the Association Business Information Entity.</para>
            <para>&#8226; PropertyTermQualifier (optional): A qualifier is a word or words which help define and differentiate the Association Business Information Entity.</para>
            <para>&#8226; PropertyTerm(mandatory): Property Term represents the Aggregate Business Information Entity contained by the Association Business Information Entity.</para>
            <para>&#8226; AssociatedObjectClassQualifier (optional): Associated Object Class Qualifiers describe the 'context' of the relationship with another ABIE. That is, it is the role the contained Aggregate Business Information Entity plays within its association with the containing Aggregate Business Information Entity. </para>
            <para>&#8226; AssociatedObjectClass (mandatory); Associated Object Class is the Object Class at the other end of this association. It represents the Aggregate Business Information Entity contained by the Association Business Information Entity.</para>
            <para><ulink id="rule-DOC8" url="rule-DOC8">Link to Profile</ulink></para>
            <para>&#8226; Name (mandatory): Name in the Registry of a Supplementary Component of a Core Component Type.</para>
            <para>&#8226; Definition (mandatory): A clear, unambiguous and complete explanation of the meaning of a Supplementary Component and its relevance for the related Core Component Type.</para>
            <para>&#8226; Primitive type (mandatory): PrimitiveType to be used for the representation of the value of a Supplementary Component.</para>
            <para>&#8226; Possible Value(s) (optional): one possible value of a Supplementary Component.</para>
            <para><ulink id="rule-DOC9" url="rule-DOC9">Link to Profile</ulink></para>
            <para>&#8226; Restriction Value(s) (mandatory): The actual value(s) that is (are) valid for the Supplementary Component.</para>
         </section>
      </section>
   </chapter>
   <chapter>
      <title>Naming Rules</title>
      <para>The rules in this section make use of the following special concepts related to XML elements.</para>
      <orderedlist>
         <listitem>
            <para>Top-level element: An element that encloses a whole UBL business message. Note that UBL business messages might be carried by messaging transport protocols that themselves have higher-level XML structure. Thus, a UBL top-level element is not necessarily the root element of the XML document that carries it.</para>
         </listitem>
         <listitem>
            <para>Lower-level element: An element that appears inside a UBL business message. Lower-level elements consist of intermediate and leaf level.</para>
         </listitem>
         <listitem>
            <para>Intermediate element: An element not at the top level that is of a complex type, only containing other elements and attributes.</para>
         </listitem>
         <listitem>
            <para>Leaf element: An element containing only character data (though it may also have attributes). Note that, because of the XSD mechanisms involved, a leaf element that has attributes must be declared as having a complex type, but a leaf element with no attributes may be declared with either a simple type or a complex type.</para>
         </listitem>
      </orderedlist>
      <section>
         <title>General Naming Rules</title>
         <para>The CCTS contains specific Internal Organization for Standardization (ISO)/International Electrotechnical Commission (IEC) Technical Specification 11179 Information technology&#8211; -- Metadata registries (MDR)<emphasis role="bold"/> based naming rules for each CCTS construct. The UBL component library, as a syntax-neutral representation, is fully conformant to those rules. The UBL syntax-specific XSD instantiation of the UBL component library&#8212;in some cases&#8212;refines the CCTS naming rules to leverage the capabilities of XML and XSD. Specifically, truncation rules are applied to allow for reuse of element names across parent element environments and to maintain brevity and clarity.</para>
         <para>In keeping with CCTS, UBL will use English as its normative language. If the UBL Library is translated into other languages for localization purposes, these additional languages might require additional restrictions. Such restrictions are expected be formulated as additional rules and published as appropriate.</para>
         <para><ulink id="rule-GNR1" url="rule-GNR1">Link to Profile</ulink></para>
         <para>UBL fully supports the concepts of data standardization contained in ISO 11179. CCTS, as an implementation of 11179, furthers its basic tenets of data standardization into higher-level constructs as expressed by the ccts:DictionaryEntryNames of those constructs &#8211; such as those for ccts:BasicBusinessInformationEntities and ccts:AggregateBusinessInformationEntities. Since UBL is an implementation of CCTS, UBL uses CCTS dictionary entry names as the basis for UBL XML schema construct names. UBL converts these ccts:DictionaryEntryNames into UBL XML schema construct names using strict transformation rules. </para>
         <para><ulink id="rule-GNR2" url="rule-GNR2">Link to Profile</ulink></para>
         <para>The ISO 11179 specifies&#8212;and the CCTS uses&#8212;periods, spaces, other separators, and characters not allowed by W3C XML. These separators and characters are not appropriate for UBL XML component names.</para>
         <para><ulink id="rule-GNR3" url="rule-GNR3">Link to Profile</ulink></para>
         <para>Acronyms and abbreviations impact on semantic interoperability, and as such are to be avoided to the maximum extent practicable. Since some abbreviations will inevitably be necessary, UBL will maintain a normative list of authorized acronyms and abbreviations. Appendix B provides the current list of permissible acronyms, abbreviations and word truncations. The intent of this restriction is to facilitate the use of common semantics and greater understanding. Appendix B is a living document and will be updated to reflect growing requirements.</para>
         <para><ulink id="rule-GNR4" url="rule-GNR4">Link to Profile</ulink></para>
         <para>UBL does not desire a proliferation of acronyms and abbreviations. Appendix B is an exception list and will be tightly controlled by UBL. Any additions will only occur after careful scrutiny to include assurance that any addition is critically necessary, and that any addition will not in any way create semantic ambiguity.</para>
         <para><ulink id="rule-GNR5" url="rule-GNR5">Link to Profile</ulink></para>
         <para>Once an acronym or abbreviation has been approved, it is essential to ensuring semantic clarity and interoperability that the acronym or abbreviation is <emphasis role="bold">always</emphasis> used.</para>
         <para><ulink id="rule-GNR6" url="rule-GNR6">Link to Profile</ulink></para>
         <para>Generally speaking, the names for UBL XML constructs must always be singular. The only exception permissible is where the concept itself is pluralized.</para>
         <para><ulink id="rule-GNR7" url="rule-GNR7">Link to Profile</ulink></para>
         <para>Example:</para>
         <para role="Example">Terms</para>
         <para><ulink id="rule-GNR10" url="rule-GNR10">Link to Profile</ulink></para>
         <para><ulink id="rule-GNR11" url="rule-GNR11">Link to Profile</ulink></para>
         <para>XML is case sensitive. Consistency in the use of case for a specific XML component (element, type) is essential to ensure every occurrence of a component is treated as the same. This is especially true in a business-based data-centric environment such as what is being addressed by UBL. Additionally, the use of visualization mechanisms such as capitalization techniques assist in ease of readability and ensure consistency in application and semantic clarity. The ebXML architecture document specifies a standard use of upper and lower camel case for expressing XML elements and attributes respectively.<xref linkend="UBL-fn-14"/>
            <footnote id="UBL-fn-14">
               <para role="FootnoteText"> ebXML, ebXML Technical Architecture Specification v1.0.4, 16 February 2001</para>
            </footnote> UBL will adhere to the ebXML standard. Specifically, UBL element and type names will be in UpperCamelCase (UCC).</para>
         <para><ulink id="rule-GNR8" url="rule-GNR8">Link to Profile</ulink></para>
         <para role="Example">CurrencyBaseRate</para>
         <para role="Example">CityNameType</para>
      </section>
      <section>
         <title>Type Naming Rules</title>
         <para>UBL identifies several categories of naming rules for types, namely for complex types based on Aggregate Business Information Entities, Basic Business Information Entities, Primary Representation Terms, Secondary Representation Terms and the Core Component Types.</para>
         <para>Each of these CCTS constructs have a ccts:DictionaryEntryName that is a fully qualified construct based on ISO 11179. As such, these names convey explicit semantic clarity with respect to the data being described. Accordingly, these ccts:DictionaryEntryNames provide a mechanism for ensuring that UBL xsd:complexType names are semantically unambiguous, and that there are no duplications of UBL type names for different xsd:type constructs.</para>
         <section>
            <title>Complex Type Names for CCTS Aggregate Business Information Entities</title>
            <para> UBL xsd:complexType names for ccts:AggregateBusinessInformationEntities will be derived from their dictionary entry name by removing separators to follow general naming rules, and appending the suffix &#8220;Type&#8221; to replace the word &#8220;Details.&#8221;</para>
            <para><ulink id="rule-CTN1" url="rule-CTN1">Link to Profile</ulink></para>
            <para>Example:</para>
            <informaltable>
               <tgroup cols="2">
                  <colspec colwidth="425px" colname="col1"/>
                  <colspec colwidth="389px" colname="col2"/>
                  <tbody>
                     <row>
                        <entry>
                           <para role="Example">ccts:AggregateBusiness    InformationEntity</para>
                        </entry>
                        <entry>
                           <para role="Example">UBL xsd:complexType</para>
                        </entry>
                     </row>
                     <row>
                        <entry>
                           <para role="Example">Address. Details</para>
                        </entry>
                        <entry>
                           <para role="Example">AddressType</para>
                        </entry>
                     </row>
                     <row>
                        <entry>
                           <para role="Example">Financial Account. Details</para>
                        </entry>
                        <entry>
                           <para role="Example">FinancialAccountType</para>
                        </entry>
                     </row>
                  </tbody>
               </tgroup>
            </informaltable>
         </section>
         <section>
            <title>Complex Type Names for CCTS Basic Business Information Entity Properties</title>
            <para>All ccts:BasicBusinessInformationEntityProperties are reusable across multiple ccts:BasicBusinessInformationEntities. The CCTS does not specify, but implies, that ccts:BasicBusinessInformationEntityProperty names are the reusable property term and representation term of the family of ccts:BasicBusinessInformationEntities that are based on it. The UBL xsd:complexType names for ccts:BasicBusinessInformationEntity properties will be derived from the shared property and representation terms portion of the dictionary entry names in which they appear by removing separators to follow general naming rules, and appending the suffix &#8220;Type&#8221;.</para>
            <para><ulink id="rule-CTN2" url="rule-CTN2">Link to Profile</ulink></para>
            <para role="Definitionterm">Example:</para>
            <para><ulink id="rule-CTNX1" url="rule-CTNX1">Link to Profile</ulink></para>
            <para><ulink id="rule-CTNX2" url="rule-CTNX2">Link to Profile</ulink></para>
            <para><ulink id="rule-CTNX3" url="rule-CTNX3">Link to Profile</ulink></para>
         </section>
      </section>
      <section>
         <title>Element Naming Rules</title>
         <para>As defined in the UBL Model (See Figure 2-3), UBL elements will be created for ccts:AggregateBusinessInformationEntities, ccts:BasicBusinessInformationEntities, and ccts:AssociationBusinessInformationEntities. UBL element names will reflect this relationship in full conformance with ISO11179 element naming rules.</para>
         <section>
            <title>Element Names for CCTS Aggregate Business Information Entities</title>
            <para><ulink id="rule-ELN1" url="rule-ELN1">Link to Profile</ulink></para>
            <para role="Definitionterm">Example:</para>
            <para role="Example">For a ccts:AggregateBusinessInformationEntity of Party.Details, Rule CTN1 states that the Party.Details object class becomes PartyType xsd:ComplexType. Rule ELD3 states that for the PartyType xsd:complexType, a corresponding global element must be declared. Rule ELN1 states that the name of this corresponding global element must be Party.</para>
         </section>
         <section>
            <title>Element Names for CCTS Basic Business Information Entity Properties</title>
            <para>The same naming concept used for ccts:AggregateBusinessInformationEntities applies to ccts:BasicBusinessInformationEntityProperty. </para>
            <para><ulink id="rule-ELN2" url="rule-ELN2">Link to Profile</ulink></para>
            <para role="Definitionterm">Example:</para>
         </section>
         <section>
            <title>Element Names for CCTS Association Business Information Entities</title>
            <para>A ccts:AssociationBusinessInformationEntity is not a class like ccts:AggregateBusinessInformationEntities and like ccts:BasicBusinessInformationEntityProperties that are reused as ccts:BasicBusinessInformationEntities. Rather, it is an association between two classes. As such, an element representing the ccts:AssociationBusinessInformationEntity does not have its own unique xsd:ComplexType. Instead, when an element representing a ccts:AssociationBusinessInformationEntity is declared, the element is bound to the xsd:complexType of its associated ccts:AggregateBusinessInformationEntity by referencing its global element declaration.</para>
            <para><ulink id="rule-ELN3" url="rule-ELN3">Link to Profile</ulink></para>
            <!--This [ is in the original document.--><para>[</para>
         </section>
      </section>
      <section>
         <title>Attributes in UBL</title>
         <!--The original document has a comma at the end of the paragraph.--><para>UBL, as a transactional based XML exchange format, has chosen to significantly restrict the use of attributes. This restriction is in keeping with the fact that attribute usage is relegated to supplementary components only; all &#8220;primary&#8221; business data appears exclusively in element content. These attributes are defined in the UN/CEFACT Unqualified Datatype schema module, </para>
      </section>
   </chapter>
   <chapter>
      <title>Declarations and Definitions</title>
      <para>In W3C XML Schema, elements are defined in terms of complex or simple types and attributes are defined in terms of simple types. The rules in this section govern the consistent structuring of these type constructs and the manner for unambiguously and thoroughly documenting them in the UBL Library.</para>
      <section>
         <title>Type Definitions</title>
         <section>
            <title>General Type Definitions</title>
            <para>Since UBL elements and types are intended to be reusable, all types must be named. This permits other types to establish elements that reference these types, and also supports the use of extensions for the purposes of versioning and customization.</para>
            <para><ulink id="rule-GTD1" url="rule-GTD1">Link to Profile</ulink></para>
            <para role="Definitionterm">Example:</para>
            <para role="Legalnotice">UBL disallows the use of xsd:anyType, because this feature permits the introduction of potentially unknown types into an XML instance. UBL intends that all constructs within the instance be described by the schemas describing that instance - xsd:anyType is seen as working counter to the requirements of interoperability. In consequence, particular attention is given to the need to enable meaningful validation of the UBL document instances. Were it not for this, xsd:anyType might have been allowed.</para>
            <para><ulink id="rule-GTD2" url="rule-GTD2">Link to Profile</ulink></para>
         </section>
         <section>
            <title>Simple Types</title>
            <para>The Core Components Technical Specification provides a set of constructs for the modeling of basic data, Core Component Types. These are represented in UBL with a library of complex types, with the effect that most "simple" data is represented as property sets defined according to the CCTs, made up of content components and supplementary components. In most cases, the supplementary components are expressed as XML attributes, the content component becomes element content, and the CCT is represented with an xsd:complexType. There are exceptions to this rule in those cases where all of a CCT's properties can be expressed without the use of attributes. In these cases, an xsd:simpleType is used.</para>
            <para>UBL does not define its own simple types. These are defined in the UN/CEFACT Unqualified Datatype schema module. UBL may define restrictions of these simple types in the UBL Qualified datatype schema module. </para>
         </section>
         <section>
            <title>Complex Types</title>
            <para>Since even simple datatypes are modeled as property sets in most cases, the XML expression of these models primarily employs xsd:complexType. To facilitate reuse, versioning, and customization, all complex types are named. In the UBL model, ccts:AggregateBusinessInformationEntities are considered classes(objects) .</para>
            <para><ulink id="rule-CTD1" url="rule-CTD1">Link to Profile</ulink></para>
            <para role="Definitionterm">Example:</para>
            <para>Every class identified in the UBL model consists of properties. These properties are either ASBIEs, when the property represents another class, or BBIE properties. </para>
            <para><ulink id="rule-CTD25" url="rule-CTD25">Link to Profile</ulink></para>
            <section>
               <title>Aggregate Business Information Entities</title>
               <para>The relationship expressed by an Aggregate Business Information Entity is not directly represented with a class. Instead, this relationship is captured in UBL with a containment relationship, expressed in the content model of the parent object&#8217;s type with a sequence of elements. (Sequence facilitates the use of xsd:extension for versioning and customization.) The members of the sequence &#8211; elements which are themselves defined by reference to complex types &#8211; are the properties of the containing type.</para>
               <para><ulink id="rule-CTD2" url="rule-CTD2">Link to Profile</ulink></para>
               <para role="Definitionterm">Example:</para>
            </section>
            <section>
               <title>Basic Business Information Entities</title>
               <para>All ccts:BasicBusinessInformationEntities, in accordance with the Core Components Technical Specification, always have a representation term. This may be a primary or secondary representation term. Representation terms describe the structural representation of the BBIE. These representation terms are expressed in the UBL Model as Unqualified Datatypes bound to a Core Component Type that describes their structure. In addition to the Unqualified Datatypes defined in CCTS, UBL has defined a set of Qualified Datatypes that are derived from the CCTS Unqualified Datatypes.There are a set of rules concerning the way these relationships are expressed in the UBL XML library. As discussed above, ccts:BasicBusinessInformationEntityProperties are represented with complex types. Within these are simpleContent elements that extend the Datatypes. </para>
               <para><ulink id="rule-CTD3" url="rule-CTD3">Link to Profile</ulink></para>
               <para><ulink id="rule-CTD4" url="rule-CTD4">Link to Profile</ulink></para>
               <para role="spacer"/>
               <para><ulink id="rule-CTD5" url="rule-CTD5">Link to Profile</ulink></para>
               <para role="Definitionterm">Example:</para>
            </section>
            <section>
               <title>Datatypes</title>
               <para>There is a direct one-to-one relationship between ccts:CoreComponentTypes and ccts:PrimaryRepresentationTerms. Additionally, there are several ccts:SecondaryRepresentationTerms that are semantic refinements of their parent ccts:PrimaryRepresentationTerm. The total set of ccts:RepresentationTerms by their nature represent ccts:Datatypes. Specifically, for each ccts:PrimaryRepresentationTerm or ccts:SecondaryRepresentationTerm, a ccts:UnqualifiedDatatype exists. In the UBL XML Library, these ccts:UnqualifiedDatatypes are expressed as complex or simple types that are of the type of its corresponding ccts:CoreComponentType. UBL uses the ccts:UnqualifiedDatatypes that are provided by the UN/CEFACT Unqualified Datatype (udt) schema module. </para>
               <section>
                  <title>Qualified Datatypes</title>
                  <para>The data types defined in the unqualified data type schema module are intended to be suitable as the xsd:base type for some, but not all BBIEs.  As business process modeling reveals the need for specialized data types, new &#8216;qualified&#8217; types will need to be defined.  These new ccts:QualifiedDatatype must be based on an ccts:UnqualifiedDatatype and must represent a semantic or technical restriction of the ccts:UnqualifiedDatatype.  Technical restrictions must be implemented as a xsd:restriction or as a new xsd:simpleType if the supplementary components of the qualified data type map directly to the properties of a built-in XSD data type.</para>
                  <para><ulink id="rule-CTD6" url="rule-CTD6">Link to Profile</ulink></para>
                  <para><ulink id="rule-CTD20" url="rule-CTD20">Link to Profile</ulink></para>
                  <para><ulink id="rule-CTD21" url="rule-CTD21">Link to Profile</ulink></para>
                  <para>In accordance with rule GXS3 built-in XSD data types will be used whenever possible.</para>
                  <para><ulink id="rule-CTD22" url="rule-CTD22">Link to Profile</ulink></para>
                  <para>MUST be defined as an xsd:simpleType</para>
                  <para>MUST contain one xsd:restriction element</para>
                  <para>MUST include an xsd:base attribute that defines the specific XSD built-in data type required for the content component</para>
                  <para><ulink id="rule-CTD23" url="rule-CTD23">Link to Profile</ulink></para>
                  <para>MUST be defined as an xsd:complexType</para>
                  <para>MUST contain one xsd:simpleContent element</para>
                  <para>MUST contain one xsd:restriction element</para>
                  <para>MUST include the unqualified datatype as its xsd:base attribute</para>
                  <para><ulink id="rule-CTD24" url="rule-CTD24">Link to Profile</ulink></para>
                  <para>MUST contain one xsd:restriction element</para>
                  <para>MUST include the unqualified datatype as its xsd:base attribute</para>
               </section>
            </section>
            <section>
               <title>Core Component Types</title>
            </section>
         </section>
      </section>
      <section>
         <title>Element Declarations</title>
         <section>
            <title>Elements Bound to Complex Types</title>
            <para>The binding of UBL elements to their xsd:complexType is based on the associations identified in the UBL model. For the ccts:BasicBusinessInformationEntities and ccts:AggregateInformationEntities, the UBL elements will be directly associated to its corresponding xsd:complexType.</para>
            <para><ulink id="rule-ELD3" url="rule-ELD3">Link to Profile</ulink></para>
            <para role="Definitionterm">Example:</para>
            <para role="Example">For the Party.Details object class, a complex type/global element declaration pair is created through the declaration of a Party element that is of type PartyType.</para>
            <para role="Rulesexplanation">The element thus created is useful for reuse in the building of new business messages. The complex type thus created is useful for both reuse and customization, in the building of both new and contextualized business messages. </para>
            <para role="Definitionterm">Example:</para>
         </section>
         <section>
            <title>Elements Representing ASBIEs</title>
            <para>A ccts:AssociationBusinessInformationEntity is not a class like ccts:AggregateBusinessInformationEntities. Rather, it is an association between two classes. As such, the element declaration will bind the element to the xsd:complexType of the associated ccts:AggregateBusinessInformationEntity. There are two types of ASBIEs &#8211; those that have qualifiers in the object class, and those that do not.</para>
            <para><ulink id="rule-ELD4" url="rule-ELD4">Link to Profile</ulink></para>
            <para><ulink id="rule-ELD11" url="rule-ELD11">Link to Profile</ulink></para>
         </section>
         <section>
            <title>Code List Import</title>
            <para><ulink id="rule-ELD6" url="rule-ELD6">Link to Profile</ulink></para>
         </section>
         <section>
            <title>Empty Elements</title>
            <para><ulink id="rule-ELD7" url="rule-ELD7">Link to Profile</ulink></para>
         </section>
      </section>
   </chapter>
   <chapter>
      <title>Code Lists</title>
      <para>UBL has determined that the best approach for code lists is to handle them as schema modules. In recognition of the fact that most code lists are maintained by external agencies, UBL has determined that if code list owners all used the same normative form schema module, all users of those code lists could avoid a significant level of code list maintenance.</para>
      <para>By having each code list owner develop, maintain, and make available via the internet their code lists using the same normative form schema, code list users would be spared the unnecessary and duplicative efforts required for incorporation in the form of enumeration of such code lists into Schema, and would subsequently avoid the maintenance of such enumerations since code lists are handled as imported schema modules rather than cumbersome enumerations. To make this mechanism operational, UBL has defined a number of rules. To avoid enumeration of codes in the document or reusable schemas, UBL has determined that codes will be handled in their own schema modules.</para>
      <para><ulink id="rule-CDL1" url="rule-CDL1">Link to Profile</ulink></para>
      <para>Because the majority of code lists are owned and maintained by external agencies, UBL will make maximum use of such external code lists where they exist.</para>
      <para><ulink id="rule-CDL2" url="rule-CDL2">Link to Profile</ulink></para>
      <para>In some cases the UBL Library may extend an existing code list to meet specific business requirements. In others cases the UBL Library may have to create and maintain a code list where a suitable code list does not exist in the public domain. Both of these types of code lists would be considered UBL-internal code lists.</para>
      <para><ulink id="rule-CDL3" url="rule-CDL3">Link to Profile</ulink></para>
      <para>UBL-internal code lists will be designed with maximum re-use in mind to facilitate maximum use by others.</para>
      <para>If a UBL code list is created, the lists should be globally scoped (designed for reuse and sharing, using named types and namespaced Schema Modules) rather than locally scoped (not designed for others to use and therefore hidden from their use).</para>
      <para>To guarantee consistency within all code list schema modules all ubl-internal code lists and externally used code lists will use the UBL Code List Schema Module. This schema module will contain an enumeration of code list values.</para>
      <para><ulink id="rule-CDL4" url="rule-CDL4">Link to Profile</ulink></para>
      <para>To guarantee consistency of code list schema module naming, the name of each UBL Code List Schema Module will adhere to a prescribed form.</para>
      <para><ulink id="rule-CDL5" url="rule-CDL5">Link to Profile</ulink></para>
      <para>{Owning Organization}{Code List Name}{Code List Schema Module}</para>
      <para role="Example">Example</para>
      <para role="Example">ISO 8601 Country Code Code List Schema Module</para>
      <para role="Example">ISO 3055 Kitchen equipment&#8211;- Coordinating sizes Code Code List Schema Module</para>
      <para>Code list attribute values for UBL code lists should be set to 'default' rather than fixed. This facilitates customization and caters for instances whereby the values are not specified. </para>
      <para><ulink id="rule-CDL9" url="rule-CDL9">Link to Profile</ulink></para>
      <para>Each UBL Code List Schema Module will import the UBL QDT Schema Module where there is defined a UBLCodeType. This type will be a trivial extension of  the udt:CodeType in the ATG2 UDT schema by creating a union of the UDT code type and an enumeration &#8212; each enumeration being a restriction on the udt:CodeType.</para>
      <para>Each code list used in the UBL schema MUST be imported individually.</para>
      <para><ulink id="rule-CDL6" url="rule-CDL6">Link to Profile</ulink></para>
      <para>The UBL library allows partial implementations of code lists which may required by customizers.</para>
      <para><ulink id="rule-CDL7" url="rule-CDL7">Link to Profile</ulink></para>
      <para>The following rule describes the requirements for the xsd:schemaLocation for the importation of the code lists into a UBL business document.</para>
      <para><ulink id="rule-CDL8" url="rule-CDL8">Link to Profile</ulink></para>
   </chapter>
   <chapter>
      <title>Miscellaneous XSD Rules</title>
      <para>UBL, as a business standard vocabulary, requires consistency in its development. The number of UBL Schema developers will expand over time. To ensure consistency, it is necessary to address the optional features in XSD that are not addressed elsewhere.</para>
      <section>
         <title>xsd:simpleType</title>
         <para>UBL guiding principles require maximum reuse. XSD provides for forty four built-in Datatypes expressed as simple types. In keeping with the maximize re-use guiding principle, these built-in simple types should be used wherever possible. </para>
         <para><ulink id="rule-GXS3" url="rule-GXS3">Link to Profile</ulink></para>
      </section>
      <section>
         <title>Namespace Declaration</title>
         <para>The W3C XSD specification allows for the use of any token to represent its location. To ensure consistency, UBL has adopted the generally accepted convention of using the &#8220;xsd&#8221; token for all UBL schema and schema modules.</para>
         <para><ulink id="rule-GXS4" url="rule-GXS4">Link to Profile</ulink></para>
         <para>    xmlns:xsd="http://www.w3.org/2001/XMLSchema&#8221; </para>
      </section>
      <section>
         <title>xsd:substitutionGroup</title>
         <para>The xsd:substitutionGroup feature enables a type definition to identify substitution elements in a group. Although a useful feature in document centric XML applications, this feature is not used by UBL. </para>
         <para><ulink id="rule-GXS5" url="rule-GXS5">Link to Profile</ulink></para>
      </section>
      <section>
         <title>xsd:final </title>
         <para>UBL does not use extensions in its normative schema.  Extensions are allowed by customizers as outlined in the Guidelines for Customization. UBL may determine that certain type definitions are innapropriate for any customization. In those instances, the xsd:final attribute will be used.</para>
         <para><ulink id="rule-GXS6" url="rule-GXS6">Link to Profile</ulink></para>
      </section>
      <section>
         <title>xsd: notation</title>
         <para>The xsd:notation attribute identifies a notation. Notation declarations corresponding to all the &lt;notation&gt; element information items in the [children], if any, plus any included or imported declarations. Per XSD Part 2, &#8220;It is an <emphasis role="bold">·</emphasis>error<emphasis role="bold">·</emphasis> for NOTATION to be used directly in a schema. Only Datatypes that are <emphasis role="bold">·</emphasis>derived<emphasis role="bold">·</emphasis> from NOTATION by specifying a value for <emphasis role="bold">·</emphasis>enumeration<emphasis role="bold">·</emphasis> can be used in a schema.&#8221; The UBL schema model does not require or support the use of this feature.</para>
         <para><ulink id="rule-GXS7" url="rule-GXS7">Link to Profile</ulink></para>
      </section>
      <section>
         <title>xsd:all</title>
         <para>The xsd:all compositor requires occurrence indicators of minOccurs = 0 and maxOccurs = 1. The xsd:all compositor allows for elements to occur in any order. The result is that in an instance document, elements can occur in any order, are always optional, and never occur more than once. Such restrictions are inconsistent with data-centric scenarios such as UBL.</para>
         <para><ulink id="rule-GXS8" url="rule-GXS8">Link to Profile</ulink></para>
      </section>
      <section>
         <title>xsd:choice</title>
         <para>The xsd:choice compositor allows for any element declared inside it to occur in the instance document, but only one. As with the xsd:all compositor, this feature is inconsistent with business transaction exchanges. UBL recognizes that it is a very useful construct in situations where customization and extensibility are not a concern, however, UBL does not recommend its use because xsd:choice cannot be extended.</para>
         <para><ulink id="rule-GXS9" url="rule-GXS9">Link to Profile</ulink></para>
      </section>
      <section>
         <title>xsd:include</title>
         <para>xsd:include can only be used when the including schema is in the same namespace as the included schema.</para>
      </section>
      <section>
         <title>xsd:union</title>
         <para>The xsd:union feature provides a mechanism whereby a datatype is created as a union of two or more existing datatypes. With UBL&#8217;s strict adherence to the use of ccts:Datatypes that are explicitly declared in the UBL library, this feature is inappropriate except for codelists. In some cases external customizers may choose to use this technique for codelists and as such the use of the union technique may prove beneficial for customizers.</para>
         <para><ulink id="rule-GXS11" url="rule-GXS11">Link to Profile</ulink></para>
      </section>
      <section>
         <title>xsd:appinfo</title>
         <para>The xsd:appinfo feature is used by schema to convey processing instructions to a processing application, Stylesheet, or other tool. Some users of UBL have determined that this technique poses a security risk and have employed techniques for stripping xsd:appinfo from schemas. As UBL is committed to ensuring the widest possible target audience for its XML library, this feature is not used &#8211; except to convey non-normative information.</para>
         <para><ulink id="rule-GXS12" url="rule-GXS12">Link to Profile</ulink></para>
      </section>
      <section>
         <title>xsd:schemaLocation</title>
         <para>UBL is an international standard that will be used in perpetuity by companies around the globe. It is important that these users have unfettered access to all UBL schema.</para>
         <para><ulink id="rule-GXS15" url="rule-GXS15">Link to Profile</ulink></para>
      </section>
      <section>
         <title>xsd:nillable</title>
         <para><ulink id="rule-GXS16" url="rule-GXS16">Link to Profile</ulink></para>
      </section>
      <section>
         <title>xsd:anyAttribute</title>
         <para role="Legalnotice">UBL disallows the use of xsd:anyAttribute, because this feature permits the introduction of potentially unknown attributes into an XML instance. UBL intends that all constructs within the instance be described by the schemas describing that &#8211;instance&#8211;- xsd:anyAttribute is seen as working counter to the requirements of interoperability. In consequence, particular attention is given to the need to enable meaningful validation of the UBL document instances. Were it not for this, xsd:anyAttribute might have been allowed.</para>
         <para><ulink id="rule-GXS17" url="rule-GXS17">Link to Profile</ulink></para>
      </section>
      <section>
         <title>Extension and Restriction</title>
         <para>UBL fully recognizes the value of supporting extension and restriction of its core library by customizers. The UBL extension and restriction recommendations are discussed in the <emphasis role="italics">Guidelines for the Customization of UBL Schemas </emphasis>available as part of UBL 1.0.</para>
         <para><ulink id="rule-GXS13" url="rule-GXS13">Link to Profile</ulink></para>
      </section>
   </chapter>
   <chapter>
      <title>Instance Documents</title>
      <para>Consistency in UBL instance documents is essential in a trade environment. UBL has defined several rules to help affect this consistency.</para>
      <section>
         <title>Root Element</title>
         <para>UBL has chosen a global element approach. Inside a UBL document schema only a single global element is declared. Because all UBL instance documents conform to a UBL document schema, the single global element declared in that document schema will be the root element of the instance. </para>
         <para><ulink id="rule-RED1" url="rule-RED1">Link to Profile</ulink></para>
      </section>
      <section>
         <title>Validation</title>
         <para>The UBL library and supporting schema are targeted at supporting business information exchanges. Business information exchanges require a high degree of precision to ensure that application processing and corresponding business cycle actions are reflective of the purpose, intent, and information content agreed to by both trading partners. Schemas provide the necessary mechanism for ensuring that instance documents do in fact support these requirements.</para>
         <para><ulink id="rule-IND1" url="rule-IND1">Link to Profile</ulink></para>
         <para/>
         <para><ulink id="rule-IND7" url="rule-IND7">Link to Profile</ulink></para>
      </section>
      <section>
         <title>Character Encoding</title>
         <para>XML supports a wide variety of character encodings. Processors must understand which character encoding is employed in each XML document. XML 1.0 supports a default value of UTF-8 for character encoding, but best practice is to always identify the character encoding being employed.</para>
         <para><ulink id="rule-IND2" url="rule-IND2">Link to Profile</ulink></para>
         <para>Example:</para>
         <para role="Example">&lt;?xml version="1.0" encoding="UTF-8"?&gt;</para>
         <para>UBL, as an OASIS TC, is obligated to conform to agreements OASIS has entered into. OASIS is a liaison member of the ISO/IETF/ITU/UNCEFACT Memorandum of Understanding Management Group (MOUMG). Resolution 01/08 (MOU/MG01n83) requires the use of UTF-8. </para>
         <para><ulink id="rule-IND3" url="rule-IND3">Link to Profile</ulink></para>
         <para>Example:</para>
         <para role="Example">&lt;?xml version=&#8221;1.0&#8221; encoding=&#8221;UTF-8&#8221; ?&gt;</para>
      </section>
      <section>
         <title>Schema Instance Namespace Declaration</title>
         <para><ulink id="rule-IND4" url="rule-IND4">Link to Profile</ulink></para>
         <para>xmlns:xsi=&#8221;http://www.w3.org/2001/XMLSchema-instance&#8221;</para>
      </section>
      <section>
         <title>Empty Content.</title>
         <para>Usage of empty elements within XML instance documents are a source of controversy for a variety of reasons. An empty element does not simply represent data that is missing. It may express data that is not applicable for some reason, trigger the expression of an attribute, denote all possible values instead of just one, mark the end of a series of data, or appear as a result of an error in XML file generation. Conversely, missing data elements can also have meaning &#8211; data not provided by a trading partner. In information exchange environments, different trading partners may allow, require or ban empty elements. UBL has determined that empty elements do not provide the level of assurance necessary for business information exchanges and as such will not be used.</para>
         <para><ulink id="rule-IND5" url="rule-IND5">Link to Profile</ulink></para>
         <para>To ensure that no attempt is made to circumvent rule IND5, UBL also prohibits attempting to convey meaning by not conveying an element.</para>
         <para><ulink id="rule-IND6" url="rule-IND6">Link to Profile</ulink></para>
      </section>
   </chapter>
   <appendix>
      <title role="AppendixHeading1">UBL NDR 2.0 Checklist</title>
      <para>The following checklist constitutes all UBL XML naming and design rules as defined in <emphasis role="italics">UBL Naming and Design Rules version 2.0, </emphasis>26 January 2006. The checklist is in alphabetical sequence as follows:</para>
      <itemizedlist>
         <listitem>
            <para>Attribute Declaration Rules (ATD)</para>
         </listitem>
         <listitem>
            <para>Code List Rules (CDL)</para>
         </listitem>
         <listitem>
            <para>ComplexType Definition Rules (CTD)</para>
         </listitem>
         <listitem>
            <para>ComplexType Naming Rules (CTN)</para>
         </listitem>
         <listitem>
            <para>Documentation Rules (DOC)</para>
         </listitem>
         <listitem>
            <para>Element Declaration Rules (ELD)</para>
         </listitem>
         <listitem>
            <para>Element Naming Rules (ELN)</para>
         </listitem>
         <listitem>
            <para>General Naming Rules (GNR)</para>
         </listitem>
         <listitem>
            <para>General Type Definition Rules (GTD)</para>
         </listitem>
         <listitem>
            <para>General XML Schema Rules (GXS)</para>
         </listitem>
         <listitem>
            <para>Instance Document Rules (IND)</para>
         </listitem>
         <listitem>
            <para>Modeling Constraints Rules (MDC)</para>
         </listitem>
         <listitem>
            <para>Naming Constraints Rules (NMC)</para>
         </listitem>
         <listitem>
            <para>Namespace Rules (NMS)</para>
         </listitem>
         <listitem>
            <para>Root Element Declaration Rules (RED)</para>
         </listitem>
         <listitem>
            <para>Schema Structure Modularity Rules (SSM)</para>
         </listitem>
         <listitem>
            <para>Standards Adherence Rules (STA)</para>
         </listitem>
         <listitem>
            <para>Versioning Rules (VER)</para>
         </listitem>
      </itemizedlist>
      <informaltable>
         <tgroup cols="2">
            <colspec colwidth="173px" colname="col1"/>
            <colspec colwidth="947px" colname="col2"/>
            <tbody>
               <row>
                  <entry namest="col1" nameend="col2">
                     <para role="Heading2appendixa">Attribute Declaration rules</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[ATD6]</para>
                  </entry>
                  <entry>
                     <para>(See GXS15)</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[ATD7]</para>
                  </entry>
                  <entry>
                     <para>(See GXS16)</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[ATD8]</para>
                  </entry>
                  <entry>
                     <para>(See GXS17)</para>
                  </entry>
               </row>
            </tbody>
         </tgroup>
      </informaltable>
      <informaltable>
         <tgroup cols="2">
            <colspec colwidth="137px" colname="col1"/>
            <colspec colwidth="749px" colname="col2"/>
            <tbody>
               <row>
                  <entry namest="col1" nameend="col2">
                     <para role="Heading2appendixa">Code List rules</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[CDL1]</para>
                  </entry>
                  <entry>
                     <para>All UBL Codes MUST be part of a UBL or externally maintained Code List.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[CDL2]</para>
                  </entry>
                  <entry>
                     <para>The UBL Library SHOULD identify and use external standardized code lists rather than develop its own UBL-native code lists.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[CDL3]</para>
                  </entry>
                  <entry>
                     <para>The UBL Library MAY design and use an internal code list where an existing external code list needs to be extended, or where no suitable external code list exists.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[CDL4]</para>
                  </entry>
                  <entry>
                     <para>All UBL maintained or used Code Lists MUST be enumerated using the UBL Code List Schema Module.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[CDL5]</para>
                  </entry>
                  <entry>
                     <para>The name of each UBL Code List Schema Module MUST be of the form:</para>
                     <para>{Owning Organization}{Code List Name}{Code List Schema Module}</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[CDL6]</para>
                  </entry>
                  <entry>
                     <para>An xsd:import element MUST be declared for every code list required in a UBL schema.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[CDL7]</para>
                  </entry>
                  <entry>
                     <para>Users of the UBL Library MAY identify any subset they wish from an identified code list for their own trading community conformance requirements.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[CDL8]</para>
                  </entry>
                  <entry>
                     <para>The xsd:schemaLocation MUST include the complete URI used to identify the relevant code list schema.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[CDL9]</para>
                  </entry>
                  <entry>
                     <para>UBL Code list attribute values SHOULD be set to 'default'.</para>
                  </entry>
               </row>
            </tbody>
         </tgroup>
      </informaltable>
      <informaltable>
         <tgroup cols="2">
            <colspec colwidth="137px" colname="col1"/>
            <colspec colwidth="749px" colname="col2"/>
            <tbody>
               <row>
                  <entry namest="col1" nameend="col2">
                     <para role="Heading2appendixa">ComplexType Definition rules</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[CTD1]</para>
                  </entry>
                  <entry>
                     <para>For every class and property identified in the UBL model, a named xsd:complexType MUST be defined.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[CTD2]</para>
                  </entry>
                  <entry>
                     <para>Every ccts:ABIE xsd:complexType definition content model MUST use the xsd:sequence element containing references to the appropriate global element declarations.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[CTD3]</para>
                  </entry>
                  <entry>
                     <para>Every ccts:BBIEProperty xsd:complexType definition content model MUST use the xsd:simpleContent element.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[CTD4]</para>
                  </entry>
                  <entry>
                     <para>Every ccts:BBIEProperty xsd:complexType content model xsd:simpleContent element MUST consist of an xsd:extension element.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[CTD5]</para>
                  </entry>
                  <entry>
                     <para>Every ccts:BBIEProperty xsd:complexType content model xsd:base attribute value MUST be the UN/CEFACT Unqualified Datatype or UBL qualified Datatype as appropriate.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[CTD6]</para>
                  </entry>
                  <entry>
                     <para>For every Qualified Datatype used in the UBL model, a named xsd:complexType or xsd:simpleType MUST be defined.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[CTD20]</para>
                  </entry>
                  <entry>
                     <para>A ccts:QualifiedDataType MUST be based on an unqualified data type and add some semantic and/or technical restriction to the unqualified data type.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[CTD21]</para>
                  </entry>
                  <entry>
                     <para>The name of a ccts:QualifiedDataType MUST be the name of its base ccts:UnqualifiedDataType with separators and spaces removed and with its qualifier term added.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[CTD22]</para>
                  </entry>
                  <entry>
                     <para>Every qualified datatype based on an unqualified datatype xsd:complexType whose supplementary components map directly to the properties of an XSD built-in data type</para>
                     <para>MUST be defined as an xsd:simpleType</para>
                     <para>MUST contain one xsd:restriction element</para>
                     <para>MUST include an xsd:base attribute that defines the specific XSD built-in data type required for the content component</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[CTD23]</para>
                  </entry>
                  <entry>
                     <para>Every qualified datatype based on an unqualified datatype xsd:complexType whose supplementary components do not map directly to the properties of an XSD built-in data type</para>
                     <para>MUST be defined as an xsd:complexType</para>
                     <para>MUST contain one xsd:simpleContent element</para>
                     <para>MUST contain one xsd:restriction element</para>
                     <para>MUST include the unqualified datatype as its xsd:base attribute</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[CTD24]</para>
                  </entry>
                  <entry>
                     <para>Every qualified datatype based on an unqualified datatype xsd:simpleType </para>
                     <para>MUST contain one xsd:restriction element</para>
                     <para>MUST include the unqualified datatype as its xsd:base attribute</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[CTD25]</para>
                  </entry>
                  <entry>
                     <para>For every ccts:BBIEProperty identified in the UBL model a named xsd:complexType must be defined.</para>
                  </entry>
               </row>
            </tbody>
         </tgroup>
      </informaltable>
      <informaltable>
         <tgroup cols="2">
            <colspec colwidth="137px" colname="col1"/>
            <colspec colwidth="749px" colname="col2"/>
            <tbody>
               <row>
                  <entry namest="col1" nameend="col2">
                     <para role="Heading2appendixa">Complex Type Naming rules</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[CTN1]</para>
                  </entry>
                  <entry>
                     <para>A UBL xsd:complexType name based on an ccts:Aggregate BusinessInformationEntity MUST be the ccts:Dictionary EntryName with the separators removed and with the &#8220;Details&#8221; suffix replaced with &#8220;Type&#8221;.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[CTN2]</para>
                  </entry>
                  <entry>
                     <para>A UBL xsd:complexType name based on a ccts:BasicBusiness InformationEntityProperty MUST be the ccts:Dictionary EntryName shared property term and its qualifiers and representation term of the ccts:BasicBusinessInformationEntity, with the separators removed and with the &#8220;Type&#8221; suffix appended after the representation term.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[CTNX1]</para>
                  </entry>
                  <entry>
                     <para>A UBL xsd:complexType name based on a ccts:BasicBusinessInformationEntityProperty  and with a . ccts:BasicBusinessInformationEntityRepresentationTerm of 'Text' MUST have the word "Text" removed from the end of its name.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[CTNX2]</para>
                  </entry>
                  <entry>
                     <para>A UBL xsd:complexType name based on a ccts:BasicBusinessInformationEntityProperty  and with a . ccts:BasicBusinessInformationEntityRepresentationTerm of 'Identifier' MUST have the word "Identifier" replaced by the word "ID" at the end of its name.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[CTNX3]</para>
                  </entry>
                  <entry>
                     <para>A UBL xsd:complexType name based on a ccts:BasicBusinessInformationEntityProperty MUST remove all duplication of words that occur as a result of duplicate property terms and representation terms.</para>
                  </entry>
               </row>
            </tbody>
         </tgroup>
      </informaltable>
      <informaltable>
         <tgroup cols="2">
            <colspec colwidth="137px" colname="col1"/>
            <colspec colwidth="749px" colname="col2"/>
            <tbody>
               <row>
                  <entry namest="col1" nameend="col2">
                     <para role="Heading2appendixa">Documentation rules</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[DOC1]</para>
                  </entry>
                  <entry>
                     <para>The xsd:documentation element for every Datatype MUST contain a structured set of annotations in the following sequence and pattern (as defined in CCTS Section 7): </para>
                     <para>&#8226; DictionaryEntryName (mandatory)</para>
                     <para>&#8226; Version (mandatory):</para>
                     <para>&#8226; Definition(mandatory)</para>
                     <para>&#8226; RepresentationTerm (mandatory) </para>
                     <para>&#8226; QualifierTerm(s) (mandatory, where used)</para>
                     <para>&#8226; UniqueIdentifier (mandatory)</para>
                     <para>&#8226; Usage Rule(s) (optional)</para>
                     <para>&#8226; Content Component Restriction (optional)</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[DOC2]</para>
                  </entry>
                  <entry>
                     <para>A Datatype definition MAY contain one or more Content Component Restrictions to provide additional information on the relationship between the Datatype and its corresponding Core Component Type. If used the Content Component Restrictions must contain a structured set of annotations in the following patterns:</para>
                     <para>&#8226; RestrictionType (mandatory): Defines the type of format restriction that applies to the Content Component.</para>
                     <para>&#8226; RestrictionValue (mandatory): The actual value of the format restriction that applies to the Content Component.</para>
                     <para>&#8226; ExpressionType (optional): Defines the type of the regular expression of the restriction value.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[DOC3]</para>
                  </entry>
                  <entry>
                     <para>A Datatype definition MAY contain one or more Supplementary Component Restrictions to provide additional information on the relationship between the Datatype and its corresponding Core Component Type. If used the Supplementary Component Restrictions must contain a structured set of annotations in the following patterns:</para>
                     <para>&#8226; SupplementaryComponentName (mandatory): Identifies the Supplementary Component on which the restriction applies.</para>
                     <para>&#8226; RestrictionValue (mandatory, repetitive): The actual value(s) that is (are) valid for the Supplementary Componen</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[DOC4]</para>
                  </entry>
                  <entry>
                     <para>The xsd:documentation element for every Basic Business Information Entity MUST contain a structured set of annotations in the following patterns:</para>
                     <para>&#8226; ComponentType (mandatory): The type of component to which the object belongs. For Basic Business Information Entities this must be &#8220;BBIE&#8221;.</para>
                     <para>&#8226; DictionaryEntryName (mandatory): The official name of a Basic Business Information Entity.</para>
                     <para>&#8226; Version (optional): An indication of the evolution over time of the Basic Business Information Entity.</para>
                     <para>&#8226; Definition(mandatory): The semantic meaning of a Basic Business Information Entity.</para>
                     <para>&#8226; Cardinality(mandatory): Indication whether the Basic Business Information Entity represents a not-applicable, optional, mandatory and/or repetitive characteristic of the Aggregate Business Information Entity.</para>
                     <para>&#8226; ObjectClassQualifier (optional): The qualifier for the object class.</para>
                     <para>&#8226; ObjectClass(mandatory): The Object Class containing the Basic Business Information Entity.</para>
                     <para>&#8226; PropertyTermQualifier (optional): A qualifier is a word or words which help define and differentiate a Basic Business Information Entity.</para>
                     <para>&#8226; PropertyTerm(mandatory): Property Term represents the distinguishing characteristic or Property of the Object Class and shall occur naturally in the definition of the Basic Business Information Entity. </para>
                     <para>&#8226; RepresentationTerm (mandatory): A Representation Term describes the form in which the Basic Business Information Entity is represented. </para>
                     <para>&#8226; DataTypeQualifier (optional): semantically meaningful name that differentiates the Datatype of the Basic Business Information Entity from its underlying Core Component Type. </para>
                     <para>&#8226; DataType (mandatory): Defines the Datatype used for the Basic Business Information Entity.</para>
                     <para>&#8226; AlternativeBusinessTerms (optional): Any synonym terms under which the Basic Business Information Entity is commonly known and used in the business.</para>
                     <para>&#8226; Examples (optional): Examples of possible values for the Basic Business Information Entity</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[DOC5]</para>
                  </entry>
                  <entry>
                     <para>The xsd:documentation element for every Aggregate Business Information Entity MUST contain a structured set of annotations in the following sequence and pattern:</para>
                     <para>&#8226; ComponentType (mandatory): The type of component to which the object belongs. For Aggregate Business Information Entities this must be &#8220;ABIE&#8221;.</para>
                     <para>&#8226; DictionaryEntryName (mandatory): The official name of the Aggregate Business Information Entity .</para>
                     <para>&#8226; Version (optional): An indication of the evolution over time of the Aggregate Business Information Entity.</para>
                     <para>&#8226; Definition(mandatory): The semantic meaning of the Aggregate Business Information Entity.</para>
                     <para>&#8226; ObjectClassQualifier (optional): The qualifier for the object class.</para>
                     <para>&#8226; ObjectClass(mandatory): The Object Class represented by the Aggregate Business Information Entity.</para>
                     <para>&#8226; AlternativeBusinessTerms (optional): Any synonym terms under which the Aggregate Business Information Entity is commonly known and used in the business.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[DOC6]</para>
                  </entry>
                  <entry>
                     <para>The xsd:documentation element for every Association Business Information Entity element declaration MUST contain a structured set of annotations in the following sequence and pattern:</para>
                     <para>&#8226; ComponentType (mandatory): The type of component to which the object belongs. For Association Business Information Entities this must be &#8220;ASBIE&#8221;.</para>
                     <para>&#8226; DictionaryEntryName (mandatory): The official name of the Association Business Information Entity.</para>
                     <para>&#8226; Version (optional): An indication of the evolution over time of the Association Business Information Entity.</para>
                     <para>&#8226; Definition(mandatory): The semantic meaning of the Association Business Information Entity.</para>
                     <para>&#8226; Cardinality(mandatory): Indication whether the Association Business Information Entity represents an optional, mandatory and/or repetitive assocation.</para>
                     <para>&#8226; ObjectClass(mandatory): The Object Class containing the Association Business Information Entity.</para>
                     <para>&#8226; PropertyTermQualifier (optional): A qualifier is a word or words which help define and differentiate the Association Business Information Entity.</para>
                     <para>&#8226; PropertyTerm(mandatory): Property Term represents the Aggregate Business Information Entity contained by the Association Business Information Entity.</para>
                     <para>&#8226; AssociatedObjectClassQualifier (optional): Associated Object Class Qualifiers describe the 'context' of the relationship with another ABIE. That is, it is the role the contained Aggregate Business Information Entity plays within its association with the containing Aggregate Business Information Entity. </para>
                     <para>&#8226; AssociatedObjectClass (mandatory); Associated Object Class is the Object Class at the other end of this association. It represents the Aggregate Business Information Entity contained by the Association Business Information Entity.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[DOC8]</para>
                  </entry>
                  <entry>
                     <para>The xsd:documentation element for every Supplementary Component attribute declarationMUST contain a structured set of annotations in the following sequence and pattern:</para>
                     <para>&#8226; Name (mandatory): Name in the Registry of a Supplementary Component of a Core Component Type.</para>
                     <para>&#8226; Definition (mandatory): A clear, unambiguous and complete explanation of the meaning of a Supplementary Component and its relevance for the related Core Component Type.</para>
                     <para>&#8226; Primitive type (mandatory): PrimitiveType to be used for the representation of the value of a Supplementary Component.</para>
                     <para>&#8226; Possible Value(s) (optional): one possible value of a Supplementary Component.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[DOC9]</para>
                  </entry>
                  <entry>
                     <para>The xsd:documentation element for every Supplementary Component attribute declaration containing restrictions MUST include the following additional information appended to the information required by DOC8:</para>
                     <para>&#8226; Restriction Value(s) (mandatory): The actual value(s) that is (are) valid for the Supplementary Component.</para>
                  </entry>
               </row>
            </tbody>
         </tgroup>
      </informaltable>
      <informaltable>
         <tgroup cols="2">
            <colspec colwidth="137px" colname="col1"/>
            <colspec colwidth="749px" colname="col2"/>
            <tbody>
               <row>
                  <entry namest="col1" nameend="col2">
                     <para role="Heading2appendixa">Element Declaration rules</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[ELD2]</para>
                  </entry>
                  <entry>
                     <para>All element declarations MUST be global</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[ELD3]</para>
                  </entry>
                  <entry>
                     <para>For every class and property identified in the UBL model, a global element bound to the corresponding xsd:complexType MUST be declared.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[ELD4]</para>
                  </entry>
                  <entry>
                     <para>When a ccts:ASBIE is unqualified, it is bound via reference to the global ccts:ABIE element to which it is associated.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[ELD6]</para>
                  </entry>
                  <entry>
                     <para>The code list xsd:import element MUST contain the namespace and schema location attributes.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[ELD7]</para>
                  </entry>
                  <entry>
                     <para>Empty elements MUST not be declared, except in  the case of extension, where the 'UBL Extensions' element is used.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[ELD9]</para>
                  </entry>
                  <entry>
                     <para>(See GXS14)</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[ELD10]</para>
                  </entry>
                  <entry>
                     <para>The root element MUST be the only global element declared in document schemas.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[ELD11]</para>
                  </entry>
                  <entry>
                     <para>When a ccts:ASBIE is qualified, a new element MUST be declared and bound to the xsd:complexType of its associated ccts:ABIE.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[ELD12]</para>
                  </entry>
                  <entry>
                     <para>The 'UBL Extensions' element MUST be declared as the first child of the document element with xsd:minOccurs="0".</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[ELD13]</para>
                  </entry>
                  <entry>
                     <para>The 'UBLProfileID' element MUST be declared immediately following the 'UBL Extensions' element with xsd:minOccurs="0".</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[ELD14]</para>
                  </entry>
                  <entry>
                     <para>The 'UBLSubsetID' element MUST be declared immediately following the 'UBLProfileID' element  with xsd:minOccurs="0".</para>
                  </entry>
               </row>
            </tbody>
         </tgroup>
      </informaltable>
      <informaltable>
         <tgroup cols="2">
            <colspec colwidth="137px" colname="col1"/>
            <colspec colwidth="749px" colname="col2"/>
            <tbody>
               <row>
                  <entry namest="col1" nameend="col2">
                     <para role="Heading2appendixa">Element Naming rules</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[ELN1]</para>
                  </entry>
                  <entry>
                     <para>A UBL global element name based on a ccts:ABIE MUST be the same as the name of the corresponding xsd:complexType to which it is bound, with the word &#8220;Type&#8221; removed.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[ELN2]</para>
                  </entry>
                  <entry>
                     <para>A UBL global element name based on a ccts:BBIEProperty MUST be the same as the name of the corresponding xsd:complexType to which it is bound, with the word &#8220;Type&#8221; removed.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[ELN3]</para>
                  </entry>
                  <entry>
                     <para>A UBL global element name based on a ccts:ASBIE MUST be the ccts:ASBIE dictionary entry name property term and its qualifiers; and the object class term and qualifiers of its associated ccts:ABIE. All ccts:DictionaryEntryName separators MUST be removed..</para>
                  </entry>
               </row>
               <row>
                  <entry/>
                  <entry/>
               </row>
               <row>
                  <entry namest="col1" nameend="col2">
                     <para role="Heading2appendixa"> General Naming rules</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[GNR1]</para>
                  </entry>
                  <entry>
                     <para>UBL XML element and type names MUST be in the English language, using the primary English spellings provided in the Oxford English Dictionary.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[GNR2]</para>
                  </entry>
                  <entry>
                     <para>UBL XML element and type names MUST be consistently derived from CCTS conformant dictionary entry names.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[GNR3]</para>
                  </entry>
                  <entry>
                     <para>UBL XML element and type names constructed from ccts:DictionaryEntryNames MUST NOT include periods, spaces, other separators, or characters not allowed by W3C XML 1.0 for XML names</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[GNR4]</para>
                  </entry>
                  <entry>
                     <para>UBL XML element, and simple and complex type names MUST NOT use acronyms, abbreviations, or other word truncations, except those in the list of exceptions published in Appendix B.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[GNR5]</para>
                  </entry>
                  <entry>
                     <para>Acronyms and abbreviations MUST only be added to the UBL approved acronym and abbreviation list after careful consideration for maximum understanding and reuse.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[GNR6]</para>
                  </entry>
                  <entry>
                     <para>The acronyms and abbreviations listed in Appendix B MUST always be used in place of the word or phrase they represent.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[GNR7]</para>
                  </entry>
                  <entry>
                     <para>UBL XML element, and type names MUST be in singular form unless the concept itself is plural.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[GNR8]</para>
                  </entry>
                  <entry>
                     <para>The UpperCamelCase (UCC) convention MUST be used for naming elements and types.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[GNR10]</para>
                  </entry>
                  <entry>
                     <para>Acronyms and abbreviations at the beginning of an attribute name MUST appear in all lower case.  All other acronym and abbreviation usage in an attribute declaration MUST appear in upper case.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[GNR11]</para>
                  </entry>
                  <entry>
                     <para>Acronyms and abbreviations MUST appear in all upper case for all element declarations and type definitions.</para>
                  </entry>
               </row>
            </tbody>
         </tgroup>
      </informaltable>
      <informaltable>
         <tgroup cols="2">
            <colspec colwidth="137px" colname="col1"/>
            <colspec colwidth="749px" colname="col2"/>
            <tbody>
               <row>
                  <entry namest="col1" nameend="col2">
                     <para role="Heading2appendixa">General Type Definition Rules</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[GTD1]</para>
                  </entry>
                  <entry>
                     <para>All types MUST be named.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[GTD2]</para>
                  </entry>
                  <entry>
                     <para>The xsd:anyType MUST NOT be used.</para>
                  </entry>
               </row>
            </tbody>
         </tgroup>
      </informaltable>
      <informaltable>
         <tgroup cols="2">
            <colspec colwidth="137px" colname="col1"/>
            <colspec colwidth="749px" colname="col2"/>
            <tbody>
               <row>
                  <entry namest="col1" nameend="col2">
                     <para role="Heading2appendixa">General XML Schema Rules</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[GXS1]</para>
                  </entry>
                  <entry>
                     <para>UBL Schema MUST conform to the following physical layout as applicable:</para>
                     <para>&lt;!-- ======= XML Declaration======== --&gt;</para>
                     <para>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</para>
                     <para>&lt;!-- ======= Schema Header ======= --&gt;</para>
                     <para>  Document Name: &lt; Document name as indicated in Section 3.6 &gt;</para>
                     <para>  Generated On:      &lt; Date schema was generated &gt;</para>
                     <para>&lt;!-- ===== Copyright Notice ===== --&gt;</para>
                     <para>&#8220;Copyright &#8222; 2001-2004 The Organization for the Advancement of Structured Information Standards (OASIS). All rights reserved.</para>
                     <para>&lt;!-- ===== xsd:schema Element With Namespaces Declarations ===== --&gt;</para>
                     <para>xsd:schema element to include version attribute and namespace declarations in the following order:</para>
                     <para>xmlns:xsd</para>
                     <para>Target namespace</para>
                     <para>Default namespace</para>
                     <para>CommonAggregateComponents</para>
                     <para>CommonBasicComponents</para>
                     <para>CoreComponentTypes</para>
                     <para>Unspecialized Unqualified Datatypes</para>
                     <para>Specialized Qualified Datatypes</para>
                     <para>Identifier Schemes</para>
                     <para>Code Lists</para>
                     <para>Attribute Declarations &#8211; elementFormDefault="&#8221;qualified"&#8221; attributeFormDefault="&#8221;unqualified"&#8221; </para>
                     <para>                   Version Attribute</para>
                     <para>&lt;!-- ===== Imports ===== --&gt;</para>
                     <para>CommonAggregateComponents schema module</para>
                     <para>CommonBasicComponents schema module</para>
                     <para>Unspecialized Unqualified Types schema module</para>
                     <para>Specialized Qualified Types schema module</para>
                     <para>&lt;!-- ===== Global Attributes ===== --&gt;</para>
                     <para>Global Attributes and Attribute Groups</para>
                     <para>&lt;!-- ===== Root Element ===== --&gt;</para>
                     <para>Root Element Declaration</para>
                     <para>Root Element Type Definition</para>
                     <para>&lt;!-- ===== Element Declarations ===== --&gt;</para>
                     <para>alphabetized order</para>
                     <para>&lt;!-- ===== Type Definitions ===== --&gt;</para>
                     <para>All type definitions segregated by basic and aggregates as follows</para>
                     <para>&lt;!-- ===== Aggregate Business Information Entity Type Definitions ===== --&gt;</para>
                     <para>alphabetized order of ccts:AggregateBusinessInformationEntity xsd:TypeDefinitions</para>
                     <para>&lt;!-- =====Basic Business Information Entity Type Definitions ===== --&gt;</para>
                     <para>alphabetized order of ccts:BasicBusinessInformationEntities</para>
                     <para>&lt;!-- ===== Copyright Notice ===== --&gt;</para>
                     <para>Required OASIS full copyright notice.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para role="Legalnotice">[GXS2]</para>
                  </entry>
                  <entry>
                     <para>UBL MUST provide two normative schemas for each transaction. One schema shall be fully annotated. One schema shall be a run-time schema devoid of documentation.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[GXS3]</para>
                  </entry>
                  <entry>
                     <para>Built-in XSD Simple Types SHOULD be used wherever possible.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[GXS4]</para>
                  </entry>
                  <entry>
                     <para>All W3C XML Schema constructs in UBL Schema and schema modules MUST contain the following namespace declaration on the xsd schema element: xmlns:xsd="http://www.w3.org/2001/XMLSchema&#8221;</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[GXS5]</para>
                  </entry>
                  <entry>
                     <para>The xsd:substitutionGroup feature MUST NOT be used.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[GXS6]</para>
                  </entry>
                  <entry>
                     <para>The xsd:final attribute MUST be used to control extensions where there is a desire to prohibit further extensions.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[GXS7]</para>
                  </entry>
                  <entry>
                     <para>xsd:notation MUST NOT be used.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[GXS8]</para>
                  </entry>
                  <entry>
                     <para>The xsd:all element MUST NOT be used.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[GXS9]</para>
                  </entry>
                  <entry>
                     <para>The xsd:choice element SHOULD NOT be used where customisation and extensibility are a concern.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[GXS11]</para>
                  </entry>
                  <entry>
                     <para>The xsd:union technique MUST NOT be used except for Code Lists. The xsd:union technique MAY be used for Code Lists.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[GXS12]</para>
                  </entry>
                  <entry>
                     <para>UBL designed schema SHOULD NOT use xsd:appinfo. If used, xsd:appinfo MUST only be used to convey non-normative information.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[GXS13]</para>
                  </entry>
                  <entry>
                     <para>Complex Type extension or restriction MAY be used where appropriate.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[GXS14]</para>
                  </entry>
                  <entry>
                     <para>The xsd:any element MUST NOT be used except within the 'ExtensionContentType' type definition, and with xsd:processContents= "skip" for non-UBL namespaces.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[GXS15]</para>
                  </entry>
                  <entry>
                     <para>Each xsd:schemaLocation attribute declaration MUST contain a system-resolvable URL, which at the time of release from OASIS shall be a relative URL referencing the location of the schema or schema module in the release package.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[GXS16]</para>
                  </entry>
                  <entry>
                     <para>The built in xsd:nillable attribute MUST NOT be used for any UBL declared element.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[GXS17]</para>
                  </entry>
                  <entry>
                     <para>The xsd:anyAttribute MUST NOT be used.</para>
                  </entry>
               </row>
            </tbody>
         </tgroup>
      </informaltable>
      <informaltable>
         <tgroup cols="2">
            <colspec colwidth="115px" colname="col1"/>
            <colspec colwidth="771px" colname="col2"/>
            <tbody>
               <row>
                  <entry namest="col1" nameend="col2">
                     <para role="Heading2appendixa">Instance document rules</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[IND1]</para>
                  </entry>
                  <entry>
                     <para>All UBL instance documents MUST validate to a corresponding schema.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[IND2]</para>
                  </entry>
                  <entry>
                     <para>All UBL instance documents MUST identify their character encoding within the XML declaration.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[IND3]</para>
                  </entry>
                  <entry>
                     <para>In conformance with ISO/IETF/ITU/UNCEFACT Memorandum of Understanding Management Group (MOUMG) Resolution 01/08 (MOU/MG01n83) as agreed to by OASIS, all UBL XML SHOULD be expressed using UTF-8.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[IND4]</para>
                  </entry>
                  <entry>
                     <para>All UBL instance documents MUST contain the following namespace declaration in the root element:</para>
                     <para>xmlns:xsi=&#8221;http://www.w3.org/2001/XMLSchema-instance&#8221;</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[IND5]</para>
                  </entry>
                  <entry>
                     <para>UBL conformant instance documents MUST NOT contain an element devoid of content or null values, except in  the case of extension, where the 'UBL Extensions' element is used.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[IND6]</para>
                  </entry>
                  <entry>
                     <para>The absence of a construct or data in a UBL instance document MUST NOT carry meaning except in  the case of extension, where the 'UBL Extensions' element is used</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[IND7]</para>
                  </entry>
                  <entry>
                     <para>All UBL instance documents MUST include an element named "UBLVersionID" as the first child of its root element, except in  the case of extension, where the 'UBL Extensions' element is used. In the case of extension the 'UBLVersionID' element MUST be the second child of the document element. The value of this 'UBLVersionID' element MUST match the value of the xsd:version attribute of its controlling schema</para>
                  </entry>
               </row>
            </tbody>
         </tgroup>
      </informaltable>
      <informaltable>
         <tgroup cols="2">
            <colspec colwidth="115px" colname="col1"/>
            <colspec colwidth="771px" colname="col2"/>
            <tbody>
               <row>
                  <entry namest="col1" nameend="col2">
                     <para role="Heading2appendixa">Modelling constraint rules</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[MDC1]</para>
                  </entry>
                  <entry>
                     <para>UBL Libraries and Schemas MUST only use ebXML Core Component approved ccts:CoreComponentTypes, except in the case of extension, where the 'UBL Extensions' element is used</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[MDC2]</para>
                  </entry>
                  <entry>
                     <para>Mixed content MUST NOT be used except where contained in an xsd:documentation element</para>
                  </entry>
               </row>
            </tbody>
         </tgroup>
      </informaltable>
      <informaltable>
         <tgroup cols="2">
            <colspec colwidth="146px" colname="col1"/>
            <colspec colwidth="975px" colname="col2"/>
            <tbody>
               <row>
                  <entry namest="col1" nameend="col2">
                     <para role="Heading2appendixa">Naming constraint rules</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[NMC1]</para>
                  </entry>
                  <entry>
                     <para>Each dictionary entry name <emphasis role="italics">MUST</emphasis> define <emphasis role="italics">one</emphasis>
                        <emphasis role="italics"/>and only <emphasis role="italics">one</emphasis>
                        <emphasis role="italics"/>fully qualified path (FQP) for an element or attribute.</para>
                  </entry>
               </row>
            </tbody>
         </tgroup>
      </informaltable>
      <informaltable>
         <tgroup cols="2">
            <colspec colwidth="114px" colname="col1"/>
            <colspec colwidth="779px" colname="col2"/>
            <tbody>
               <row>
                  <entry namest="col1" nameend="col2">
                     <para role="Heading2appendixa">Namespace Rules</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[NMS1]</para>
                  </entry>
                  <entry>
                     <para>Every UBL-defined &#8211;or -used schema module, except internal schema modules, MUST have a namespace declared using the xsd:targetNamespace attribute.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[NMS2]</para>
                  </entry>
                  <entry>
                     <para>Every UBL-defined-or -used major version schema set MUST have its own unique namespace.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[NMS3]</para>
                  </entry>
                  <entry>
                     <para>UBL namespaces MUST only contain UBL developed schema modules.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[NMS4]</para>
                  </entry>
                  <entry>
                     <para>The namespace names for UBL Schemas holding committee draft status MUST be of the form:</para>
                     <para>urn:oasis:names:tc:ubl:schema:&lt;subtype&gt;:&lt;document-id&gt;</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[NMS5]</para>
                  </entry>
                  <entry>
                     <para>The namespace names for UBL Schemas holding OASIS Standard status MUST be of the form:</para>
                     <para>urn:oasis:names:specification:ubl:schema:&lt;subtype&gt;:&lt;document-id&gt; </para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[NMS6]</para>
                  </entry>
                  <entry>
                     <para>UBL published namespaces MUST never be changed.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[NMS7]</para>
                  </entry>
                  <entry>
                     <para>The ubl:CommonAggregateComponents schema module MUST reside in its own namespace.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[NMS8]</para>
                  </entry>
                  <entry>
                     <para>The ubl:CommonAggregateComponents schema module namespace MUST be represented by the namespace prefix &#8220;cac&#8221; when referenced in other schemas.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[NMS9]</para>
                  </entry>
                  <entry>
                     <para>The ubl:CommonBasicComponents schema module MUST reside in its own namespace.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[NMS10]</para>
                  </entry>
                  <entry>
                     <para>The UBL:CommonBasicComponents schema module namespace MUST be represented by the namespace prefix &#8220;cbc&#8221; when referenced in other schemas.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[NMS15]</para>
                  </entry>
                  <entry>
                     <para>The ubl:QualifiedDatatypes schema module MUST reside in its own namespace.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[NMS16]</para>
                  </entry>
                  <entry>
                     <para>The ubl:QualifiedDatatypes schema module namespace MUST be represented by the namespace prefix &#8220;qdt&#8221; when referenced in other schemas.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[NMS17]</para>
                  </entry>
                  <entry>
                     <para>The ccts:UnqualifiedDatatypes schema module namespace MUST be represented by the token &#8220;udt&#8221;when referenced in other schemas.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[NMS18]</para>
                  </entry>
                  <entry>
                     <para>The CommonExtensionComponent schema module namespace MUST be represented by the namespace prefix 'ext' when referenced in other schemas.</para>
                  </entry>
               </row>
            </tbody>
         </tgroup>
      </informaltable>
      <informaltable>
         <tgroup cols="2">
            <colspec colwidth="115px" colname="col1"/>
            <colspec colwidth="771px" colname="col2"/>
            <tbody>
               <row>
                  <entry namest="col1" nameend="col2">
                     <para role="Heading2appendixa">Root element declaration rules</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[RED1]</para>
                  </entry>
                  <entry>
                     <para>Every UBL instance document MUST validate to a UBL document schema.</para>
                  </entry>
               </row>
            </tbody>
         </tgroup>
      </informaltable>
      <informaltable>
         <tgroup cols="2">
            <colspec colwidth="115px" colname="col1"/>
            <colspec colwidth="771px" colname="col2"/>
            <tbody>
               <row>
                  <entry namest="col1" nameend="col2">
                     <para role="Heading2appendixa">Schema structure modularity rules</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[SSM1]</para>
                  </entry>
                  <entry>
                     <para>UBL Schema expressions MAY be split into multiple schema modules.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[SSM2]</para>
                  </entry>
                  <entry>
                     <para>A document schema in one UBL namespace that is dependent upon type definitions or element declarations defined in another namespace MUST only import the document schema from that namespace.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[SSM3]</para>
                  </entry>
                  <entry>
                     <para>A document schema in one UBL namespace that is dependant upon type definitions or element declarations defined in another namespace MUST NOT import internal schema modules from that namespace.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[SSM4]</para>
                  </entry>
                  <entry>
                     <para>Imported schema modules MUST be fully conformant with UBL naming and design rules.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[SSM5]</para>
                  </entry>
                  <entry>
                     <para>UBL schema modules MUST either be treated as external schema modules or as internal schema modules of the document schema.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[SSM6]</para>
                  </entry>
                  <entry>
                     <para>All UBL internal schema modules MUST be in the same namespace as their corresponding document schema.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[SSM7]</para>
                  </entry>
                  <entry>
                     <para>Each UBL internal schema module MUST be named {ParentSchemaModuleName}{InternalSchemaModuleFunction}{schema module}</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[SSM8]</para>
                  </entry>
                  <entry>
                     <para>A UBL schema module MAY be created for reusable components.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[SSM9]</para>
                  </entry>
                  <entry>
                     <para>A schema module defining all UBL Common Aggregate Components MUST be created.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[SSM10]</para>
                  </entry>
                  <entry>
                     <para>The UBL Common Aggregate Components schema module MUST be identified as CommonAggregateComponents  in the document name within the schema header.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[SSM11]</para>
                  </entry>
                  <entry>
                     <para>A schema module defining all UBLCommon Basic Components MUST be created.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[SSM12]</para>
                  </entry>
                  <entry>
                     <para>The UBL Common Basic Components schema module MUST be identified as CommonBasicComponents in the document name within the schema header.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[SSM18]</para>
                  </entry>
                  <entry>
                     <para>A schema module defining all UBL Qualified Datatypes MUST be created.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[SSM19]</para>
                  </entry>
                  <entry>
                     <para>The UBL Qualified Datatypes schema module MUST be identified as QualifiedDatatypes in the document name in the schema header.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[SSM20]</para>
                  </entry>
                  <entry>
                     <para>The UBL Qualified Datatypes schema module MUST import the  ccts:UnQualifiedDatatypes schema module.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>SSM21</para>
                  </entry>
                  <entry>
                     <para>The UBL extensions schema module MUST be identified as CommonExtensionComponents in the document name within the schema header.</para>
                  </entry>
               </row>
               <row>
                  <entry namest="col1" nameend="col2">
                     <para role="Heading2appendixa">Standards Adherence rules</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[STA1]</para>
                  </entry>
                  <entry>
                     <para>All UBL schema design rules MUST be based on the W3C XML Schema Recommendations: XML Schema Part 1: Structures and XML Schema Part 2: Datatypes.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[STA2]</para>
                  </entry>
                  <entry>
                     <para>All UBL schema and messages MUST be based on the W3C suite of technical specifications holding recommendation status.</para>
                  </entry>
               </row>
            </tbody>
         </tgroup>
      </informaltable>
      <informaltable>
         <tgroup cols="2">
            <colspec colwidth="115px" colname="col1"/>
            <colspec colwidth="771px" colname="col2"/>
            <tbody>
               <row>
                  <entry namest="col1" nameend="col2">
                     <para role="Heading2appendixa">Versioning rules</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[VER1]</para>
                  </entry>
                  <entry>
                     <para>Every UBL Schema and schema module major version committee draft MUST have an RFC 3121 document-id of the form </para>
                     <para>&lt;name&gt;-&lt;major&gt;[.&lt;revision&gt;]</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[VER2]</para>
                  </entry>
                  <entry>
                     <para>Every UBL Schema and schema module major version OASIS Standard MUST have an RFC 3121 document-id of the form </para>
                     <para>&lt;name&gt;-&lt;major&gt;</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[VER3]</para>
                  </entry>
                  <entry>
                     <para>Every minor version release of a UBL schema or schema module draft MUST have an RFC 3121 document-id of the form</para>
                     <para>&lt;name&gt;-&lt;major&gt;[.&lt;revision&gt;]</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[VER4]</para>
                  </entry>
                  <entry>
                     <para>Every minor version release of a UBL schema or schema module OASIS Standard MUST have an RFC 3121 document-id of the form</para>
                     <para>&lt;name&gt;-&lt;major &gt;</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[VER5]</para>
                  </entry>
                  <entry>
                     <para>For UBL Minor version changes the namespace name MUST not change</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[VER6]</para>
                  </entry>
                  <entry>
                     <para>Every UBL Schema and schema module major version number MUST be a sequentially assigned, incremental number greater than zero.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[VER7]</para>
                  </entry>
                  <entry>
                     <para>Every UBL Schema and schema module minor version number MUST be a sequentially assigned, incremental non-negative integer.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[VER8]</para>
                  </entry>
                  <entry>
                     <para>A UBL minor version document schema MUST import its immediately preceding version document schema.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[VER9]</para>
                  </entry>
                  <entry>
                     <para>UBL Schema and schema module minor version changes MUST be limited to the use of xsd:extension or xsd:restriction to alter existing types or add new constructs.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[VER10]</para>
                  </entry>
                  <entry>
                     <para>UBL Schema and schema module minor version changes MUST not break semantic compatibility with prior versions.</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[VER11]</para>
                  </entry>
                  <entry>
                     <para>Every UBL Schema and schema module major version committee draft MUST capture its version number in the xsd:version attribute of the xsd:schema element in the form</para>
                     <para>&lt;major&gt;.0[.&lt;revision&gt;]</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[VER12]</para>
                  </entry>
                  <entry>
                     <para>Every UBL Schema and schema module major version OASIS Standard MUST capture its version number in the xsd:version attribute of the xsd:schema element in the form</para>
                     <para>&lt;major&gt;.0</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[VER13]</para>
                  </entry>
                  <entry>
                     <para>Every minor version release of a UBL schema or schema module draft MUST capture its version information in the xsd:version attribute in the form</para>
                     <para>&lt;major&gt;.&lt;non-zero&gt;[.&lt;revision&gt;]</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[VER14]</para>
                  </entry>
                  <entry>
                     <para>Every minor version release of a UBL schema or schema module OASIS Standard MUST capture its version information in the xsd:version attribute in the form</para>
                     <para>&lt;major&gt;.&lt;non-zero&gt;</para>
                  </entry>
               </row>
               <row>
                  <entry>
                     <para>[VER15]</para>
                  </entry>
                  <entry>
                     <para>Every UBL document schema MUST include a required element named "UBLVersionID" as the first child of its root element. This element MUST have a default value that matches the value of the xsd:version attribute of its containing schema.</para>
                  </entry>
               </row>
            </tbody>
         </tgroup>
      </informaltable>
      <informaltable>
         <tgroup cols="2">
            <colspec colwidth="115px" colname="col1"/>
            <colspec colwidth="771px" colname="col2"/>
            <tbody>
               <row>
                  <entry/>
                  <entry/>
               </row>
               <row>
                  <entry/>
                  <entry/>
               </row>
               <row>
                  <entry/>
                  <entry/>
               </row>
               <row>
                  <entry/>
                  <entry/>
               </row>
               <row>
                  <entry/>
                  <entry/>
               </row>
               <row>
                  <entry/>
                  <entry/>
               </row>
               <row>
                  <entry/>
                  <entry/>
               </row>
               <row>
                  <entry/>
                  <entry/>
               </row>
               <row>
                  <entry/>
                  <entry/>
               </row>
               <row>
                  <entry/>
                  <entry/>
               </row>
               <row>
                  <entry/>
                  <entry/>
               </row>
               <row>
                  <entry/>
                  <entry/>
               </row>
               <row>
                  <entry/>
                  <entry/>
               </row>
               <row>
                  <entry/>
                  <entry/>
               </row>
            </tbody>
         </tgroup>
      </informaltable>
   </appendix>
   <appendix>
      <title role="AppendixHeading1">Approved Acronyms and Abbreviations</title>
      <para>The following Acronyms and Abbreviations have been approved by the UBL NDR Subcommittee for UBL use:</para>
      <orderedlist>
         <listitem>
            <para>A Dun &amp; Bradstreet Data Universal Numbering System (DUNS) number <emphasis role="italics">must</emphasis> appear as "DUNS". </para>
         </listitem>
         <listitem>
            <para>"Identifier" must appear as "ID".</para>
         </listitem>
         <listitem>
            <para>"Uniform Resource Identifier" must appear as "URI" </para>
         </listitem>
         <listitem>
            <para>[Example] the "Uniform Resource. Identifier" portion of the <emphasis role="bold">Binary Object. Uniform Resource. Identifier</emphasis> supplementary component becomes "URI" in the resulting XML name). The use of URI for Uniform Resource Identifier takes precedence over the use of "ID" for "Identifier".</para>
         </listitem>
      </orderedlist>
   </appendix>
   <appendix>
      <title role="AppendixHeading1">References</title>
      <para role="Ref">
         <emphasis role="bold">[CCTS]</emphasis>ISO 15000-5 ebXML Core Components Technical Specification </para>
      <para role="Ref">
         <emphasis role="bold">[ISONaming]</emphasis>
         <emphasis role="italics">ISO/IEC 11179, </emphasis>Final committee draft, Parts 1-6.</para>
      <para role="Ref">(RFC) 2119S. Bradner, <emphasis role="italics">Key words for use in RFCs to Indicate Requirement Levels</emphasis>, http://www.ietf.org/rfc/rfc2119.txt, IETF RFC 2119, March 1997.</para>
      <para role="Ref">
         <emphasis role="bold">[UBLChart]</emphasis>
         <emphasis role="bold"/>
         <emphasis role="bold">UBL TC Charter,</emphasis> http://oasis-open.org/committees/ubl/charter/ubl.htm</para>
      <para role="Ref">
         <emphasis role="bold">[XML]</emphasis>
         <emphasis role="italics">Extensible Markup Language (XML) 1.0</emphasis> (Second Edition), W3C Recommendation, October 6, 2000</para>
      <para role="Ref">
         <emphasis role="bold">(XSD)</emphasis>
         <emphasis role="italics">XML Schema</emphasis>, W3C Recommendations Parts 0, 1, and 2. 2 May 2001.</para>
      <para role="Ref">
         <emphasis role="italics">(XHTML)</emphasis>
         <emphasis role="italics">XHTML&#8482; Basic</emphasis>, W3C Recommendation 19 December 2000: http://www.w3.org/TR/2000/REC-xhtml-basic-20001219</para>
   </appendix>
   <bibliography>
      <title role="AppendixHeading1">References</title>
      <!--These references can be tagged as <biblioentry>.--><para role="Ref">
         <emphasis role="bold">[CCTS]</emphasis>ISO 15000-5 ebXML Core Components Technical Specification </para>
      <para role="Ref">
         <emphasis role="bold">[ISONaming]</emphasis>
         <emphasis role="italics">ISO/IEC 11179, </emphasis>Final committee draft, Parts 1-6.</para>
      <para role="Ref">(RFC) 2119S. Bradner, <emphasis role="italics">Key words for use in RFCs to Indicate Requirement Levels</emphasis>, http://www.ietf.org/rfc/rfc2119.txt, IETF RFC 2119, March 1997.</para>
      <para role="Ref">
         <emphasis role="bold">[UBLChart]</emphasis>
         <emphasis role="bold"/>
         <emphasis role="bold">UBL TC Charter,</emphasis> http://oasis-open.org/committees/ubl/charter/ubl.htm</para>
      <para role="Ref">
         <emphasis role="bold">[XML]</emphasis>
         <emphasis role="italics">Extensible Markup Language (XML) 1.0</emphasis> (Second Edition), W3C Recommendation, October 6, 2000</para>
      <para role="Ref">
         <emphasis role="bold">(XSD)</emphasis>
         <emphasis role="italics">XML Schema</emphasis>, W3C Recommendations Parts 0, 1, and 2. 2 May 2001.</para>
      <para role="Ref">
         <emphasis role="italics">(XHTML)</emphasis>
         <emphasis role="italics">XHTML&#8482; Basic</emphasis>, W3C Recommendation 19 December 2000: http://www.w3.org/TR/2000/REC-xhtml-basic-20001219</para>
      <biblioentry>
         <titleabbrev><?xm-replace_text {titleabbrev}?></titleabbrev>
      </biblioentry>
   </bibliography>
</book>
