<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" 
                 href="db/spec-0.5/stylesheets/oasis-specification-html.xsl"?>
<!DOCTYPE article
  PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
  "db/docbook/docbookx.dtd"
[
<!--the document properties-->
<!ENTITY name "prd2-UBL-2.0-NDR">
<!ENTITY pversion "">
<!ENTITY version "">
<!ENTITY standard "Public Review Draft 02">
<!ENTITY this-loc   "http://docs.oasis-open.org/ubl/prd2-UBL-2.0-NDR">
<!ENTITY previous-loc "http://docs.oasis-open.org/ubl/prd-UBL-NDR-2.0">
<!ENTITY latest-loc   "http://docs.oasis-open.org/ubl/UBL-2.0-NDR">
<!ENTITY pubdate "{6 November 2009}">
]>
<article status="&standard;">
	<articleinfo>
		<productname>&name;</productname>
		<productnumber>&version;</productnumber>
		<title>Universal Business Language (UBL) 2.0 Naming and Design Rules</title>

    <releaseinfo role="OASIS-specification-this">&this-loc;/&name;.html</releaseinfo>
    <releaseinfo role="OASIS-specification-this">&this-loc;/&name;.pdf</releaseinfo>
    <releaseinfo role="OASIS-specification-this-authoritative">&this-loc;/&name;.xml</releaseinfo>

    <releaseinfo role="OASIS-specification-previous">&previous-loc;.doc</releaseinfo>
    <releaseinfo role="OASIS-specification-previous">&previous-loc;.htm</releaseinfo>
    <releaseinfo role="OASIS-specification-previous">&previous-loc;.pdf</releaseinfo>

    <releaseinfo role="OASIS-specification-latest">&latest-loc;/UBL-2.0-NDR.html</releaseinfo>
    <releaseinfo role="OASIS-specification-latest">&latest-loc;/UBL-2.0-NDR.pdf</releaseinfo>
    <releaseinfo role="OASIS-specification-latest-authoritative">&latest-loc;/UBL-2.0-NDR.xml</releaseinfo>

		<releaseinfo role="committee"> OASIS Universal Business Language (UBL) TC </releaseinfo>
		<authorgroup>
			<editor>
				<firstname>Mike</firstname>
				<surname>Grimley</surname>
				<affiliation>
					<orgname>US Navy</orgname>
					<address><email>MJGrimley@acm.org</email></address>
				</affiliation>
			</editor>
			<editor>
				<firstname>Mavis</firstname>
				<surname>Cournane</surname>
				<affiliation>
					<orgname>Cognitran Limited</orgname>
					<address><email>mavis.Cournane@cognitran.com</email></address>
				</affiliation>
			</editor>
			<othercredit>
				<firstname>Jon</firstname>
				<surname>Bosak</surname>
				<affiliation>
					<orgname>Pinax</orgname>
					<address><email>bosak@pinax.com</email></address>
				</affiliation>
			</othercredit>
			<othercredit>
				<firstname>Tim</firstname>
				<surname>McGrath</surname>
				<affiliation>
					<orgname>Document Engineering <?lb?>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Services</orgname>
					<address><email>tim.mcgrath@documentengineeringservices.com</email></address>
				</affiliation>
			</othercredit>
		</authorgroup>
		<abstract>
			<title>Abstract</title>
			<para id="para-1.2.11.2">This specification documents the naming and design rules and
				guidelines for the construction of XML components for the UBL vocabulary.</para>
		</abstract>
		<pubdate>6 November 2009</pubdate>

		<legalnotice role="status">
			<title>Status</title>
			<para id="para-1.2.12.2">This document was last revised or approved by the UBL TC on the
				above date. The level of approval is also listed above. Check the current location
				noted above for possible later revisions of this document. This document is updated
				periodically on no particular schedule.</para>
			<para id="para-1.2.12.3">Technical Committee members should send comments on this
				specification to the Technical Committee's email list. Others should send comments
				to the Technical Committee by using the "Send A Comment" button on the Technical
				Committee's web page at <ulink url="http://www.oasis-open.org/committees/ubl"
				/>.</para>
			<para id="para-1.2.12.4">For information on whether any patents have been disclosed that
				may be essential to implementing this specification, and any offers of patent
				licensing terms, please refer to the Intellectual Property Rights section of the
				Technical Committee web page (<ulink
					url="http://www.oasis-open.org/committees/ubl/ipr.php"/>).</para>
			<para id="para-1.2.12.5">The non-normative errata page (if any) for this specification
				is located at <ulink url="http://www.oasis-open.org/committees/ubl"/>.</para>
		</legalnotice>

    <legalnotice role="notices"><title>Notices</title>

         <para>Copyright &#169; OASIS&#174; Open 2001-2009. All Rights
         Reserved.</para>

         <para>All capitalized terms in the following text have
         the meanings assigned to them in the OASIS Intellectual
         Property Rights Policy (the "OASIS IPR Policy"). The full
         Policy may be found at the OASIS website.</para>

         <para>This document and translations of it may be copied
         and furnished to others, and derivative works that
         comment on or otherwise explain it or assist in its
         implementation may be prepared, copied, published, and
         distributed, in whole or in part, without restriction of
         any kind, provided that the above copyright notice and
         this section are included on all such copies and
         derivative works. However, this document itself may not
         be modified in any way, including by removing the
         copyright notice or references to OASIS, except as needed
         for the purpose of developing any document or deliverable
         produced by an OASIS Technical Committee (in which case
         the rules applicable to copyrights, as set forth in the
         OASIS IPR Policy, must be followed) or as required to
         translate it into languages other than English.</para>

         <para>The limited permissions granted above are perpetual
         and will not be revoked by OASIS or its successors or
         assigns.</para>

         <para>This document and the information contained herein
         is provided on an "AS IS" basis and OASIS DISCLAIMS ALL
         WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
         TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN
         WILL NOT INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED
         WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
         PURPOSE.</para>

         <para>OASIS requests that any OASIS Party or any other
         party that believes it has patent claims that would
         necessarily be infringed by implementations of this OASIS
         Committee Specification or OASIS Standard, to notify
         OASIS TC Administrator and provide an indication of its
         willingness to grant patent licenses to such patent
         claims in a manner consistent with the IPR Mode of the
         OASIS Technical Committee that produced this
         specification.</para>

         <para>OASIS invites any party to contact the OASIS TC
         Administrator if it is aware of a claim of ownership of
         any patent claims that would necessarily be infringed by
         implementations of this specification by a patent holder
         that is not willing to provide a license to such patent
         claims in a manner consistent with the IPR Mode of the
         OASIS Technical Committee that produced this
         specification. OASIS may include such claims on its
         website, but disclaims any obligation to do so.</para>

         <para>OASIS takes no position regarding the validity or
         scope of any intellectual property or other rights that
         might be claimed to pertain to the implementation or use
         of the technology described in this document or the
         extent to which any license under such rights might or
         might not be available; neither does it represent that it
         has made any effort to identify any such
         rights. Information on OASIS' procedures with respect to
         rights in any document or deliverable produced by an
         OASIS Technical Committee can be found on the OASIS
         website. Copies of claims of rights made available for
         publication and any assurances of licenses to be made
         available, or the result of an attempt made to obtain a
         general license or permission for the use of such
         proprietary rights by implementers or users of this OASIS
         Committee Specification or OASIS Standard, can be
         obtained from the OASIS TC Administrator. OASIS makes no
         representation that any information or list of
         intellectual property rights will at any time be
         complete, or that any claims in such list are, in fact,
         Essential Claims.</para>

         <para>The name "OASIS" is a trademark of <ulink
         url="http://www.oasis-open.org">OASIS</ulink>, the owner
         and developer of this specification, and should be used
         only to refer to the organization and its official
         outputs. OASIS welcomes reference to, and implementation
         and use of, specifications, while reserving the right to
         enforce its marks against misleading uses. Please see
         <ulink
         url="http://www.oasis-open.org/who/trademark.php">
         <literal>http://www.oasis-open.org/who/trademark.php</literal>
         </ulink>
         for above guidance.</para>

    </legalnotice>
	</articleinfo>

	<section id="section-1">
		<title>Introduction</title>
		<para id="para-1.3.2">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 "plug-and-play" 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 id="para-1.3.3">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 id="para-1.3.4">The UBL effort addresses this problem by building on the work of the
			electronic business XML (ebXML) initiative. 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.</para>
		<para id="para-1.3.5">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 Technical Committee. Consumers of the Naming and Design Rules
			Specification should consult previous UBL position papers that are available at <ulink
				url="http://www.oasis-open.org/committees/ubl/ndrsc/"/>. These provide a useful
			background to the development of the current rule set.</para>
		<formalpara>
			<title>Audiences</title>
			<para id="para-1.3.6.2">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
				uses the rules in this document to create normative form schemas for business
				transactions. 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>
		</formalpara>
		<formalpara>
			<title>Scope</title>
			<para id="para-1.3.7.2">This specification conveys a normative set of XML schema design
				rules and naming conventions for the creation of UBL schemas for business documents
				being exchanged between two parties using XML constructs defined in accordance with
				the ebXML Core Components Technical Specification.</para>
		</formalpara>
		<formalpara>
			<title>Guiding Principles</title>
			<para id="para-1.3.9.3.1.1">The UBL NDR primary objectives are to provide the UBL TC
				with a set of unambiguous, consistent rules for the development of extensible,
				reusable UBL schemas.</para>
		</formalpara>
		<section id="section-1.3">
			<title>Terminology and Notation</title>
			<para id="para-1.3.8.2">The key words MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT,
				SHOULD, SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL 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 id="glosslist-1.3.1">
				<glossentry>
					<glossterm>Definition</glossterm>
					<glossdef>
						<para id="para-1.3.8.3.1.2.1">A formal definition of a term. Definitions are
							normative.</para>
					</glossdef>
				</glossentry>
				<glossentry>
					<glossterm>Example</glossterm>
					<glossdef>
						<para id="para-1.3.8.3.2.2.1">An example of a definition or a rule. Examples
							are informative.</para>
					</glossdef>
				</glossentry>
				<glossentry>
					<glossterm>Note</glossterm>
					<glossdef>
						<para id="para-1.3.8.3.3.2.1">Explanatory information. Notes are
							informative.</para>
					</glossdef>
				</glossentry>
				<glossentry>
					<glossterm>RRR<emphasis role="italics">n</emphasis></glossterm>
					<glossdef>
						<para id="para-1.3.8.3.4.2.1">Identifier of a rule to which an XML schema
							must comply in order to be UBL conformant. The value RRR is a prefix to
							categorize the type of rule where the value of RRR is as defined in
								<xref linkend="table-1.3.1"/>, and n (1..n) is the sequential number
							of the rule within its category. 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 &#x2014; regardless of location in the text. Only rules and
							definitions are normative; all other text is explanatory.</para>
					</glossdef>
				</glossentry>
			</glosslist>
			<table id="table-1.3.1">
				<title>Rule Prefix Value</title>
				<tgroup cols="2">
					<colspec colwidth="20*" colname="col1"/>
					<colspec colwidth="30*" colname="col2"/>
					<tbody>
						<row>
							<entry>
								<para id="para-1.3.8.4.2.3.1.1.1">Rule Prefix</para>
							</entry>
							<entry>
								<para id="para-1.3.8.4.2.3.1.2.1">Value</para>
							</entry>
						</row>
						<row>
							<entry>
								<para id="para-1.3.8.4.2.3.2.1.1">ATD</para>
							</entry>
							<entry>
								<para id="para-1.3.8.4.2.3.2.2.1">Attribute Declaration</para>
							</entry>
						</row>
						<row>
							<entry>
								<para id="para-1.3.8.4.2.3.3.1.1">CDL</para>
							</entry>
							<entry>
								<para id="para-1.3.8.4.2.3.3.2.1">Code List</para>
							</entry>
						</row>
						<row>
							<entry>
								<para id="para-1.3.8.4.2.3.4.1.1">CTD</para>
							</entry>
							<entry>
								<para id="para-1.3.8.4.2.3.4.2.1">ComplexType Definition</para>
							</entry>
						</row>
						<row>
							<entry>
								<para id="para-1.3.8.4.2.3.5.1.1">CTN</para>
							</entry>
							<entry>
								<para id="para-1.3.8.4.2.3.5.2.1">ComplexType Naming Rules</para>
							</entry>
						</row>
						<row>
							<entry>
								<para id="para-1.3.8.4.2.3.6.1.1">DOC</para>
							</entry>
							<entry>
								<para id="para-1.3.8.4.2.3.6.2.1">Documentation</para>
							</entry>
						</row>
						<row>
							<entry>
								<para id="para-1.3.8.4.2.3.7.1.1">ELD</para>
							</entry>
							<entry>
								<para id="para-1.3.8.4.2.3.7.2.1">Element Declaration</para>
							</entry>
						</row>
						<row>
							<entry>
								<para id="para-1.3.8.4.2.3.8.1.1">ELN</para>
							</entry>
							<entry>
								<para id="para-1.3.8.4.2.3.8.2.1">Element Naming</para>
							</entry>
						</row>
						<row>
							<entry>
								<para id="para-1.3.8.4.2.3.9.1.1">GNR</para>
							</entry>
							<entry>
								<para id="para-1.3.8.4.2.3.9.2.1">General Naming</para>
							</entry>
						</row>
						<row>
							<entry>
								<para id="para-1.3.8.4.2.3.10.1.1">GTD</para>
							</entry>
							<entry>
								<para id="para-1.3.8.4.2.3.10.2.1">General Type Definition</para>
							</entry>
						</row>
						<row>
							<entry>
								<para id="para-1.3.8.4.2.3.11.1.1">GXS</para>
							</entry>
							<entry>
								<para id="para-1.3.8.4.2.3.11.2.1">General XML Schema</para>
							</entry>
						</row>
						<row>
							<entry>
								<para id="para-1.3.8.4.2.3.12.1.1">IND</para>
							</entry>
							<entry>
								<para id="para-1.3.8.4.2.3.12.2.1">Instance Document</para>
							</entry>
						</row>
						<row>
							<entry>
								<para id="para-1.3.8.4.2.3.13.1.1">MDC</para>
							</entry>
							<entry>
								<para id="para-1.3.8.4.2.3.13.2.1">Modeling Constraints</para>
							</entry>
						</row>
						<row>
							<entry>
								<para id="para-1.3.8.4.2.3.14.1.1">NMC</para>
							</entry>
							<entry>
								<para id="para-1.3.8.4.2.3.14.2.1">Naming Constraints</para>
							</entry>
						</row>
						<row>
							<entry>
								<para id="para-1.3.8.4.2.3.15.1.1">NMS</para>
							</entry>
							<entry>
								<para id="para-1.3.8.4.2.3.15.2.1">Namespace</para>
							</entry>
						</row>
						<row>
							<entry>
								<para id="para-1.3.8.4.2.3.16.1.1">RED</para>
							</entry>
							<entry>
								<para id="para-1.3.8.4.2.3.16.2.1">Root Element Declaration</para>
							</entry>
						</row>
						<row>
							<entry>
								<para id="para-1.3.8.4.2.3.17.1.1">SSM</para>
							</entry>
							<entry>
								<para id="para-1.3.8.4.2.3.17.2.1">Schema Structure
									Modularity</para>
							</entry>
						</row>
						<row>
							<entry>
								<para id="para-1.3.8.4.2.3.18.1.1">VER</para>
							</entry>
							<entry>
								<para id="para-1.3.8.4.2.3.18.2.1">Versioning</para>
							</entry>
						</row>
					</tbody>
				</tgroup>
			</table>
			<para id="para-1.3.8.6">The term "XSD" is used throughout this document to refer to
				Parts 1 and 2 of the W3C <emphasis role="italics">XML Schema Definition
					Language</emphasis> (XSD) Recommendation.</para>
		</section>
    <section>
      <title>Normative References</title>
      <para id="para-1.14.2">
        <emphasis role="bold">[CCTS]</emphasis> ISO 15000-5 ebXML Core Components Technical
        Specification.</para>
      <para id="para-1.14.3">
        <emphasis role="bold">[ISONaming]</emphasis> ISO/IEC 11179, Final committee draft, Parts
        1-6.</para>
      <para id="para-1.14.4"><emphasis role="bold">[RFC 2119]</emphasis> S. Bradner, Key words for
        use in RFCs to Indicate Requirement Levels, <ulink
          url="http://www.ietf.org/rfc/rfc2119.txt"/>, IETF RFC 2119, March 1997.</para>
      <para id="para-1.14.6">
        <emphasis role="bold">[XML]</emphasis> Extensible Markup Language (XML) 1.0 (Second
        Edition), W3C Recommendation, October 6, 2000.</para>
      <para id="para-1.14.7">
        <emphasis role="bold">[XSD]</emphasis> XML Schema, W3C Recommendations Parts 0, 1, and
        2, 2 May 2001.</para>
    </section>
    <section>
      <title>Non-normative References</title>
      <para id="para-1.14.4.1"><emphasis role="bold">[SchCust]</emphasis> Guidelines for the
        Customization of UBL v1.0 Schemas, <ulink
          url="http://docs.oasis-open.org/ubl/cd-UBL-1.0/doc/cm/wd-ubl-cmsc-cmguidelines-1.0.html"
        />, an informative annex to the UBL 1.0 Standard.</para>
    </section>
	</section>
	<section id="section-2">
		<title>Relationship to ebXML Core Components</title>
		<para id="para-1.4.2">UBL employs the methodology and model described in <emphasis
				role="italics">ISO TS 15000-5:2005 -- ebXML Core Components Technical Specification,
				Version 2.01 [CCTS]</emphasis> to build the UBL Component Library. CCTS defines a
			new paradigm in 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 various XML
			representations such as UBL.</para>
		<para id="para-1.4.3">Context-neutral and context-specific building blocks are the essence
			of the Core Components specification. The context-neutral components are called Core
			Components. A Core Component is defined in CCTS as "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". <link linkend="figure1"
				>Figure 1</link> illustrates the various pieces of the overall Core Components
			metamodel.</para>
		<para id="para-1.4.4">The context-specific components are called Business Information
			Entities (BIEs). A BIE is defined in CCTS as "a piece of business data or a group of
			pieces of business data with a unique Business Semantic definition". <link
				linkend="figure2">Figure 2</link> illustrates the various pieces of the overall BIE
			metamodel and its relationship to the Core Components metamodel. As shown here, there
			are different types of Core Components and BIEs, each of which has specific
			relationships to the other components and entities. The context-neutral Core Components
			establish the formal relationship between the various context-specific BIEs.</para>
		<figure id="figure1">
			<title>Core Components and Datatypes Metamodel</title>
			<graphic fileref="art-ndr/figure1.png" contentwidth="750"/>
		</figure>
		<figure id="figure2">
			<title>Business Information Entities Basic Definition Model</title>
			<graphic fileref="art-ndr/figure2.png" contentwidth="720"/>
		</figure>

		<section id="section-2.1">
			<title>Mapping Business Information Entities to XSD</title>
			<para id="para-1.4.8.2">UBL consists of a library of CCTS BIEs, each of which is mapped
				to an XSD construct (<link linkend="figure3">See Figure 3</link>).</para>
			<figure id="figure3">
				<title>UBL Document Metamodel</title>
				<graphic fileref="art-ndr/figure3.png" contentwidth="750"/>
			</figure>
			<para id="para-1.4.8.4">A BIE can be a CCTS Aggregate Business Information Entity
				(ABIE), a CCTS Basic Business Information Entity (BBIE), or a CCTS Association
				Business Information Entity (ASBIE). In understanding the logic of the UBL binding
				of BIEs to XSD expressions, it is important to understand the basic constructs of
				the BIEs and their relationships as shown in <link linkend="figure2">Figure
				2</link>. The ABIEs are treated as objects and are defined as xsd:complexTypes. The
				BBIEs are treated as properties of the ABIE and are found in the content model of
				the ABIE as a referenced xsd:element. The BBIEs are based on reusable CCTS Basic
				Business Information Entity Properties (BBIE Properties), which are defined as
				xsd:complexTypes.</para>
			<para id="para-1.4.8.5">A BBIE Property represents an intrinsic property of an ABIE.
				BBIE Properties are linked to a data type. UBL uses two kinds of data types
				&#x2014; unqualified datatypes, which are provided by the UN/CEFACT Unqualified
				Data Type (UDT) schema module, and Qualified Data Types, which are defined by
				UBL.</para>
			<para id="para-1.4.8.6">UBL's use of the UN/CEFACT UDT schema module is primarily
				confined to its importation. It must not be assumed that UBL's adoption of the UDT
				schema module extends to any of the UN/CEFACT rules relating to use of the
				UDT.</para>
			<para id="para-1.4.8.7">The CCTS Unqualified Data Types correspond to CCTS
				Representation Terms. The UBL Qualified Data Types are derived from CCTS Unqualified
				Data Types with restrictions to the allowed values or ranges of the corresponding
				CCTS Content Component or CCTS Supplementary Component (see CCTS for explanations of
				these terms).</para>
			<para id="para-1.4.8.8">CCTS defines an approved set of primary and secondary
				representation terms. However, these representation terms are simply naming
				conventions to identify the data type of an object, not actual constructs.</para>
			<para id="para-1.4.8.9">A CCTS data type defines the set of values that can be used for
				a particular Basic Core Component Property or Basic Business Information Entity
				Property data type. The CCTS data types can be either unqualified (no restrictions
				applied) or qualified through the application of restrictions. These data types form
				the basis for the various XSD simple and complex types defined in the UBL schemas.
				CCTS supports data types that are qualified, i.e., it enables users to define their
				own data types for their syntax-neutral constructs. Thus, CCTS data types allow UBL
				to identify restrictions for elements when restrictions to the corresponding CCTS
				Content Component or CCTS Supplementary Component are required.</para>
			<para id="para-1.4.8.10">There are two kinds of BIE Properties &#x2014; Basic and
				Association. A CCTS Association BIE Property (ASBIE Property) represents an
				extrinsic property &#x2014; in other words, an association from one ABIE
				instance to another ABIE instance. It is the ASBIE Property that expresses the
				relationship between ABIEs.</para>
			<para id="para-1.4.8.11">Due to their unique extrinsic association role, ASBIEs are not
				defined as xsd:complexTypes; rather, they are either declared as elements that are
				then bound to the xsd:complexType of the associated ABIE, or they are reclassified
				as ABIEs.</para>
			<para id="para-1.4.8.12">BBIEs define the intrinsic structure of an ABIE. These BBIEs
				are the "leaf" types in the system in that they contain no other BIEs.</para>
			<para id="para-1.4.8.13">A BBIE must have a CCTS Core Component Type. All CCTS Core
				Component Types are low-level types such as Identifiers and Dates. A CCTS Core
				Component Type describes these low-level types for use by CCTS Core Components, and
				(in parallel) a CCTS data type, corresponding to that CCTS Core Component Type,
				describes these low-level types for use by BBIEs. Every CCTS Core Component Type has
				a single CCTS Content Component and one or more CCTS Supplementary Components. A
				CCTS Content Component is of some Primitive Type. All CCTS Core Component Types and
				their corresponding content and supplementary components are predefined in
				CCTS.</para>

			<para id="para-1.4.8.14">UBL has developed an XSD schema module that declares each of
				the predefined CCTS Core Component Types as an xsd:complexType or xsd:simpleType and
				declares each CCTS Supplementary Component as an xsd:attribute or uses the
				predefined facets of the built-in XSD datatypes for those that are used as the base
				expression for an xsd:simpleType.</para>
		</section>
	</section>
	<section id="section-3">
		<title>General XML Constructs</title>
		<para id="para-1.5.2">This chapter defines UBL rules related to general XML constructs,
			including overall schema structure, naming and modeling constraints, reusability,
			namespaces, versioning, modularity, and documentation.</para>
		<section id="section-3.1">
			<title>Overall Schema Structure</title>
			<para id="para-1.5.4.2">A key aspect of developing standards is to ensure consistency in
				their implementation. Therefore, 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>
			<blockquote role="Rule" id="rule-GXS1">
				<para id="para-1.5.4.3.1">[<emphasis role="rule-prefix">GXS1</emphasis>] Except in
					the case of extension, where the "UBL Extensions" element is used, UBL schemas
					SHOULD conform to the following physical layout as applicable: See <link
						linkend="figure4">Figure 4</link>.</para>
			</blockquote>
			<figure id="figure4">
				<title>Physical layout</title>
				<graphic fileref="art-ndr/figure4.png" contentwidth="750"/>
			</figure>
			<para>As shown above, a UBL schema should contain a comment block at the top of the
				schema that functions as a "schema header".</para>
			<section id="section-3.1.1">
				<title>Element Declarations within Document Schemas</title>
				<para id="para-1.5.4.4.2.1.2.1">A document schema is a 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 include
					(xsd:include) internal schema modules or import (xsd:import) external schema
					modules. Each namespace will have one, and only one, major version of a document
					schema as well as any related minor versions.</para>
				<para id="para-1.5.4.4.2.1.2.2">In order to facilitate the management and reuse of
					UBL constructs, all global elements, excluding the root element of the document
					schema, must be declared in either the Common Aggregate Components (CAC) or
					Common Basic Components (CBC) schema modules and referenced from within the
					document schema.</para>
			</section>

			<section id="section-3.1.2">
				<title>Root Element</title>
				<para id="para-1.5.4.4.3.2">Only a single global element is declared inside a UBL
					document schema. The single global element is the root element of every
					conforming instance.</para>
				<blockquote role="Rule" id="rule-RED2">
					<para id="para-1.5.4.4.3.3.1">[<emphasis role="rule-prefix">RED2</emphasis>] The
						root element MUST be the only global element declared in the document
						schema.</para>
				</blockquote>
			</section>
		</section>
		<section id="section-3.2">
			<title>Naming and Modeling Constraints</title>
			<para id="para-1.5.5.2">UBL has the following naming and modeling constraints.</para>
			<section id="section-3.2.1">
				<title>Naming Constraints</title>
				<para id="para-1.5.5.3.2">A primary aspect of the UBL library documentation is its
					spreadsheet models. The entries in these spreadsheet models fully define the
					constructs available for use in UBL business documents. The spreadsheet entries
					contain fully conformant CCTS Dictionary Entry Names (DENs) as well as truncated
					UBL XML element names developed in conformance with the rules in Section 4. The
					XML element name is the short form of the DEN. The rules for element naming
					differ from the rules for DEN naming.</para>
				<blockquote role="Rule" id="rule-NMC1">
					<para id="para-1.5.5.3.3.1">[<emphasis role="rule-prefix">NMC1</emphasis>] Each
						Dictionary Entry Name MUST define one and only one fully qualified path
						(FQP) for an element or attribute.</para>
				</blockquote>
				<para id="para-1.5.5.3.4">The FQP anchors the use of the element or attribute to a
					particular location in a business message. Any semantic dependencies that the
					element or attribute has on other elements and attributes within the UBL library
					that are not otherwise enforced or made explicit in its structural definition
					can be found in its prose definition.</para>

				<section id="section-3.2.2">
					<title>Modeling Constraints</title>
					<para id="para-1.5.5.4.2">Modeling constraints are limited to those necessary to
						ensure consistency in development of the UBL library.</para>
					<section id="section-3.2.2.1">
						<title>Defining Classes</title>
						<para id="para-1.5.5.4.3.2">UBL is based on instantiating ebXML CCTS BIEs.
							UBL models and the XML expressions of those models are class driven.
							Specifically, the UBL library defines classes for each CCTS ABIE and the
							UBL schemas instantiate those classes. The properties of those classes
							consist of CCTS BBIEs and ASBIEs.</para>
					</section>
					<section id="section-3.2.2.2">
						<title>Core Component Types</title>
						<para id="para-1.5.5.4.4.2">Each BBIE is associated with one of an approved
							set of CCTS Core Component Types.</para>
						<blockquote role="Rule" id="rule-MDC1">
							<para id="para-1.5.5.4.4.3.1">[<emphasis role="rule-prefix"
									>MDC1</emphasis>] UBL libraries and schemas MUST only use CCTS
								Core Component Types, except in the case of extension, where the
								UBLExtensions element is used.</para>
						</blockquote>
					</section>
					<section id="section-3.2.2.3">
						<title>XML Mixed Content</title>
						<para id="para-1.5.5.4.5.2">UBL documents are designed to effect
							data-centric electronic commerce transactions. Including XML mixed
							content in business documents is undesirable because business
							transactions are based on exchange of discrete pieces of data. The white
							space aspects of XML mixed content make processing unnecessarily
							difficult and add a layer of complexity not desirable in business
							exchanges.</para>
						<blockquote role="Rule" id="rule-MDC2">
							<para id="para-1.5.5.4.5.3.1">[<emphasis role="rule-prefix"
									>MDC2</emphasis>] XML mixed content MUST NOT be used except
								where contained in an xsd:documentation element.</para>
						</blockquote>
					</section>
					<section id="section-3.2.2.4">
						<title>Sequencing</title>
						<para>In the UBL model, the prescribed order for the contents of an ABIE is
							that ASBIEs follow BBIEs. However, this is, strictly speaking, a rule of
							the modeling methodology rather than an NDR. The NDR in this case is
							that the sequential order of entities in the model must be
							preserved.</para>
						<blockquote role="Rule" id="rule-MDC3">
							<para id="para-1.5.5.4.5.3.2">[<emphasis role="rule-prefix"
									>MDC0</emphasis>] The sequence of the business information
								entities that is expressed in the UBL model MUST be preserved in the
								schema.</para>
						</blockquote>
					</section>
				</section>
			</section>
		</section>
		<section id="section-3.3">
			<title>Reusability Scheme</title>

			<para id="para-1.5.6.2">To promote effective management of the UBL library, all element
				declarations are unique. Consequently, UBL elements are declared globally.</para>
			<section id="section-3.3.1">
				<title>Reusable Elements</title>
				<para id="para-1.5.6.3.2">UBL elements are global and qualified. Hence in the
					example below, the Address element is directly reusable as a modular
					component.</para>
				<example id="example-3.3.1.1">
					<title/>
					<programlisting>&lt;xsd:element name="Party" type="PartyType"/&gt;
  &lt;xsd:complexType name="PartyType"&gt;
    &lt;xsd:annotation&gt;
      &lt;!-- Documentation goes here --&gt;
    &lt;/xsd:annotation&gt;
    &lt;xsd:sequence&gt;
      &lt;xsd:element ref="cbc:MarkCareIndicator" minOccurs="0" maxOccurs="1"&gt;
          ...
      &lt;/xsd:element&gt;
      &lt;xsd:element ref="cbc:MarkAttentionIndicator" minOccurs="0" maxOccurs="1"&gt;
          ...
      &lt;/xsd:element&gt;
      &lt;xsd:element ref="PartyIdentification" minOccurs="0" maxOccurs="unbounded"&gt;
          ...
      &lt;/xsd:element&gt;
      &lt;xsd:element ref="PartyName" minOccurs="0" maxOccurs="1"&gt;
          ...
      &lt;/xsd:element&gt;
      &lt;xsd:element ref="Address" minOccurs="0" maxOccurs="1"&gt;
          ...
      &lt;/xsd:element&gt;
          ...
    &lt;/xsd:sequence&gt;
  &lt;/xsd:complexType&gt;

  &lt;xsd:element name="Address" type="AddressType"/&gt;

  &lt;xsd:complexType name="AddressType"&gt;
      ...
    &lt;xsd:sequence&gt;
      &lt;xsd:element ref="cbc:CityName" minOccurs="0" maxOccurs="1"&gt;
          ...
      &lt;/xsd:element&gt;
      &lt;xsd:element ref="cbc:PostalZone" minOccurs="0" maxOccurs="1"&gt;
          ...
      &lt;/xsd:element&gt;
          ...
    &lt;/xsd:sequence&gt;
  &lt;/xsd:complexType&gt;</programlisting>
				</example>
				<para id="para-1.5.6.3.4">Software written to work with UBL's standard library
					should 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 their placement within a particular type.</para>
				<blockquote role="Rule" id="rule-ELD2">
					<para id="para-1.5.6.3.5.1">[<emphasis role="rule-prefix">ELD2</emphasis>] All
						element declarations MUST be global.</para>
				</blockquote>
			</section>
		</section>
		<section id="section-3.4">
			<title>Extension Scheme</title>
			<para id="para-1.5.7.2">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 id="para-1.5.7.3">In general, UBL restricts the use of xsd:any because this
				feature permits the introduction of unknown elements into an XML instance. However,
				limiting its use to a single, predefined element mitigates this risk. For meaningful
				validation of UBL document instances, the value of the xsd:processContents attribute
				of the element must be set to "skip", thereby removing the potential for errors in
				the validation layer. Extension imposes cardinality constraints.</para>

			<para id="para-1.5.7.5">The following rules apply in the order below.</para>
			<blockquote role="Rule" id="rule-ELD12">
				<para id="para-1.5.7.6.1">[<emphasis role="rule-prefix">ELD12</emphasis>] The UBL
					Extensions element MUST be declared as the first child of the document element
					with xsd:minOccurs="0".</para>
			</blockquote>
			<blockquote role="Rule" id="rule-ELD13">
				<para id="para-1.5.7.7.1">[<emphasis role="rule-prefix">ELD13</emphasis>] The
					UBLProfileID element MUST be declared immediately following the UBL Extensions
					element with xsd:minOccurs="0".</para>
			</blockquote>
			<blockquote role="Rule" id="rule-ELD14">
				<para id="para-1.5.7.8.1">[<emphasis role="rule-prefix">ELD14</emphasis>] The
					UBLSubsetID element MUST be declared immediately following the UBLProfileID
					element with xsd:minOccurs="0".</para>
			</blockquote>
		</section>
		<section id="section-3.5">
			<title>Namespace Scheme</title>
			<para id="para-1.5.8.2">The concept of XML namespaces is defined in the W3C XML
				namespaces technical specification. 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 "shorthand identifier" that allows for compression of the
				namespace name. For each UBL namespace, a normative token is defined as its prefix.
				These tokens (currently udt, qdt, cac, cbc, ext) are defined in Section 3.7.</para>
			<section id="section-3.5.1">

				<title>Declaring Namespaces</title>
				<para id="para-1.5.8.3.2">Neither XML 1.0 nor XSD requires the use of namespaces.
					However, the use of namespaces is essential to managing the complex UBL library.
					UBL uses UBL-defined schemas (created by the UBL TC) and UBL-used schemas
					(created by external activities), and both require a consistent approach to
					namespace declarations.</para>
				<blockquote role="Rule" id="rule-NMS1">
					<para id="para-1.5.8.3.3.1">[<emphasis role="rule-prefix">NMS1</emphasis>] Every
						UBL-defined or -used schema module, except internal schema modules, MUST
						declare a namespace using the xsd:targetNamespace attribute.</para>
				</blockquote>
				<para id="para-1.5.8.3.4">Each UBL schema module consists of a logical grouping of
					lower level artefacts that can 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 are to be created. The schema set is the versioned entity; all schema
					modules within that package are of the same version, and each major version has
					a unique namespace.</para>
				<glosslist id="glosslist-3.5.1.1">
					<glossentry>
						<glossterm>Schema set</glossterm>
						<glossdef>
							<para id="para-1.5.8.3.5.1.2.1">A collection of schemas that constitute
								a specific UBL namespace.</para>
						</glossdef>
					</glossentry>
				</glosslist>
				<para id="para-1.5.8.3.5.1.2.2">Schema validation ensures that an instance conforms
					to its declared schema. In keeping with Rule NMS1, each UBL schema module is
					part of a versioned namespace.</para>
				<blockquote role="Rule" id="rule-NMS2">
					<para id="para-1.5.8.3.6.1">[<emphasis role="rule-prefix">NMS2</emphasis>] Every
						UBL-defined or -used major version schema set MUST have its own unique
						namespace.</para>
				</blockquote>
				<para id="para-1.5.8.3.7">UBL's extension methodology encourages a wide variety in
					the number of schema modules that are created as derivations from UBL schema
					modules. Customized schemas should not be confused with those developed by
					UBL.</para>
				<blockquote role="Rule" id="rule-NMS3">
					<para id="para-1.5.8.3.8.1">[<emphasis role="rule-prefix">NMS3</emphasis>] UBL
						namespaces MUST only contain UBL developed schema modules.</para>
				</blockquote>
			</section>
			<section id="section-3.5.2">
				<title>Namespace Uniform Resource Identifiers</title>
				<para id="para-1.5.8.4.2">A UBL namespace name must be a URI that conforms to RFC
					2396. UBL<emphasis role="italics"/> has adopted the Uniform Resource Name (URN)
					scheme as the standard for URIs for UBL namespaces, in conformance with IETF's
					RFC 3121.</para>
				<para id="para-1.5.8.4.3">Rule NMS2 requires separate namespaces for each UBL major
					version schema set. In accordance with OASIS procedures, 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>

				<blockquote role="Rule" id="rule-NMS4">
					<para id="para-1.5.8.4.4.1">[<emphasis role="rule-prefix">NMS4</emphasis>] The
						namespace names for UBL schemas holding committee draft status MUST be of
						the form</para>

					<para id="para-1.5.8.4.5"
						>urn:oasis:names:tc:ubl:schema:&lt;subtype&gt;:&lt;document-id&gt;</para>
				</blockquote>

				<para id="para-1.5.8.4.6">The format for document-id is found in Section 3.6.</para>
				<para id="para-1.5.8.4.7">For each UBL schema holding OASIS Committee Specification
					or Standard status, a UBL namespace must be declared and named using the same
					notation, but with the value "specification" replacing the value "tc".</para>
				<blockquote role="Rule" id="rule-NMS5">
					<para id="para-1.5.8.4.8.1">[<emphasis role="rule-prefix">NMS5</emphasis>] The
						namespace names for UBL schemas holding OASIS Standard status MUST be of the
						form</para>
					<para id="para-1.5.8.4.9"
						>urn:oasis:names:specification:ubl:schema:&lt;subtype&gt;:&lt;document-id&gt;</para>
				</blockquote>
			</section>
			<section id="section-3.5.3">
				<title>Schema Location</title>
				<para id="para-1.5.8.5.2">UBL schemas use a URN namespace scheme. In contrast,
					schema locations are defined as a Uniform Resource Locator (URL). UBL schemas
					must be available both at design time and run time. Therefore, the UBL schema
					locations will differ from the UBL namespace declarations. UBL uses an OASIS URL
					for hosting retrievable copies of UBL schemas.</para>
			</section>
			<section id="section-3.5.4">
				<title>Persistence</title>
				<para id="para-1.5.8.6.2">UBL namespaces use URNs to provide name persistence. UBL
					namespaces must never change once they have 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>
				<blockquote role="Rule" id="rule-NMS6">
					<para id="para-1.5.8.6.3.1">[<emphasis role="rule-prefix">NMS6</emphasis>] UBL
						published namespaces MUST never be changed.</para>
				</blockquote>
			</section>
		</section>
		<section id="section-3.6">
			<title>Versioning Scheme</title>
			<para id="para-1.5.9.2">UBL distinguishes between major versions and minor versions.
				Major versions are not backwards compatible. Minor versions do not break backwards
				compatibility. In other words, a document instance that validates against version 1
				of the schema must also validate against version 1.1 of the schema, where version
				1.1 is a minor version change based on version 1. However, the same document
				instances would not necessarily be valid against version 2 of the schema, where
				version 2 is a major version change.</para>
			<para>Versioning information is indicated both in the namespace URI and in the version
				attribute of the schema module. However, this information is represented somewhat
				differently in these two locations.</para>

			<section id="section-3.6.1">
				<title>Versioning Information in the Namespace URI</title>
				<para id="para-1.5.9.3">UBL namespaces conform to the OASIS namespace rules defined
					in RFC 3121. All UBL namespace URIs have the form:
					<programlisting>urn:oasis:names:specification:ubl:schema:xsd:&lt;modulename&gt;-&lt;major&gt;</programlisting>where
					&lt;modulename&gt; is the name of the schema module and
					&lt;major&gt; is a positive integer representing the major version. The
					field containing &lt;modulename&gt;-&lt;major&gt; is called the
						<emphasis role="italics">document-id</emphasis>.</para>
				<blockquote role="Rule" id="rule-VER2">
					<para id="para-1.5.9.11.1">[<emphasis role="rule-prefix">VER2</emphasis>] Every
						UBL schema module major version MUST have an RFC 3121 document-id of the
						form <emphasis role="rule-prefix"
							>&lt;modulename&gt;-&lt;major&gt;</emphasis>
					</para>
				</blockquote>
				<blockquote role="Rule" id="rule-VER6">
					<para id="para-1.5.9.33.1">[<emphasis role="rule-prefix">VER6</emphasis>] Every
						UBL schema module major version number MUST be a sequentially assigned
						integer greater than zero.</para>
				</blockquote>
				<para>The value of &lt;major&gt; is "1" for the first release of a
					namespace. For example, the namespace URI for the first major release of the
					Invoice domain has the form:
					<programlisting>urn:oasis:names:specification:ubl:schema:xsd:Invoice-1</programlisting>
				</para>

				<para id="para-1.5.9.5">Subsequent major releases increment the value by 1. For
					example, the second major release of the Invoice domain has the URI</para>

				<programlisting>urn:oasis:names:specification:ubl:schema:xsd:Invoice-2</programlisting>

				<para id="para-1.5.9.6">The rule for minor version releases is as follows:
						<blockquote role="Rule" id="rule-VER4">
						<para id="para-1.5.9.21.1">[<emphasis role="rule-prefix">VER4</emphasis>]
							Every minor version release of a UBL schema module MUST have a
							document-id of the form <emphasis role="rule-prefix"
								>&lt;modulename&gt;-&lt;major&gt;</emphasis></para>
					</blockquote>For example, the fifth minor version of the release based on the
					second major release mentioned above will have the URI
					<programlisting>urn:oasis:names:specification:ubl:schema:xsd:Invoice-2</programlisting>As
					can be seen, both the rule and the example for the minor version releases is
					exactly the same as that for the major version. There is even a rule stating
					this directly. <blockquote role="Rule" id="rule-VER5">
						<para id="para-1.5.9.26.1">[<emphasis role="rule-prefix">VER5</emphasis>]
							For UBL minor version changes, the namespace name MUST not
							change.</para>
					</blockquote>However, minor versioning is handled differently in the xsd:schema
					element.</para>
			</section>
			<section id="section-3.6.2">
				<title>Versioning representation in the xsd:schema element</title>
				<para>UBL uses the version attribute in the xsd:schema element to convey minor
					version releases of the schema module.</para>
				<blockquote role="Rule" id="rule-VER12">
					<para id="para-1.5.9.15.1">[<emphasis role="rule-prefix">VER12</emphasis>] Every
						major version release of a UBL schema module MUST capture its version number
						in the xsd:version attribute of the xsd:schema element in the form <emphasis
							role="rule-prefix">&lt;major&gt;.0</emphasis></para>
				</blockquote>
				<blockquote role="Rule" id="rule-VER14">
					<para id="para-1.5.9.23.1">[<emphasis role="rule-prefix">VER14</emphasis>] Every
						minor version release of a UBL schema module MUST capture its version
						information in the xsd:version attribute in the form <emphasis
							role="rule-prefix"
							>&lt;major&gt;.&lt;non-zero&gt;</emphasis></para>
				</blockquote>


				<blockquote role="Rule" id="rule-VER7">
					<para id="para-1.5.9.34.1">[<emphasis role="rule-prefix">VER7</emphasis>] Every
						UBL schema module minor version number MUST be a sequentially assigned,
						non-negative integer.</para>
				</blockquote>
			</section>
			<section id="section-3.6.3">
				<title>Instance Versioning</title>
				<para id="para-1.5.9.35">UBL version information can also be captured in instances
					of UBL document schemas via the ubl:UBLVersionID element.</para>
				<blockquote role="Rule" id="rule-VER15">
					<para id="para-1.5.9.36.1">[<emphasis role="rule-prefix">VER15</emphasis>] Every
						UBL document schema MUST declare an optional element named UBLVersionID
						immediately following the optional UBL Extensions element.</para>
				</blockquote>
			</section>
		</section>
		<section id="section-3.7">
			<title>Modularity Strategy</title>
			<para id="para-1.5.10.2">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 schemas into multiple
				schema modules provides a mechanism whereby reusable components can be imported as
				needed without the need to import complete schemas.</para>
			<blockquote role="Rule" id="rule-SSM1">
				<para id="para-1.5.10.3.1">[<emphasis role="rule-prefix">SSM1</emphasis>] UBL schema
					expressions MAY be split into multiple schema modules.</para>
			</blockquote>
			<glosslist id="glosslist-3.7.1">
				<glossentry>
					<glossterm>Schema module</glossterm>
					<glossdef>
						<para id="para-1.5.10.4.1.2.1">A schema document containing type definitions
							and element declarations intended to be reused in multiple
							schemas.</para>
					</glossdef>
				</glossentry>
			</glosslist>
			<section id="section-3.7.1">
				<title>UBL Modularity Model</title>
				<para id="para-1.5.10.5.2">UBL relies extensively on modularity in schema design.
					There is no single UBL root schema. Rather, there are a number of UBL document
					schemas used to perform different business functions. UBL is structured so that
					users can reuse individual document schemas without having to import the entire
					UBL document schema library. A document schema can import individual modules
					without having to import all UBL schema modules. Each document schema defines
					its own dependencies. The UBL schema modularity approach reflects logical
					associations that exist between document and internal schema modules,and it
					ensures that individual modules can be reused to the maximum extent possible. If
					the contents of a namespace are small enough then they can be completely
					specified within a single document. Document and internal schema modules are
					shown in <link linkend="figure5">Figure 5</link>.</para>

				<figure id="figure5">
					<title>UBL Schema Modularity Model</title>
					<graphic fileref="art-ndr/figure5.png" contentwidth="720px"/>
				</figure>
				<para id="para-1.5.10.5.5"/>
				<para>
					<link linkend="figure5">Figure 5</link> 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 here, there are two
					types of schemas in the UBL library &#x2014; document schemas and schema
					modules. Both types of schemas are conformant with XSD.</para>

				<para>Each document schema occupies its own namespace and may include zero or more
					internal modules. The namespace for a document schema includes any of its
					internal modules. Schema modules that are not internal to a document occupy a
					different namespace, as in the qdt, cbc, and cac schema modules.</para>
				<figure id="figure6">
					<title>Schema Modules</title>
					<graphic fileref="art-ndr/figure6.png" contentwidth="750"/>
				</figure>
				<para id="para-1.5.10.5.10">Another way to visualize the structure is by example.
						<link linkend="figure6">Figure 6</link> depicts instances of the various
					schema modules from the previous diagram.</para>
				<para id="para-1.5.10.5.11">
					<link linkend="figure7">Figure 7</link> shows how the Order and Invoice document
					schemas import the CommonAggregateComponents and CommonBasicComponents external
					schema modules. It also shows how the Order document schema may include internal
					schema modules &#x2014; modules local to that namespace. The clear boxes
					show how the various schema modules are grouped into namespaces.</para>
				<para id="para-1.5.10.5.12">Any UBL schema module, be it a document schema or an
					internal module, may import other document schemas from other namespaces.</para>
				<figure id="figure7">
					<title>Order and Invoice Schema Import of Common Component Schema
						Modules</title>
					<graphic fileref="art-ndr/figure7.png" contentwidth="800"/>
				</figure>

				<para id="para-1.5.10.5.14.2">If two namespaces are mutually dependent, then
					importing one will cause the other to be imported as well. For this reason there
						<emphasis role="italics">must not</emphasis> exist circular dependencies
					between UBL schema modules. By extension, there <emphasis role="italics">must
						not</emphasis>exist circular dependencies between namespaces. A namespace A
					dependent upon type definitions or element declarations defined in another
					namespace B must import B's document schema.</para>
				<blockquote role="Rule" id="rule-SSM2">
					<para id="para-1.5.10.5.14.3.1">[<emphasis role="rule-prefix">SSM2</emphasis>] A
						schema in one UBL namespace that is dependent upon type definitions or
						element declarations in another schema namespace MUST only import that
						schema.</para>

				</blockquote>
				<para id="para-1.5.10.5.14.4">An additional rule is necessary to address potentially
					circular dependencies as well &#x2014; schema A must not import internal
					schema modules of schema B.</para>
				<blockquote role="Rule" id="rule-SSM3">
					<para id="para-1.5.10.5.14.5.1">[<emphasis role="rule-prefix">SSM3</emphasis>] A
						schema in one UBL namespace that is dependent upon type definitions or
						element declarations defined in another schema namespace MUST NOT import the
						internal schema modules of that schema.</para>

				</blockquote>

			</section>
			<section id="section-3.7.2">
				<title>Internal and External Schema Modules</title>
				<para id="para-1.5.10.6.2">As illustrated in figures <link linkend="figure5"
						>5</link> and <link linkend="figure6">6</link>, UBL schema modules are
					either internal or external.</para>
			</section>
			<section id="section-3.7.3">
				<title>Internal Schema Modules</title>
				<para id="para-1.5.10.7.2">UBL internal schema modules do not declare a target
					namespace, but instead reside in the namespace of their parent schema. All
					internal schema modules are accessed using xsd:include.</para>
				<blockquote role="Rule" id="rule-SSM6">
					<para id="para-1.5.10.7.3.1">[<emphasis role="rule-prefix">SSM6</emphasis>] All
						UBL internal schema modules MUST be in the same namespace as their
						corresponding document schema.</para>
				</blockquote>
				<para id="para-1.5.10.7.4">UBL internal schema modules must have semantically
					meaningful names. Internal schema module names identify the parent schema
					module, the internal schema module function, and the schema module
					itself.</para>
				<blockquote role="Rule" id="rule-SSM7">
					<para id="para-1.5.10.7.5.1">[<emphasis role="rule-prefix">SSM7</emphasis>] Each
						UBL internal schema module MUST be named
						&lt;ParentSchemaModuleName&gt;&lt;InternalSchemaModuleFunction&gt; </para>

				</blockquote>
				<programlisting>Example: ExtensionContentDatatype</programlisting>
			</section>
			<section id="section-3.7.4">
				<title>External Schema Modules</title>
				<para id="para-1.5.10.8.2">External schema modules are used to group complex types
					and global elements that are used in multiple document schemas.</para>
				<blockquote role="Rule" id="rule-SSM8">
					<para id="para-1.5.10.8.3.1">[<emphasis role="rule-prefix">SSM8</emphasis>] UBL
						schema modules MAY be created for reusable components.</para>
				</blockquote>
				<para id="para-1.5.10.8.4">UBL external schema modules organize the reusable
					components into logical groupings. At a minimum, UBL defines the following
					external schema modules:</para>
				<orderedlist spacing="compact">
					<listitem>
						<para id="para-1.5.10.8.5.1.1">UBL CommonAggregateComponents</para>
					</listitem>
					<listitem>
						<para id="para-1.5.10.8.5.2.1">UBL CommonBasicComponents</para>
					</listitem>
					<listitem>
						<para id="para-1.5.10.8.5.3.1">UBL Qualified Datatypes</para>
					</listitem>
				</orderedlist>
				<para id="para-1.5.10.8.6">In addition, UBL 2.0 uses the following schema modules
					provided by UN/CEFACT.</para>
				<orderedlist spacing="compact">
					<listitem>
						<para id="para-1.5.10.8.7.1.1">CCTS Core Component Types</para>
					</listitem>
					<listitem>
						<para id="para-1.5.10.8.7.2.1">CCTS Unqualified Datatypes</para>
					</listitem>
					<listitem>
						<para id="para-1.5.10.8.7.3.1">Multiple UN/CEFACT Code Lists</para>
					</listitem>
				</orderedlist>
				<para id="para-1.5.10.8.8">Furthermore, where extensions are used, an extension
					schema module must be provided. This schema module must be named:</para>
				<programlisting>CommonExtensionComponents</programlisting>
				<para id="para-1.5.10.8.10"/>
				<blockquote role="Rule" id="rule-SSM21">
					<para id="para-1.5.10.8.11.1">[<emphasis role="rule-prefix">SSM21</emphasis>]
						The UBL extension schema module MUST be identified as
						CommonExtensionComponents in the document name within the schema
						header.</para>
				</blockquote>
				<para id="para-1.5.10.8.12">To ensure consistency in expressing the
					CommonExtensionComponents schema module, a namespace prefix that will be used in
					all UBL schemas must be defined.</para>
				<blockquote role="Rule" id="rule-NMS18">
					<para id="para-1.5.10.8.14.6.7.1">[<emphasis role="rule-prefix"
						>NMS18</emphasis>] The CommonExtensionComponents schema module namespace
						MUST be represented by the namespace prefix "ext" when referenced in other
						schemas.</para>
				</blockquote>
				<section id="section-3.7.4.1">
					<title>UBL Common Aggregate Components Schema Module</title>
					<para id="para-1.5.10.8.12.2">The UBL library contains a wide variety of CCTS
						ABIEs, each 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. For ease of reuse, all the ABIE xsd:complexType
						definitions used in more than one UBL schema module are grouped into a
						single schema module of their own.</para>
					<blockquote role="Rule" id="rule-SSM9">

						<para id="para-1.5.10.8.12.3.1">[<emphasis role="rule-prefix"
								>SSM9</emphasis>] A schema module defining all UBL Common Aggregate
							Components MUST be created.</para>
					</blockquote>

					<blockquote role="Rule" id="rule-SSM10">
						<para id="para-1.5.10.8.12.5.1">[<emphasis role="rule-prefix"
								>SSM10</emphasis>] The UBL Common Aggregate Components schema module
							MUST be identified as CommonAggregateComponents in the document name
							within the schema header.</para>
					</blockquote>

					<blockquote role="Rule" id="rule-NMS7">
						<para id="para-1.5.10.8.12.7.3.1">[<emphasis role="rule-prefix"
								>NMS7</emphasis>] The UBL Common Aggregate Components schema module
							MUST reside in its own namespace.</para>
					</blockquote>

					<blockquote role="Rule" id="rule-NMS8">
						<para id="para-1.5.10.8.12.7.5.1">[<emphasis role="rule-prefix"
								>NMS8</emphasis>] The UBL Common Aggregate Components schema module
							namespace MUST be represented by the namespace prefix "cac" when
							referenced in other schemas.</para>
					</blockquote>
				</section>
				<section id="section-3.7.4.2">
					<title>UBL CommonBasicComponents Schema Module</title>
					<para id="para-1.5.10.8.13.2">The UBL library contains a wide variety of CCTS
						BBIEs based on CCTS BBIE Properties. BBIE Properties are reusable in
						multiple BBIEs, and each 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. For ease of reuse, all the BBIE Property
						xsd:complexType definitions used in more than one UBL schema module are
						grouped into a single schema module of their own.</para>
					<blockquote role="Rule" id="rule-SSM11">
						<para id="para-1.5.10.8.13.3.1">[<emphasis role="rule-prefix"
								>SSM11</emphasis>] A schema module defining all UBL Common Basic
							Components MUST be created.</para>
					</blockquote>

					<blockquote role="Rule" id="rule-SSM12">
						<para id="para-1.5.10.8.13.5.1">[<emphasis role="rule-prefix"
								>SSM12</emphasis>] The UBL Common Basic Components schema module
							MUST be identified as CommonBasicComponents in the document name within
							the schema header.</para>
					</blockquote>

					<blockquote role="Rule" id="rule-NMS9">
						<para id="para-1.5.10.8.13.6.3.1">[<emphasis role="rule-prefix"
								>NMS9</emphasis>] The UBL Common Basic Components schema module MUST
							reside in its own namespace.</para>
					</blockquote>

					<blockquote role="Rule" id="rule-NMS10">
						<para id="para-1.5.10.8.13.6.5.1">[<emphasis role="rule-prefix"
								>NMS10</emphasis>] The UBL Common Basic Components schema module
							namespace MUST be represented by the namespace prefix "cbc" when
							referenced in other schemas.</para>
					</blockquote>
				</section>
				<section id="section-3.7.4.3">
					<title>CCTS CoreComponentType Schema Module</title>
					<para id="para-1.5.10.8.14.2">CCTS defines an authorized set of Core Component
						Types that convey content and supplementary information related to exchanged
						data. As the basis for all higher level CCTS models, these Core Component
						Types are reusable in every UBL schema. The complex type definitions for all
						CCTS Core Component Types are collected in the Core Component Type schema
						module published by UN/CEFACT.</para>
				</section>
				<section id="section-3.7.4.4">
					<title>CCTS Qualified and Unqualified Datatypes</title>
					<para>CCTS defines a set of primary and secondary Representation Terms that
						describe the form of every CCTS BIE. These Representation Terms are
						instantiated in the form of data types that are reusable in every UBL
						schema. Each CCTS Datatype defines the set of values that can be used for
						its associated CCTS BBIE Property. These datatypes may be unqualified or
						qualified, that is to say, unrestricted or restricted. We refer to these two
						categories as CCTS Unqualified Datatypes and UBL Qualified Datatypes.</para>
					<section id="section-3.7.4.4.1">
						<title>CCTS Unqualified Datatypes Schema Module</title>


						<para id="para-1.5.10.8.14.4.2">UBL 2.0 uses the UN/CEFACT Unqualified Data
							Type schema module, including the code list schema modules that it
							imports. When the CCTS Unqualified Datatypes schema module is
							referenced, the "udt" namespace prefix must be used.</para>
						<blockquote role="Rule" id="rule-NMS17">
							<para id="para-1.5.10.8.14.4.3.1">[<emphasis role="rule-prefix"
									>NMS17</emphasis>] The CCTS Unqualified Datatypes schema module
								namespace MUST be represented by the prefix "udt" when referenced in
								other schemas.</para>
						</blockquote>
						<para>Note: It is the intention of the UBL TC to move the UN/CEFACT code
							lists out of the UDT module and into the set of other UBL code lists in
							versions of UBL following 2.0. See Section 6.</para>

					</section>
					<section id="section-3.7.4.4.2">
						<title>UBL Qualified Datatypes Schema Module</title>
						<para id="para-1.5.10.8.14.5.2">UBL Qualified Datatypes are defined by
							specifying restrictions on CCTS Unqualified Datatypes. All the UBL
							Qualified Datatype definitions are collected in a single schema module
							named QualifiedDatatypes that imports the CCTS UnqualifiedDatatypes
							module.</para>
						<blockquote role="Rule" id="rule-SSM18">
							<para id="para-1.5.10.8.14.5.3.1">[<emphasis role="rule-prefix"
									>SSM18</emphasis>] A schema module defining all UBL Qualified
								Datatypes MUST be created.</para>
						</blockquote>
						<blockquote role="Rule" id="rule-SSM19">
							<para id="para-1.5.10.8.14.5.7.1">[<emphasis role="rule-prefix"
									>SSM19</emphasis>] The UBL Qualified Datatypes schema module
								MUST be identified as QualifiedDatatypes in the document name in the
								schema header.</para>
						</blockquote>
						<blockquote role="Rule" id="rule-SSM20">
							<para id="para-1.5.10.8.14.5.5.1">[<emphasis role="rule-prefix"
									>SSM20</emphasis>] The UBL Qualified Datatypes schema module
								MUST import the CCTS Unqualified Datatypes schema module.</para>
						</blockquote>
						<blockquote role="Rule" id="rule-NMS15">
							<para id="para-1.5.10.8.14.6.3.1">[<emphasis role="rule-prefix"
									>NMS15</emphasis>] The UBL Qualified Datatypes schema module
								MUST reside in its own namespace.</para>
						</blockquote>
						<para id="para-1.5.10.8.14.6.4">To ensure consistency in expressing the UBL
							Qualified Datatypes schema module, a namespace prefix that will be used
							in all UBL schemas must be defined.</para>
						<blockquote role="Rule" id="rule-NMS16">
							<para id="para-1.5.10.8.14.6.5.1">[<emphasis role="rule-prefix"
									>NMS16</emphasis>] The UBL Qualified Datatypes schema module
								namespace MUST be represented by the namespace prefix "qdt" when
								referenced in other schemas.</para>
						</blockquote>
					</section>
				</section>
			</section>
		</section>
		<section id="section-3.8">
			<title>Annotation and Documentation Requirements</title>
			<para id="para-1.5.11.2">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.</para>
			<section id="section-3.8.1">
				<title>Schema Annotation</title>
				<para id="para-1.5.11.3.2">The annotation needed to satisfy CCTS requirements
					considerably increases the size of the UBL schemas, with undesirable performance
					impacts. To address this issue, a cut-down alternative has been developed for
					each UBL schema. A normative, fully annotated schema is provided to facilitate
					greater understanding of the schema module and its components and to meet the
					CCTS metadata requirements. A non-normative schema devoid of annotation is
					provided that can be used at run-time if required to meet processor resource
					constraints.</para>
				<blockquote role="Rule" id="rule-GXS2">
					<para id="para-1.5.11.3.3.1">[<emphasis role="rule-prefix">GXS2</emphasis>] UBL
						MUST provide two schemas for each transaction. One normative schema shall be
						fully annotated. One non-normative schema shall be a run-time schema devoid
						of documentation.</para>
				</blockquote>
			</section>
			<section id="section-3.8.2">
				<title>Embedded Documentation</title>
				<para id="para-1.5.11.4.2">UBL spreadsheets contain all necessary information to
					produce fully annotated schemas, including information about each UBL BBIE. UBL
					annotations consist of information currently required by Section 7 of the CCTS
					and supplemented by metadata from the UBL spreadsheet models.</para>
				<para id="para-1.5.11.4.3">The absence of an optional annotation from the structured
					set of annotations in a documentation element implies the use of the default
					value. For example, there are several annotations relating to context, such as
					CCTS Business Context and CCTS Industry Context; their absence implies that
					their value is "all contexts".</para>
				<para id="para-1.5.11.4.4">The following rules describe the documentation
					requirements for each UBL Qualified Datatype and UBL Unqualified Datatype
					definition. None of these documentation rules apply in the case of extension
					where the UBL Extensions element is used.</para>
				<blockquote role="Rule" id="rule-DOC1">
					<para id="para-1.5.11.4.5.1">[<emphasis role="rule-prefix">DOC1</emphasis>] The
						xsd:documentation element for every data type MUST contain a set of
						annotations in the following order (as defined in CCTS Section 7):</para>
					<itemizedlist spacing="compact">
						<listitem>
							<para id="para-1.5.11.4.5.2.1.1">DictionaryEntryName (mandatory)</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.5.2.2.1">Version (mandatory)</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.5.2.3.1">Definition (mandatory)</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.5.2.4.1">RepresentationTerm (mandatory)</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.5.2.5.1">QualifierTerm(s) (mandatory, where
								used)</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.5.2.6.1">UniqueIdentifier (mandatory)</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.5.2.7.1">Usage Rule(s) (optional)</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.5.2.8.1">Content Component Restriction
								(optional)</para>
						</listitem>
					</itemizedlist>
				</blockquote>
				<blockquote role="Rule" id="rule-DOC2">
					<para id="para-1.5.11.4.6.1">[<emphasis role="rule-prefix">DOC2</emphasis>] 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 set of annotations in the following
						order:</para>
					<itemizedlist spacing="compact">
						<listitem>
							<para id="para-1.5.11.4.6.2.1.1">RestrictionType (mandatory): Defines
								the type of format restriction that applies to the Content
								Component.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.6.2.2.1">RestrictionValue (mandatory): The
								actual value of the format restriction that applies to the Content
								Component.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.6.2.3.1">ExpressionType (optional): Defines the
								type of the regular expression of the restriction value.</para>
						</listitem>
					</itemizedlist>
				</blockquote>
				<blockquote role="Rule" id="rule-DOC3">
					<para id="para-1.5.11.4.7.1">[<emphasis role="rule-prefix">DOC3</emphasis>] 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 set of annotations in
						the following order:</para>
					<itemizedlist spacing="compact">
						<listitem>
							<para id="para-1.5.11.4.7.2.1.1">SupplementaryComponentName (mandatory):
								Identifies the Supplementary Component to which the restriction
								applies.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.7.2.2.1">RestrictionValue (mandatory,
								repetitive): The actual value(s) that is (are) valid for the
								Supplementary Component.</para>
						</listitem>
					</itemizedlist>
				</blockquote>
				<para id="para-1.5.11.4.8">The following rule describes the documentation
					requirements for each Basic Business Information Entity definition.</para>
				<blockquote role="Rule" id="rule-DOC4">
					<para id="para-1.5.11.4.9.1">[<emphasis role="rule-prefix">DOC4</emphasis>] The
						xsd:documentation element for every BBIE MUST contain a set of annotations
						in the following order:</para>
					<itemizedlist spacing="compact">
						<listitem>
							<para id="para-1.5.11.4.9.2.1.1">ComponentType (mandatory): The type of
								component to which the object belongs. For BBIEs this MUST be
								"BBIE".</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.9.2.2.1">DictionaryEntryName (mandatory): The
								official name of a BBIE.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.9.2.3.1">Version (optional): An indication of
								the evolution over time of the BBIE Entity.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.9.2.4.1">Definition (mandatory): The meaning of
								a BBIE.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.9.2.5.1">Cardinality (mandatory): Indicates
								whether the BBIE represents a not-applicable, optional, mandatory,
								or repetitive characteristic of the Aggregate Business Information
								Entity to which it belongs.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.9.2.6.1">ObjectClassQualifier (optional): The
								qualifier for the Object Class.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.9.2.7.1">ObjectClass (mandatory): The Object
								Class containing the BBIE.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.9.2.8.1">PropertyTermQualifier (optional): A
								word or words which help define and differentiate a BBIE.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.9.2.9.1">PropertyTerm (mandatory): Conveys the
								characteristic or Property of the Object Class.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.9.2.10.1">RepresentationTerm (mandatory):
								Describes the form in which the BBIE is represented.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.9.2.11.1">DataTypeQualifier (optional): A
								meaningful name that differentiates the data type of the BBIE from
								its underlying Core Component Type.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.9.2.12.1">DataType (mandatory): Defines the data
								type used for the BBIE.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.9.2.13.1">AlternativeBusinessTerms (optional):
								Any synonymous terms under which the BBIE is commonly known and used
								in the business.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.9.2.14.1">Examples (optional): Examples of
								possible values for the BBIE.</para>
						</listitem>
					</itemizedlist>
				</blockquote>
				<para id="para-1.5.11.4.10">The following rule describes the documentation
					requirements for each CCTS Aggregate Business Information Entity
					definition.</para>
				<blockquote role="Rule" id="rule-DOC5">
					<para id="para-1.5.11.4.11.1">[<emphasis role="rule-prefix">DOC5</emphasis>] The
						xsd:documentation element for every ABIE MUST contain a set of annotations
						in the following order:</para>
					<itemizedlist spacing="compact">
						<listitem>
							<para id="para-1.5.11.4.11.2.1.1">ComponentType (mandatory): The type of
								component to which the object belongs. For ABIEs this MUST be
								"ABIE".</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.11.2.2.1">DictionaryEntryName (mandatory): The
								official name of the ABIE .</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.11.2.3.1">Version (optional): An indication of
								the evolution over time of the ABIE.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.11.2.4.1">Definition (mandatory): The meaning of
								the ABIE.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.11.2.5.1">ObjectClassQualifier (optional): The
								qualifier for the Object Class.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.11.2.6.1">ObjectClass (mandatory): The Object
								Class represented by the ABIE.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.11.2.7.1">AlternativeBusinessTerms (optional):
								Any synonymous terms under which the ABIE is commonly known and used
								in the business.</para>
						</listitem>
					</itemizedlist>
				</blockquote>
				<para id="para-1.5.11.4.12">The following rule describes the documentation
					requirements for each CCTS Association Business Information Entity
					definition.</para>
				<blockquote role="Rule" id="rule-DOC6">
					<para id="para-1.5.11.4.13.1">[<emphasis role="rule-prefix">DOC6</emphasis>] The
						xsd:documentation element for every ASBIE element declaration MUST contain a
						set of annotations in the following order:</para>
					<itemizedlist spacing="compact">
						<listitem>
							<para id="para-1.5.11.4.13.2.1.1">ComponentType (mandatory): The type of
								component to which the object belongs. For ASBIEs this MUST be
								"ASBIE".</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.13.2.2.1">DictionaryEntryName (mandatory): The
								official name of the ASBIE.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.13.2.3.1">Version (optional): An indication of
								the evolution over time of the ASBIE.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.13.2.4.1">Definition (mandatory): The meaning of
								the ASBIE.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.13.2.5.1">Cardinality (mandatory): Indicates
								whether the ASBIE represents an optional, mandatory, or repetitive
								assocation.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.13.2.6.1">ObjectClass (mandatory): The Object
								Class containing the ASBIE.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.13.2.7.1">PropertyTermQualifier (optional): A
								word or words which help define and identify the ASBIE.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.13.2.8.1">PropertyTerm (mandatory): Represents
								the ASBIE contained by the Association Business Information
								Entity.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.13.2.9.1">AssociatedObjectClassQualifier
								(optional): The Associated Object Class Qualifiers describe the
								"context" of the relationship with another ABIE. That is, it is the
								role the contained ABIE plays within its association with the
								containing ABIE.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.13.2.10.1">AssociatedObjectClass (mandatory):
								The Object Class at the other end of the association. It represents
								the ABIE contained by the ASBIE.</para>
						</listitem>
					</itemizedlist>
				</blockquote>
				<blockquote role="Rule" id="rule-DOC8">
					<para id="para-1.5.11.4.14.1">[<emphasis role="rule-prefix">DOC8</emphasis>] The
						xsd:documentation element for every Supplementary Component attribute
						declaration MUST contain a set of annotations in the following order:</para>
					<itemizedlist spacing="compact">
						<listitem>
							<para id="para-1.5.11.4.14.2.1.1">Name (mandatory): Name in the Registry
								of a Supplementary Component of a Core Component Type.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.14.2.2.1">Definition (mandatory): An explanation
								of the meaning of a Supplementary Component and its relevance for
								the related Core Component Type.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.14.2.3.1">Primitive type (mandatory): The
								PrimitiveType to be used for the representation of the value of a
								Supplementary Component.</para>
						</listitem>
						<listitem>
							<para id="para-1.5.11.4.14.2.4.1">Possible Value(s) (optional): Possible
								values of Supplementary Components.</para>
						</listitem>
					</itemizedlist>
				</blockquote>
				<blockquote role="Rule" id="rule-DOC9">
					<para id="para-1.5.11.4.15.1">[<emphasis role="rule-prefix">DOC9</emphasis>] 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>
					<itemizedlist spacing="compact">
						<listitem>
							<para id="para-1.5.11.4.15.2.1.1">Restriction Value(s) (mandatory): The
								actual value(s) that is (are) valid for the Supplementary
								Component.</para>
						</listitem>
					</itemizedlist>
				</blockquote>
			</section>
		</section>
	</section>
	<section id="section-4">
		<title>Naming Rules</title>
		<para id="para-1.6.2">The rules in this section make use of the following special concepts
			related to XML elements.</para>
		<orderedlist>
			<listitem>
				<para id="para-1.6.3.1.1">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 id="para-1.6.3.2.1">Lower-level element: An element that appears inside a UBL
					business message. Lower-level elements consist of intermediate elements and leaf
					level elements.</para>
			</listitem>
			<listitem>
				<para id="para-1.6.3.3.1">Intermediate element: An element not at the top level that
					is of a complex type, containing only other elements and possibly attributes,
					but no mixed content.</para>
			</listitem>
			<listitem>
				<para id="para-1.6.3.4.1">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 id="section-4.1">
			<title>General Naming Rules</title>
			<para id="para-1.6.4.2">In keeping with CCTS, UBL uses English as its normative
				language.</para>
			<blockquote role="Rule" id="rule-GNR1">
				<para id="para-1.6.4.3.1">[<emphasis role="rule-prefix">GNR1</emphasis>] UBL XML
					element and type names MUST be in the English language, using the primary
					English spellings provided in the Oxford English Dictionary.</para>
			</blockquote>
			<para id="para-1.6.4.4">CCTS adheres to ISO/IEC 11179. The UBL component library is also
				fully conformant to those rules. The UBL XSD instantiation of the UBL component
				library in some cases 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. Following 11179, CCTS mandates three-part Dictionary Entry Names (DENs) for
				information items. As an implementation of CCTS, UBL assigns an official DEN to each
				item and then converts this to the name in UBL schemas using determinate
				transformation rules.</para>
			<blockquote role="Rule" id="rule-GNR2">
				<para id="para-1.6.4.5.1">[<emphasis role="rule-prefix">GNR2</emphasis>] UBL XML
					element and type names MUST be consistently derived from CCTS conformant
					Dictionary Entry Names.</para>
			</blockquote>
			<para id="para-1.6.4.6">DENs contain spaces and characters not allowed by XML and
				therefore not appropriate for UBL XML component names.</para>
			<blockquote role="Rule" id="rule-GNR3">
				<para id="para-1.6.4.7.1">[<emphasis role="rule-prefix">GNR3</emphasis>] UBL XML
					element and type names constructed from CCTS Dictionary Entry Names MUST NOT
					include periods, spaces, other separators, or characters not allowed by
					XSD.</para>
			</blockquote>
			<para id="para-1.6.4.8">Acronyms and abbreviations impair interoperability and therefore
				are to be avoided to the maximum extent practicable. Since some abbreviations will
				inevitably be necessary, UBL maintains a normative list of authorized acronyms and
				abbreviations. Creation and maintainance of this list belongs to content definition
				rather than Naming and Design, but for convenience, the list used for UBL 2.0 is
				provided in Appendix B.</para>

			<blockquote role="Rule" id="rule-GNR4">
				<para id="para-1.6.4.9.1">[<emphasis role="rule-prefix">GNR4</emphasis>] UBL XML
					element names and simple and complex type names MUST NOT use acronyms,
					abbreviations, or other word truncations, except those in the list of exceptions
					maintained and published by the UBL TC.</para>
			</blockquote>
			<para id="para-1.6.4.10">The exception list is maintained and tightly controlled by UBL.
				Additions are made only when necessary. Once approved, an acronym or abbreviation
				must always be used to replace the term it stands for.</para>
			<blockquote role="Rule" id="rule-GNR6">
				<para id="para-1.6.4.12.1">[<emphasis role="rule-prefix">GNR6</emphasis>] The
					acronyms and abbreviations listed in the UBL-approved list MUST always be used
					in place of the word or phrase they represent.</para>
			</blockquote>
			<para id="para-1.6.4.13">Generally speaking, the names for UBL XML constructs must
				always be singular. The only exception is where the concept itself is plural.</para>
			<blockquote role="Rule" id="rule-GNR7">
				<para id="para-1.6.4.14.1">[<emphasis role="rule-prefix">GNR7</emphasis>] UBL XML
					element and type names MUST be in singular form unless the concept itself is
					plural.</para>
			</blockquote>

			<para id="para-1.6.4.16">Approved acronyms and abbreviations must be used consistently
				across documents.</para>
			<blockquote role="Rule" id="rule-GNR10">
				<para id="para-1.6.4.17.1">[<emphasis role="rule-prefix">GNR10</emphasis>] Acronyms
					and abbreviations at the beginning of an attribute name MUST appear in all lower
					case. Acronyms and abbreviations elsewhere in an attribute name MUST appear in
					upper case.</para>
			</blockquote>
			<blockquote role="Rule" id="rule-GNR11">
				<para id="para-1.6.4.18.1">[<emphasis role="rule-prefix">GNR11</emphasis>] Acronyms
					and abbreviations MUST appear in all upper case for all element and type
					names.</para>
			</blockquote>
			<para id="para-1.6.4.19">XML is case sensitive. Consistency in the use of case for a
				specific XML component (element, type, attribute) is essential to ensure that every
				occurrence of a component is treated as the same. Capitalization helps readability
				and consistency. The ebXML architecture document specifies a standard use of upper
				and lower camel case for expressing XML elements and attributes, respectively.
				Following this practice, UBL element and type names use UpperCamelCase (UCC), and
				attribute names use lowerCamelCase (LCC).</para>

			<blockquote role="Rule" id="rule-GNR8">
				<para id="para-1.6.4.20.1">[<emphasis role="rule-prefix">GNR8</emphasis>] The
					UpperCamelCase (UCC) convention MUST be used for naming elements and
					types.</para>
			</blockquote>
			<example id="example-4.1.2">
				<title/>
				<itemizedlist mark="none" spacing="compact">
					<listitem><para id="para-1.6.4.21.2">CurrencyBaseRate</para></listitem>
					<listitem><para id="para-1.6.4.21.3">CityNameType</para></listitem>
				</itemizedlist>
			</example>
			<blockquote role="Rule" id="rule-GNR9">
				<para id="para-1.6.4.22.1">[<emphasis role="rule-prefix">GNR9</emphasis>] The
					lowerCamelCase (LCC) convention MUST be used for naming attributes.</para>
			</blockquote>
			<example id="example-4.1.3">
				<title/>
				<itemizedlist mark="none" spacing="compact">
					<listitem><para id="para-1.6.4.23.2">currencyID</para></listitem>
					<listitem><para id="para-1.6.4.23.3">unitCode</para></listitem>
				</itemizedlist>
			</example>
		</section>
		<section id="section-4.2">
			<title>Type Naming Rules</title>
			<para id="para-1.6.5.2">UBL specifies naming rules for complex types based on CCTS
				ABIEs, BBIEs, and BBIE Properties. The use of unique CCTS Dictionary Entry Names for
				these constructs disambiguates their meanings and prevents duplication.</para>

			<section id="section-4.2.1">
				<title>Complex Type Names for CCTS Aggregate Business Information Entities
					(ABIEs)</title>
				<para id="para-1.6.5.4.2">UBL xsd:complexType names for ABIEs are derived from their
					DENs by removing separators to follow general naming rules and appending the
					suffix "Type" to replace the word "Details".</para>
				<blockquote role="Rule" id="rule-CTN1">
					<para id="para-1.6.5.4.3.1">[<emphasis role="rule-prefix">CTN1</emphasis>] A UBL
						xsd:complexType name based on a CCTS ABIE MUST be the CCTS Dictionary Entry
						Name with the separators removed and with the "Details" suffix replaced with
						"Type".</para>
				</blockquote>
				<example id="example-4.2.1.1">
					<title/>
					<informaltable>
						<tgroup cols="2">
							<colspec colwidth="60*" colname="col1"/>
							<colspec colwidth="40*" colname="col2"/>
							<tbody>
								<row>
									<entry>
										<para id="para-1.6.5.4.4.2.1.3.1.1.1">
											<emphasis role="bold">CCTS Aggregate Business
												Information Entity</emphasis>
										</para>
									</entry>
									<entry>
										<para id="para-1.6.5.4.4.2.1.3.1.2.1">
											<emphasis role="bold">UBL xsd:complexType</emphasis>
										</para>
									</entry>
								</row>
								<row>
									<entry>
										<para id="para-1.6.5.4.4.2.1.3.2.1.1">Address.
											Details</para>
									</entry>
									<entry>
										<para id="para-1.6.5.4.4.2.1.3.2.2.1">AddressType</para>
									</entry>
								</row>
								<row>
									<entry>
										<para id="para-1.6.5.4.4.2.1.3.3.1.1">Financial Account.
											Details</para>
									</entry>
									<entry>
										<para id="para-1.6.5.4.4.2.1.3.3.2.1"
											>FinancialAccountType</para>
									</entry>
								</row>
							</tbody>
						</tgroup>
					</informaltable>
				</example>
			</section>
			<section id="section-4.2.2">
				<title>Complex Type Names for CCTS Basic Business Information Entity (BBIE)
					Properties</title>
				<para id="para-1.6.5.5.2">All BBIE Properties are reusable across multiple BBIEs.
					The CCTS does not specify, but implies, that BBIE Property names are the
					reusable property term and representation term of the family of BBIEs that are
					based on them. The UBL xsd:complexType names for BBIE Properties are derived
					from the shared Property and Representation terms portion of the DENs in which
					they appear by removing separators to follow general naming rules and appending
					the suffix "Type".</para>
				<blockquote role="Rule" id="rule-CTN2">
					<para id="para-1.6.5.5.3.1">[<emphasis role="rule-prefix">CTN2</emphasis>] A UBL
						xsd:complexType name based on a CCTS BBIE Property MUST be the CCTS
						Dictionary Entry Name shared Property Term and its qualifiers and the
						Representation Term of the BBIE with the separators removed and with the
						"Type" suffix appended after the Representation Term.</para>
				</blockquote>
				<example id="example-4.2.2.1">
					<title/>
					<informaltable>
						<tgroup cols="2">
							<colspec colwidth="60*" colname="col1"/>
							<colspec colwidth="40*" colname="col2"/>
							<tbody>
								<row>
									<entry>
										<para id="para-1.6.5.5.2.2.1.3.1.1.1">
											<emphasis role="bold">CCTS Business Information Entity
												Property</emphasis>
										</para>
									</entry>
									<entry>
										<para id="para-1.6.5.5.2.2.1.3.1.2.1">
											<emphasis role="bold">UBL xsd:complexType</emphasis>
										</para>
									</entry>
								</row>
								<row>
									<entry>
										<para id="para-1.6.5.5.2.2.1.3.2.1.1">Declared Customs_
											Value. Amount</para>
									</entry>
									<entry>
										<para id="para-1.6.5.5.2.2.1.3.2.2.1"
											>DeclaredCustomsValueAmountType</para>
									</entry>
								</row>
								<row>
									<entry>
										<para id="para-1.6.5.5.2.2.1.3.3.1.1">Gross_ Weight.
											Measure</para>
									</entry>
									<entry>
										<para id="para-1.6.5.5.2.2.1.3.3.2.1"
											>GrossWeightMeasureType</para>
									</entry>
								</row>
							</tbody>
						</tgroup>
					</informaltable>
				</example>
				<blockquote role="Rule" id="rule-CTN6">
					<para id="para-1.6.5.5.5.1">[<emphasis role="rule-prefix">CTN6</emphasis>] A UBL
						xsd:complexType name based on a CCTS BBIE Property and with a CCTS BBIE
						Representation Term of "Text" MUST have the word "Text" removed from the end
						of its name.</para>
				</blockquote>

				<example id="example-4.2.1.2">
					<title/>
					<informaltable>
						<tgroup cols="2">
							<colspec colwidth="60*" colname="col1"/>
							<colspec colwidth="40*" colname="col2"/>
							<tbody>
								<row>
									<entry>
										<para id="para-1.6.5.5.5.1.2">
											<emphasis role="bold">CCTS Basic Business Information
												Entity</emphasis>
										</para>
									</entry>
									<entry>
										<para id="para-1.6.5.5.5.1.3">
											<emphasis role="bold">UBL xsd:complexType</emphasis>
										</para>
									</entry>
								</row>
								<row>
									<entry>
										<para id="para-1.6.5.5.5.1.4">Agency Name. Text</para>
									</entry>
									<entry>
										<para id="para-1.6.5.5.5.1.5">AgencyNameType</para>
									</entry>
								</row>
								<row>
									<entry>
										<para id="para-1.6.5.5.5.1.6">Floor. Text</para>
									</entry>
									<entry>
										<para id="para-1.6.5.5.5.1.7">FloorType</para>
									</entry>
								</row>
							</tbody>
						</tgroup>
					</informaltable>
				</example>
				<blockquote role="Rule" id="rule-CTN7">
					<para id="para-1.6.5.5.6.1">[<emphasis role="rule-prefix">CTN7</emphasis>] A UBL
						xsd:complexType name based on a CCTS BBIE Property and with a CCTS BBIE
						Representation Term of "Identifier" MUST replace "Identifier" with "ID" at
						the end of its name.</para>
				</blockquote>

				<example id="example-4.2.1.4">
					<title/>
					<informaltable>
						<tgroup cols="2">
							<colspec colwidth="60*" colname="col1"/>
							<colspec colwidth="40*" colname="col2"/>
							<tbody>
								<row>
									<entry>
										<para id="para-1.6.5.5.5.2.1">
											<emphasis role="bold">CCTS Basic Business Information
												Entity</emphasis>
										</para>
									</entry>
									<entry>
										<para id="para-1.6.5.5.5.2.2">
											<emphasis role="bold">UBL xsd:complexType</emphasis>
										</para>
									</entry>
								</row>
								<row>
									<entry>
										<para id="para-1.6.5.5.5.2.3">Agency Identifier.
											Identifier</para>
									</entry>
									<entry>
										<para id="para-1.6.5.5.5.2.4">AgencyIDType</para>
									</entry>
								</row>
								<row>
									<entry>
										<para id="para-1.6.5.5.5.2.5">Vessel Identifier.
											Identifier</para>
									</entry>
									<entry>
										<para id="para-1.6.5.5.5.2.6">VesselIDType</para>
									</entry>
								</row>
							</tbody>
						</tgroup>
					</informaltable>
				</example>
				<blockquote role="Rule" id="rule-CTN8">
					<para id="para-1.6.5.5.7.1">[<emphasis role="rule-prefix">CTN8</emphasis>] A UBL
						xsd:complexType name based on a CCTS BBIE Property MUST remove all
						duplication of words that occurs as a result of duplicate Property Terms and
						Representation Terms.</para>
				</blockquote>
				<example id="example-4.2.1.5">
					<title/>
					<informaltable>
						<tgroup cols="2">
							<colspec colwidth="60*" colname="col1"/>
							<colspec colwidth="40*" colname="col2"/>
							<tbody>
								<row>
									<entry>
										<para id="para-1.6.5.5.5.3.1">
											<emphasis role="bold">CCTS Basic Business Information
												Entity</emphasis>
										</para>
									</entry>
									<entry>
										<para id="para-1.6.5.5.5.3.2">
											<emphasis role="bold">UBL xsd:complexType</emphasis>
										</para>
									</entry>
								</row>
								<row>
									<entry>
										<para id="para-1.6.5.5.5.3.3"> Issue Date. Date</para>
									</entry>
									<entry>
										<para id="para-1.6.5.5.5.3.4">IssueDateType</para>
									</entry>
								</row>
								<row>
									<entry>
										<para id="para-1.6.5.5.5.3.5">Issue Time. Time</para>
									</entry>
									<entry>
										<para id="para-1.6.5.5.5.3.6">IssueTimeType</para>
									</entry>
								</row>
							</tbody>
						</tgroup>
					</informaltable>
				</example>
			</section>
		</section>
		<section id="section-4.3">
			<title>Element Naming Rules</title>


			<para id="para-1.6.6.2">As shown in <link linkend="figure3">Figure 3</link>, UBL
				elements are created for each UBL ABIE, BBIE, and ASBIE.</para>
			<section id="section-4.3.1">
				<title>Element Names for CCTS ABIEs (ABIEs)</title>
				<blockquote role="Rule" id="rule-ELN1">
					<para id="para-1.6.6.3.2.1">[<emphasis role="rule-prefix">ELN1</emphasis>] 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 "Type"
						removed.</para>
				</blockquote>
				<para id="para-1.6.6.3.3">For example, a UBL xsd:complexType name based on the ABIE
					Party. Details will be PartyType. The global element based on PartyType will be
					named Party.</para>
				<example id="example-4.3.1.1">
					<title/>
					<programlisting>&lt;xsd:element name="Party" type="PartyType"/&gt;
  &lt;xsd:complexType name="PartyType"&gt;
    &lt;xsd:annotation&gt;
      &lt;!-- Documentation goes here --&gt;
    &lt;/xsd:annotation&gt;
    &lt;xsd:sequence&gt;
      &lt;xsd:element ref="cbc:MarkCareIndicator" minOccurs="0" maxOccurs="1"&gt;
          ...
      &lt;/xsd:element&gt;
      &lt;xsd:element ref="cbc:MarkAttentionIndicator" minOccurs="0" maxOccurs="1"&gt;
          ...
      &lt;/xsd:element&gt;
      &lt;xsd:element ref="PartyIdentification" minOccurs="0" maxOccurs="unbounded"&gt;
          ...
      &lt;/xsd:element&gt;
      &lt;xsd:element ref="PartyName" minOccurs="0" maxOccurs="1"&gt;
          ...
      &lt;/xsd:element&gt;
      &lt;xsd:element ref="Address" minOccurs="0" maxOccurs="1"&gt;
          ...
      &lt;/xsd:element&gt;
      ...
    &lt;/xsd:sequence&gt;</programlisting>
				</example>
			</section>
			<section id="section-4.3.2">
				<title>Element Names for CCTS BBIE Properties</title>
				<para id="para-1.6.6.4.2">The same naming concept used for ABIEs applies to BBIE
					Properties.</para>
				<blockquote role="Rule" id="rule-ELN2">
					<para id="para-1.6.6.4.3.1">[<emphasis role="rule-prefix">ELN2</emphasis>] A UBL
						global element name based on a CCTS BBIE Property MUST be the same as the
						name of the corresponding xsd:complexType to which it is bound, with the
						word "Type" removed.</para>
				</blockquote>
				<example id="example-4.3.2.1">
					<title/>
					<programlisting>&lt;!--===== Basic Business Information Entity Type Definitions =====--&gt;
&lt;xsd:complexType name="ChargeIndicatorType"&gt;
    ...
&lt;/xsd:complexType&gt;
    ...
&lt;!--===== Basic Business Information Entity Property Element Declarations =====--&gt;
&lt;xsd:element name="ChargeIndicator" type="ChargeIndicatorType"/&gt;</programlisting>
				</example>
			</section>
			<section id="section-4.3.3">
				<title>Element Names for CCTS ASBIEs</title>
				<para id="para-1.6.6.5.2">An ASBIE is not a class like an ABIE or a BBIE Property
					that is reused as a BBIE. Rather, it is an association between two classes.
					Therefore, an element representing an ASBIE does not have its own unique
					xsd:complexType. Instead, when an element representing an ASBIE is declared, the
					element is bound to the xsd:complexType of its associated ABIE by referencing
					the ABIE's global element declaration.</para>
				<blockquote role="Rule" id="rule-ELN3">
					<para id="para-1.6.6.5.3.1">[<emphasis role="rule-prefix">ELN3</emphasis>] 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 Dictionary Entry Name
						separators MUST be removed.</para>
				</blockquote>
				<example id="example-4.3.3.1">
					<title/>
					<informaltable>
						<tgroup cols="3">
							<colspec colwidth="33*" colname="col1"/>
							<colspec colwidth="33*" colname="col2"/>
							<colspec colwidth="34*" colname="col3"/>
							<tbody>
								<row>
									<entry>
										<para id="para-1.6.6.5.3.2.1">
											<emphasis role="bold">CCTS ASBIE Property
												Term</emphasis>
										</para>
									</entry>
									<entry>
										<para id="para-1.6.6.5.3.2.2">
											<emphasis role="bold">Associated ABIE Object
												Class</emphasis>
										</para>
									</entry>
									<entry>
										<para id="para-1.6.6.5.3.2.2.1">
											<emphasis role="bold">Global Element Name</emphasis>
										</para>
									</entry>
								</row>
								<row>
									<entry>
										<para id="para-1.6.6.5.3.2.3">Buyer_Contact</para>
									</entry>
									<entry>
										<para id="para-1.6.6.5.3.2.3.1">Contact.Details</para>
									</entry>

									<entry>
										<para id="para-1.6.6.5.3.2.4">BuyerContact</para>
									</entry>
								</row>
								<row>
									<entry>
										<para id="para-1.6.6.5.3.2.5">Origin_Address</para>
									</entry>
									<entry>
										<para id="para-1.6.6.5.3.2.5.1">Address.Details</para>
									</entry>
									<entry>
										<para id="para-1.6.6.5.3.2.6">OriginAddress</para>
									</entry>
								</row>
							</tbody>
						</tgroup>
					</informaltable>
				</example>
			</section>
		</section>
		<section id="section-4.4">
			<title>Attributes in UBL</title>
			<para id="para-1.6.7.2">As a transaction-based XML exchange format, UBL significantly
				restricts the use of XML attributes. Attribute usage is relegated to supplementary
				components only; all "primary" business data appears exclusively in element content.
				Attributes are defined in the UN/CEFACT Unqualified Datatype schema module.</para>
		</section>
	</section>
	<section id="section-5">
		<title>Declarations and Definitions</title>
		<para id="para-1.7.2">In XSD, 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 types and their documentation in the UBL Library.</para>
		<section id="section-5.1">
			<title>Type Definitions</title>
			<section id="section-5.1.1">
				<title>General Type Definitions</title>
				<para id="para-1.7.3.2.2">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>
				<blockquote role="Rule" id="rule-GTD1">
					<para id="para-1.7.3.2.3.1">[<emphasis role="rule-prefix">GTD1</emphasis>] All
						types MUST be named.</para>
				</blockquote>
				<example id="example-5.1.1.1">
					<title/>
					<programlisting>&lt;xsd:complexType name="QuantityType"&gt;
    ...
&lt;/xsd:complexType&gt;</programlisting>
				</example>

				<para id="para-1.7.3.2.5">UBL disallows the use of the type xsd:anyType, because
					this feature permits the introduction of potentially unknown types into an XML
					instance.</para>
				<blockquote role="Rule" id="rule-GTD2">
					<para id="para-1.7.3.2.6.1">[<emphasis role="rule-prefix">GTD2</emphasis>] The
						predefined XML schema type xsd:anyType MUST NOT be used.</para>
				</blockquote>
			</section>
			<section id="section-5.1.2">
				<title>Simple Types</title>
				<para id="para-1.7.3.3.2">CCTS provides a set of constructs called Core Component
					Types (CCTs) for the modeling of basic data. These are represented in UBL with a
					library of complex types. 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 id="para-1.7.3.3.3">UBL does not define its own simple types. These are
					defined in the UN/CEFACT Unqualified Datatype schema module. UBL defines
					restrictions of these simple types in the UBL Qualified Datatype schema
					module.</para>
			</section>
			<section id="section-5.1.3">
				<title>Complex Types</title>
				<para id="para-1.7.3.4.2">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, ABIEs are considered classes (objects)
					.</para>
				<blockquote role="Rule" id="rule-CTD1">
					<para id="para-1.7.3.4.3.1">[<emphasis role="rule-prefix">CTD1</emphasis>] For
						every class identified in the UBL model, a named xsd:complexType MUST be
						defined.</para>
				</blockquote>
				<example id="example-5.1.3.1">
					<title/>
					<programlisting>&lt;xsd:complexType name="BuildingNameType"&gt;
&lt;/xsd:complexType&gt;</programlisting>
				</example>
				<para id="para-1.7.3.4.5"/>
				<para id="para-1.7.3.4.6">Every class identified in the UBL model consists of
					properties. These properties are either ASBIEs, when the property represents
					another class, or BBIEs.</para>
				<blockquote role="Rule" id="rule-CTD25">
					<para id="para-1.7.3.4.7.1">[<emphasis role="rule-prefix">CTD25</emphasis>] For
						every CCTS BBIE Property identified in the UBL model, a named
						xsd:complexType MUST be defined.</para>
				</blockquote>
				<section id="section-5.1.3.1">
					<title>Aggregate Business Information Entities (ABIEs)</title>
					<para id="para-1.7.3.4.8.2">An ABIE encapsulates the relationship between a
						class (the ABIE) and its properties (those data items contained within the
						ABIE). UBL represents this relationship by defining an xsd:complexType for
						each ABIE with its properties represented as a sequence of references to
						global elements.</para>
					<blockquote role="Rule" id="rule-CTD2">
						<para id="para-1.7.3.4.8.3.1">[<emphasis role="rule-prefix">CTD2</emphasis>]
							Every CCTS ABIE xsd:complexType definition content model MUST contain an
							xsd:sequence element containing the appropriate global element
							declarations.</para>
					</blockquote>
					<example id="example-5.1.3.2.1">
						<title/>
						<programlisting>&lt;xsd:complexType name="AddressType"&gt;
    ...
  &lt;xsd:sequence&gt;
    &lt;xsd:element ref="cbc:CityName" minOccurs="0" maxOccurs="1"&gt;
        ...
    &lt;/xsd:element&gt;
    &lt;xsd:element ref="cbc:PostalZone" minOccurs="0" maxOccurs="1"&gt;
        ...
    &lt;/xsd:element&gt;
    ...
  &lt;/xsd:sequence&gt;
&lt;/xsd:complexType&gt;</programlisting>
					</example>
				</section>
				<section id="section-5.1.3.2">
					<title>Basic Business Information Entities (BBIEs)</title>
					<para id="para-1.7.3.4.9.2">In accordance with CCTS, all BBIEs have a primary or
						secondary Representation Term. 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. The following set of rules specifies the way these
						relationships are expressed in the UBL XML library. As discussed above, BBIE
						Properties are represented with complex types. Within these are
						xsd:simpleContent elements that extend the Datatypes.</para>
					<blockquote role="Rule" id="rule-CTD3">
						<para id="para-1.7.3.4.9.3.1">[<emphasis role="rule-prefix">CTD3</emphasis>]
							Every CCTS BBIE Property xsd:complexType definition content model MUST
							contain an xsd:simpleContent element.</para>
					</blockquote>
					<blockquote role="Rule" id="rule-CTD4">
						<para id="para-1.7.3.4.9.4.1">[<emphasis role="rule-prefix">CTD4</emphasis>]
							Every CCTS BBIE Property xsd:complexType content model xsd:simpleContent
							element MUST consist of an xsd:extension element.</para>
					</blockquote>
					<para id="para-1.7.3.4.9.5"/>
					<blockquote role="Rule" id="rule-CTD5">
						<para id="para-1.7.3.4.9.6.1">[<emphasis role="rule-prefix">CTD5</emphasis>]
							Every CCTS BBIE Property xsd:complexType xsd:base attribute value MUST
							be the UN/CEFACT Unqualified Datatype or UBL Qualified Datatype as
							appropriate.</para>
					</blockquote>
					<example id="example-5.1.3.3.1">
						<title/>
						<programlisting>&lt;xsd:complexType name="StreetNameType"&gt;
  &lt;xsd:simpleContent&gt;
    &lt;xsd:extension base="udt:NameType"/&gt;
  &lt;/xsd:simpleContent&gt;
&lt;/xsd:complexType&gt;</programlisting>
					</example>
				</section>
				<section id="section-5.1.3.3">
					<title>Datatypes</title>
					<para id="para-1.7.3.4.10.2">There is a one-to-one relationship between CCTS
						CoreComponentTypes and CCTS PrimaryRepresentationTerms. Additionally, there
						are several CCTS SecondaryRepresentationTerms that are semantic refinements
						of their parent CCTS PrimaryRepresentationTerms. There is a CCTS
						UnqualifiedDataType for each CCTS PrimaryRepresentationTerm or CCTS
						SecondaryRepresentationTerm. In the UBL XML Library, each CCTS
						UnqualifiedDatatype is expressed as complex or simple type that is 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 id="section-5.1.3.3.1">
						<title>Qualified Datatypes</title>
						<para id="para-1.7.3.4.10.3.2">The data types defined in the Unqualified
							Datatype (UDT) schema module are intended to be suitable as the xsd:base
							types for some, but not all BBIEs. As business process modeling reveals
							the need for specialized data types, new qualified data types will need
							to be defined. These new CCTS Qualified Datatypes must each be based on
							a CCTS Unqualified Datatype and must represent a semantic or technical
							restriction of the CCTS Unqualified Datatype. Technical restrictions
							must be implemented as an xsd:restriction or as a new xsd:simpleType if
							the supplementary components of the Qualified Datatype map directly to
							the properties of a built-in XSD data type.</para>
						<blockquote role="Rule" id="rule-CTD6">
							<para id="para-1.7.3.4.10.3.3.1">[<emphasis role="rule-prefix"
									>CTD6</emphasis>] For every CCTS Qualified Datatype used in the
								UBL model, a named xsd:complexType or xsd:simpleType MUST be
								defined.</para>
						</blockquote>
						<blockquote role="Rule" id="rule-CTD20">
							<para id="para-1.7.3.4.10.3.4.1">[<emphasis role="rule-prefix"
									>CTD20</emphasis>] A CCTS Qualified DataType MUST be based on an
								CCTS Unqualified Datatype and add some semantic and/or technical
								restriction to the CCTS Unqualified Datatype.</para>
						</blockquote>
						<blockquote role="Rule" id="rule-CTD21">
							<para id="para-1.7.3.4.10.3.5.1">[<emphasis role="rule-prefix"
									>CTD21</emphasis>] The name of a UBL Qualified DataType MUST be
								the qualifier term followed by the name of its base CCTS Unqualified
								DataType with separators and spaces removed.</para>

						</blockquote>
						<para id="para-1.7.3.4.10.3.6">In accordance with rule GXS3, built-in XSD
							data types are used whenever possible.</para>
						<blockquote role="Rule" id="rule-CTD22">
							<para id="para-1.7.3.4.10.3.7.1">[<emphasis role="rule-prefix"
									>CTD22</emphasis>] 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 id="para-1.7.3.4.10.3.7.2">MUST be defined as an
								xsd:simpleType,</para>
							<para id="para-1.7.3.4.10.3.7.3">MUST contain one xsd:restriction
								element, and</para>
							<para id="para-1.7.3.4.10.3.7.4">MUST include an xsd:base attribute that
								defines the specific XSD built-in data type required for the content
								component.</para>
						</blockquote>
						<blockquote role="Rule" id="rule-CTD23">
							<para id="para-1.7.3.4.10.3.8.1">[<emphasis role="rule-prefix"
									>CTD23</emphasis>] Every CCTS Qualified Datatype based on a CCTS
								Unqualified Datatype xsd:complexType whose supplementary components
								do not map directly to the properties of an XSD built-in data
								type</para>
							<para id="para-1.7.3.4.10.3.8.2">MUST be defined as an
								xsd:complexType,</para>
							<para id="para-1.7.3.4.10.3.8.3">MUST contain one xsd:simpleContent
								element,</para>
							<para id="para-1.7.3.4.10.3.8.4">MUST contain one xsd:restriction
								element, and</para>
							<para id="para-1.7.3.4.10.3.8.5">MUST include the Unqualified Datatype
								as its xsd:base attribute.</para>
						</blockquote>
						<blockquote role="Rule" id="rule-CTD24">
							<para id="para-1.7.3.4.10.3.9.1">[<emphasis role="rule-prefix"
									>CTD24</emphasis>] Every CCTS Qualified Datatype based on a CCTS
								Unqualified Datatype xsd:simpleType</para>
							<para id="para-1.7.3.4.10.3.9.2">MUST contain one xsd:restriction
								element</para>
							<para id="para-1.7.3.4.10.3.9.3">MUST include the unqualified datatype
								as its xsd:base attribute.</para>
						</blockquote>
					</section>
				</section>
				<section id="section-5.1.3.4">
					<title>Core Component Types</title>
					<para id="para-1.7.3.4.11.2">UBL uses UN/CEFACT's Core Component Type schema
						module.</para>
				</section>
			</section>
		</section>
		<section id="section-5.2">
			<title>Element Declarations</title>
			<section id="section-5.2.1">
				<title>Elements Bound to Complex Types</title>
				<para id="para-1.7.4.2.2">The binding of UBL elements to their xsd:complexTypes is
					based on the associations identified in the UBL model. For the BBIEs and ABIEs,
					the UBL elements are directly associated to their corresponding
					xsd:complexTypes.</para>
				<blockquote role="Rule" id="rule-ELD3">
					<para id="para-1.7.4.2.3.1">[<emphasis role="rule-prefix">ELD3</emphasis>] For
						every class and property identified in the UBL model, a global element bound
						to the corresponding xsd:complexType MUST be declared.</para>
				</blockquote>
				<example id="example-5.2.1.1">
					<title/>
					<para id="para-1.7.4.2.4.2">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 id="para-1.7.4.2.4.3">The element thus created can be reused in the
						building of new business messages. The complex type thus created can be used
						through the declaration of new elements of that type in the building of both
						new and contextualized business messages.</para>
				</example>
				<example id="example-5.2.1.2">
					<title/>
					<programlisting>&lt;xsd:element name="SupplierParty" type="SupplierPartyType"/&gt;
	&lt;xsd:complexType name="SupplierPartyType"/&gt;
    ...
&lt;/xsd:complexType&gt;</programlisting>
				</example>
			</section>
			<section id="section-5.2.2">
				<title>Elements Representing ASBIEs</title>
				<para id="para-1.7.4.3.2">An ASBIE is not a class like an ABIE. Rather, it is an
					association between two classes, and therefore the element declaration binds the
					element to the xsd:complexType of the associated ABIE. There are two types of
					ASBIEs &#x2014; those that have qualifiers in the object class, and those
					that do not.</para>
				<blockquote role="Rule" id="rule-ELD4">
					<para id="para-1.7.4.3.3.1">[<emphasis role="rule-prefix">ELD4</emphasis>] When
						a CCTS ASBIE is unqualified, it is bound via reference to the global CCTS
						ABIE element with which it is associated.</para>
				</blockquote>
				<blockquote role="Rule" id="rule-ELD11">
					<para id="para-1.7.4.3.4.1">[<emphasis role="rule-prefix">ELD11</emphasis>] When
						a CCTS ASBIE is qualified, a new element MUST be declared and bound to the
						xsd:complexType of its associated CCTS ABIE.</para>
				</blockquote>
			</section>
		</section>
		<section id="section-5.3">
			<title>Code List Import</title>
			<blockquote role="Rule" id="rule-ELD6">
				<para id="para-1.7.5.2.1">[<emphasis role="rule-prefix">ELD6</emphasis>] The code
					list xsd:import element MUST contain the namespace and schema location
					attributes.</para>
			</blockquote>
		</section>
		<section id="section-5.4">
			<title>Empty Elements</title>
			<blockquote role="Rule" id="rule-ELD7">
				<para id="para-1.7.6.2.1">[<emphasis role="rule-prefix">ELD7</emphasis>] Empty
					elements MUST not be declared, except in the case of extension where the UBL
					Extensions element is used.</para>
			</blockquote>
		</section>
	</section>
	<section id="section-6">
		<title>Code Lists</title>
		<para id="para-1.8.2">The following rules apply to the use of code lists in UBL.</para>
		<blockquote role="Rule" id="rule-CDL1">
			<para id="para-1.8.4.1">[<emphasis role="rule-prefix">CDL1</emphasis>] All UBL codes
				MUST be part of a UBL or externally maintained code list.</para>
		</blockquote>
		<para id="para-1.8.5">The majority of code lists are owned and maintained by external
			agencies. UBL makes maximum use of such external code lists where they exist.</para>
		<blockquote role="Rule" id="rule-CDL2">
			<para id="para-1.8.6.1">[<emphasis role="rule-prefix">CDL2</emphasis>] The UBL Library
				SHOULD identify and use external standardized code lists rather than develop its own
				UBL-native code lists.</para>
		</blockquote>
		<para id="para-1.8.7">In some cases, UBL may extend an existing code list to meet specific
			business requirements. In others cases, UBL may 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>
		<blockquote role="Rule" id="rule-CDL3">
			<para id="para-1.8.8.1">[<emphasis role="rule-prefix">CDL3</emphasis>] 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>
		</blockquote>
	</section>
	<section id="section-7">
		<title>Miscellaneous XSD Rules</title>
		<para id="para-1.9.2">As a business standard vocabulary, UBL 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 id="section-7.1">
			<title>xsd:simpleType</title>
			<para id="para-1.9.3.2">XSD provides for 44 built-in data types expressed as simple
				types. For maximum reuse, these built-in simple types should be used wherever
				possible.</para>
			<blockquote role="Rule" id="rule-GXS3">
				<para id="para-1.9.3.3.1">[<emphasis role="rule-prefix">GXS3</emphasis>] Built-in
					xsd:simpleTypes SHOULD be used wherever possible.</para>
			</blockquote>
		</section>
		<section id="section-7.2">
			<title>Namespace Declaration</title>
			<para id="para-1.9.4.2">XSD allows any prefixes to be used in referencing its
				namespaces. To ensure consistency, UBL has adopted the generally accepted convention
				of using the "xsd" prefix for the XSD namespace.</para>
			<blockquote role="Rule" id="rule-GXS4">
				<para id="para-1.9.4.3.1">[<emphasis role="rule-prefix">GXS4</emphasis>] All XSD
					constructs in UBL schema and schema modules MUST contain the following namespace
					declaration on the xsd:schema element:</para>
			</blockquote>
			<para><blockquote><para><literal>xmlns:xsd="http://www.w3.org/2001/XMLSchema"</literal></para></blockquote></para>
		</section>
		<section id="section-7.3">
			<title>xsd:substitutionGroup</title>
			<para id="para-1.9.5.2">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>
			<blockquote role="Rule" id="rule-GXS5">
				<para id="para-1.9.5.3.1">[<emphasis role="rule-prefix">GXS5</emphasis>] The
					xsd:substitutionGroup feature MUST NOT be used.</para>
			</blockquote>
		</section>
		<section id="section-7.4">
			<title>xsd:final</title>
			<para id="para-1.9.6.2">UBL does not use extensions in its normative schemas. Extensions
				are allowed by customizers as outlined in the Guidelines for Customization. In cases
				where type definitions are inappropriate for any customization, the xsd:final
				attribute is used.</para>
			<blockquote role="Rule" id="rule-GXS6">
				<para id="para-1.9.6.3.1">[<emphasis role="rule-prefix">GXS6</emphasis>] The
					xsd:final attribute MUST be used to control extensions where there is a desire
					to prohibit further extensions.</para>
			</blockquote>
		</section>
		<section id="section-7.5">
			<title>xsd: notation</title>
			<para id="para-1.9.7.2">The UBL schema model does not require or support the use of
				xsd:notation.</para>
			<blockquote role="Rule" id="rule-GXS7">
				<para id="para-1.9.7.3.1">[<emphasis role="rule-prefix">GXS7</emphasis>]
					xsd:notation MUST NOT be used.</para>
			</blockquote>
		</section>
		<section id="section-7.6">
			<title>xsd:all</title>
			<para id="para-1.9.8.2">When xsd:all is used, elements can occur in any order, are
				always optional, and can never occur more than once. Such restrictions are
				inconsistent with the applications of UBL.</para>
			<blockquote role="Rule" id="rule-GXS8">
				<para id="para-1.9.8.3.1">[<emphasis role="rule-prefix">GXS8</emphasis>] xsd:all
					MUST NOT be used.</para>
			</blockquote>
		</section>
		<section id="section-7.7">
			<title>xsd:choice</title>
			<para id="para-1.9.9.2">xsd:choice allows one of a set of alternatives to appear in a
				document instance. This is useful in some contexts but xsd:choice cannot be extended
				and therefore is not recommended.</para>
			<blockquote role="Rule" id="rule-GXS9">
				<para id="para-1.9.9.3.1">[<emphasis role="rule-prefix">GXS9</emphasis>] The
					xsd:choice element SHOULD NOT be used where customization and extensibility are
					a concern.</para>
			</blockquote>
		</section>
		<section id="section-7.8">
			<title>xsd:include</title>
			<para id="para-1.9.10.2">xsd:include may be used in accordance with rule GXS10.</para>
			<blockquote role="Rule" id="rule-GXS10">
				<para id="para-1.9.10.3">[<emphasis role="rule-prefix">GXS10</emphasis>] xsd:include
					can only be used when the including schema is in the same namespace as the
					included schema.</para>
			</blockquote>
		</section>
		<section id="section-7.9">
			<title>xsd:union</title>
			<para id="para-1.9.11.2">The xsd:union feature provides a mechanism whereby a datatype
				is created as a union of two or more existing datatypes. As UBL strictly adheres to
				the use of CCTS Datatypes that are explicitly declared in the UBL library, this
				feature is inappropriate except for code lists.</para>
			<blockquote role="Rule" id="rule-GXS11">
				<para id="para-1.9.11.3.1">[<emphasis role="rule-prefix">GXS11</emphasis>] The
					xsd:union technique MUST NOT be used except for code lists.</para>
			</blockquote>
		</section>
		<section id="section-7.10">
			<title>xsd:appinfo</title>
			<para id="para-1.9.12.2">The xsd:appinfo feature is used by schemas to convey processing
				instructions to a processing application, stylesheet, or other tool. Some users of
				UBL believe 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 used only to convey
				information.</para>
			<blockquote role="Rule" id="rule-GXS12">
				<para id="para-1.9.12.3.1">[<emphasis role="rule-prefix">GXS12</emphasis>] UBL
					schemas SHOULD NOT use xsd:appinfo. If used, xsd:appinfo MUST be used only to
					convey non-normative information.</para>
			</blockquote>
		</section>
		<section id="section-7.11">
			<title>xsd:schemaLocation</title>
			<para id="para-1.9.13.2">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 schemas.</para>
			<blockquote role="Rule" id="rule-GXS15">
				<para id="para-1.9.13.3.1">[<emphasis role="rule-prefix">GXS15</emphasis>] 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>
			</blockquote>
		</section>
		<section id="section-7.12">
			<title>xsd:nillable</title>
			<blockquote role="Rule" id="rule-GXS16">
				<para id="para-1.9.14.2.1">[<emphasis role="rule-prefix">GXS16</emphasis>] The built
					in xsd:nillable attribute MUST NOT be used for any UBL declared element.</para>
			</blockquote>
		</section>
		<section id="section-7.13">
			<title>xsd:any</title>
			<para id="para-1.9.15.2">UBL disallows the use of xsd:any because this feature permits
				the introduction of unknown attributes into an XML instance. UBL intends that all
				constructs within an instance be governed by the schemas describing that instance,
				and therefore xsd:any is not allowed outside of the ExtensionContentType
				definition.</para>
			<blockquote role="Rule" id="rule-GXS14">
				<para id="para-1.5.7.4.1">[<emphasis role="rule-prefix">GXS14</emphasis>] xsd:any
					MUST NOT be used except within the ExtensionContentType type definition, and
					with xsd:processContents= "skip" for non-UBL namespaces.</para>
			</blockquote>
		</section>
		<section id="section-7.14">
			<title>Extension and Restriction</title>
			<para id="para-1.9.16.2">UBL recognizes the value of supporting extension and
				restriction of its core schema library by customizers. The UBL schema extension and
				restriction recommendations are discussed in the <emphasis role="italics">Guidelines
					for the Customization of UBL 1.0 Schemas</emphasis> (SchCust) available as part
				of the UBL 1.0 Standard.</para>
			<blockquote role="Rule" id="rule-GXS13">
				<para id="para-1.9.16.3.1">[<emphasis role="rule-prefix">GXS13</emphasis>] Complex
					type extension or restriction MAY be used where appropriate.</para>
			</blockquote>
		</section>
	</section>
	<section id="section-8">
		<title>Instance Documents</title>


		<para id="para-1.12.2">In addition to the UBL 2.0 document constraints formally expressed in
			the schemas, UBL mandates several other rules governing conformant UBL 2.0 instances
			that cannot be expressed using XSD. These additional UBL rules address instance
			validation, character encoding, and empty elements.</para>
		<para id="para-1.12.3">Note that these rules first appeared in the OASIS UBL 1.0 and UBL 1.0
			NDR Standards, as well as in the Universal Business Language v2.0 release package. They
			are copied here for reference and put in this section to separate them from the
			schema-specific rules contained in the rest of the NDR.</para>
		<para id="para-1.12.4">The UBL library and document schemas 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>
		<blockquote role="Rule" id="rule-IND1">
			<para id="para-1.12.5.1">[<emphasis role="rule-prefix">IND1</emphasis>] All UBL instance
				documents MUST validate to a corresponding UBL schema.</para>
		</blockquote>
		<para id="para-1.12.6">XML supports a wide variety of character encodings. Processors must
			understand which character encoding is employed in each XML document. XML assumes a
			default value of UTF-8 for character encoding, but best practice is to always identify
			the character encoding being employed.</para>
		<blockquote role="Rule" id="rule-IND2">
			<para id="para-1.12.7.1">[<emphasis role="rule-prefix">IND2</emphasis>] All UBL instance
				documents MUST identify their character encoding within the XML declaration.</para>
		</blockquote>
		<para id="para-1.12.8">
			<emphasis role="bold">Example:</emphasis>
		</para>
		<programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</programlisting>
		<para id="para-1.12.10">UBL, as an OASIS TC, is obligated to conform to agreements OASIS has
			entered into. OASIS is a liaison member of the ISO IEC ITU UN/CEFACT eBusiness
			Memorandum of Understanding Management Group (MOUMG). Resolution 01/08 (MOU/MG01n83)
			requires the use of UTF-8.</para>
		<blockquote role="Rule" id="rule-IND3">

			<para id="para-1.12.11.1">[<emphasis role="rule-prefix">IND3</emphasis>] In conformance
				with ISO IEC ITU UN/CEFACT eBusiness 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>
		</blockquote>
		<para id="para-1.12.12">
			<emphasis role="bold">Example:</emphasis>
		</para>
		<programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</programlisting>
		<para id="para-1.12.14">Use of empty elements within XML instance documents is 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, for example, "data not provided
			by 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
			therefore will not be used.</para>
		<blockquote role="Rule" id="rule-IND5">
			<para id="para-1.12.15.1">[<emphasis role="rule-prefix">IND5</emphasis>] UBL conformant
				instance documents MUST NOT contain an element devoid of content or containing null
				values, except in the case of extension, where the UBLExtensionContent element is
				used.</para>
		</blockquote>
		<para id="para-1.12.16">To ensure that no attempt is made to circumvent rule IND5, UBL also
			prohibits attempting to convey meaning by not conveying an element.</para>
		<blockquote role="Rule" id="rule-IND6">
			<para id="para-1.12.17.1">[<emphasis role="rule-prefix">IND6</emphasis>] The absence of
				a construct or data in a UBL instance document MUST NOT carry meaning.</para>
		</blockquote>
	</section>
  <section>
    <title>Conformance</title>
      <para>This document was prepared for the internal use of the
      UBL 2.0 development effort and has no external conformance
      implications.  Any organization wishing to adapt the UBL 2.0
      Naming and Design Rules to its own use should specify
      conformance requirements in its version of this
      document.</para>
  </section>

	<appendix>
		<title>Acknowledgements</title>
		<para>The editors thank Betty Harvey and G. Ken Holman for their assistance in producing this document.</para>
	</appendix>

	<appendix id="Z">
		<title>Code List Metadata (Informative)</title>
		<para>Included here for convenience are some observations regarding instance-level code list
			metadata defined in UBL 2.0 schemas for the information items governed by code lists.
			Note that what follows are not UBL Naming and Design Rules but rather implications of
			UBL's use of the UN/CEFACT Unqualified Data Type Schema Module.</para>
		<para>For items based on the unqualified data type Amount, the attribute currencyID has the
			coded value, and the instance-level metadata is one attribute:</para>
		<itemizedlist spacing="compact" mark="none">
    <listitem>
  			<para>currencyCodeListVersionID</para>
        </listitem>
		</itemizedlist>
		<para>For items based on the unqualified data type MeasureType, the attribute unitCode has
			the coded value, and the instance-level metadata is one attribute:</para>
		<itemizedlist spacing="compact" mark="none">
    <listitem>
			<para>unitCodeListVersionID</para>
      </listitem>
		</itemizedlist>
		<para>For items based on the unqualified data type QuantityType, the attribute unitCode has
			the coded value, and the instance-level metadata consists of three attributes:</para>
		<itemizedlist spacing="compact" mark="none">
    <listitem>
			<para>unitCodeListID</para>
      </listitem>
      <listitem>
			<para>unitCodeListAgencyID</para>
      </listitem>
      <listitem>
			<para>unitCodeListAgencyName</para>
      </listitem>
		</itemizedlist>
		<para>For an element named &lt;xxxxxCode&gt; based on the unqualified data type
			CodeType, the element has the coded value, and the instance-level metadata consists of
			seven attributes:</para>
		<itemizedlist spacing="compact" mark="none">
    <listitem>
			<para>listName</para>
      </listitem>
      <listitem>
			<para>listID</para>
      </listitem>
      <listitem>
			<para>listVersionID</para>
      </listitem>
      <listitem>
			<para>listSchemeURI</para>
      </listitem>
      <listitem>
			<para>listURI</para>
      </listitem>
      <listitem>
			<para>listAgencyName</para>
      </listitem>
      <listitem>
			<para>listAgencyID</para>
      </listitem>
		</itemizedlist>
		<para>For an element named &lt;yyyyyID&gt; based on the unqualified data type
			IdentifierType, the element has the coded value, and the instance-level metadata
			consists of six attributes:</para>
		<itemizedlist spacing="compact" mark="none">
    <listitem>
			<para>schemeName</para>
      </listitem>
      <listitem>
			<para>schemeVersionID</para>
      </listitem>
      <listitem>
			<para>schemeURI</para>
      </listitem>
      <listitem>
			<para>schemeDataURI</para>
      </listitem>
      <listitem>
			<para>schemeAgencyName</para>
      </listitem>
      <listitem>
			<para>schemeAgencyID</para>
      </listitem>
		</itemizedlist>
  		<para>All instance-level code list metadata attributes are optional and can be specified
			separately for each coded value used; there are no global document-wide properties
			representing these attributes.</para>
		<para>Any combination of allowable metadata attributes can be specified by the author of the
			UBL instance to identify the semantics associated with the coded value in the
			information item. Absent any of these attributes, an implementation must make its own
			judgements about the implied semantics of the code based on the information
			available.</para>
		<para>In some cases, an incomplete set of metadata attributes may be enough to uniquely
			identify an associated code list. For example, a listSchemeURI or schemeURI value is
			probably sufficient to uniquely identify, respectively, a code or identifier. A
			combination of listName or listID with listVersionID for a code, or schemeName and
			schemeVersionID for an identifier, would probably also be sufficient.</para>
		<para>In the extreme case, all code list information associated with a coded value may be
			missing; for example:</para>
		<itemizedlist spacing="compact" mark="none">
			<listitem>
			<para>&lt;cbc:DocumentCurrencyCode&gt;USD&lt;/cbc:DocumentCurrencyCode&gt;</para>
			</listitem>
		</itemizedlist>
		<para>There is no harm in omitting code list identification for this code value if the
			application can safely assume that a value of "USD" for DocumentCurrencyCode means U.S.
			Dollar, which is usually a safe assumption if the instance comes from a known trading
			partner.</para>
		<para>Omission of code list metadata can be useful when it is desired to leave the exact
			version unspecified, as for example when making updates to a particular code list within
			a particular trading community. Omitting the metadata attributes associating instance
			data with a particular release of a code list makes it unnecessary to change instance
			generation at the moment the update is deployed. This assumes, of course, that such
			changes are being managed out-of-band by protocols within the community.</para>
		<para>Identifying metadata should be included in the instance if the sender thinks the
			receiver might misinterpret the code. And if an information item allows the union of two
			lists, and there happens to be an overlap between the two lists such that one or more
			codes appear on both lists, then identifying metadata must be used to unambiguously
			specify which code is intended.</para>
	</appendix>
	<appendix id="appendixB">
		<title>UBL-approved Acronyms and Abbreviations (Informative)</title>
		<para>The information included in this appendix is historical and has been included for
			informational purposes only.</para>
		<table>
			<caption>Abbreviation and Acronym Table for UBL 2.0</caption>
			<tr>
				<td>Credit Card Verification Numbering System</td>
				<td>CV2</td>
			</tr>
			<tr>
				<td>Identifier</td>
				<td>ID</td>
			</tr>
			<tr>
				<td>Uniform Resource Identifier</td>
				<td>URI</td>
			</tr>
			<tr>
				<td>United Nations Dangerous Goods</td>
				<td>UNDG</td>
			</tr>
			<tr>
				<td>Universal Business Language</td>
				<td>UBL</td>
			</tr>
			<tr>
				<td>Universally Unique Identifier</td>
				<td>UUID</td>
			</tr>
		</table>

	</appendix>
	<appendix id="appendixC">
		<title role="AppendixHeading1">Technical Terminology (Informative)</title>
		<informaltable>
			<tgroup cols="2">
				<colspec colwidth="30%" colname="col1"/>
				<colspec colwidth="70%" colname="col2"/>
				<tbody>

					<row>
						<entry>
							<para id="para-1.13.2.1.3.2.1.1">Aggregate Business Information Entity
								(ABIE)</para>
						</entry>
						<entry>
							<para id="para-1.13.2.1.3.2.2.1">A collection of related pieces of
								business information that together convey a distinct business
								meaning in a specific Business Context. Expressed in modelling
								terms, it is the representation of an Object Class, in a specific
								Business Context.</para>
						</entry>
					</row>
					<row>
						<entry>
							<para id="para-1.13.2.1.3.3.1.1">Application-level validation</para>
						</entry>
						<entry>
							<para id="para-1.13.2.1.3.3.2.1">Adherence to business requirements,
								such as valid account numbers.</para>
						</entry>
					</row>
					<row>
						<entry>
							<para id="para-1.13.2.1.3.4.1.1">Assembly</para>
						</entry>
						<entry>
							<para id="para-1.13.2.1.3.4.2.1">Using parts of the library of reusable
								UBL components to create a new kind of business document
								type.</para>
						</entry>
					</row>
					<row>
						<entry>
							<para id="para-1.13.2.1.3.5.1.1">Business Context</para>
						</entry>

						<entry>
							<para id="para-1.13.2.1.3.5.2.1">Defines a context in which a business
								has chosen to employ an information entity.</para>
							<para id="para-1.13.2.1.3.5.2.2">The formal description of a specific
								business circumstance as identified by the values of a set of
								Context Categories allowing different business circumstances to be
								uniquely distinguished.</para>
						</entry>
					</row>
					<row>
						<entry>
							<para id="para-1.13.2.1.3.6.1.1">Business Object</para>
						</entry>
						<entry>
							<para id="para-1.13.2.1.3.6.2.1">An unambiguously identified, specified,
								referenceable, registerable, and re-useable scenario or scenario
								component of a business transaction.</para>
							<para id="para-1.13.2.1.3.6.2.2">The term business object is used in two
								distinct but related ways, with slightly different meanings for each
								usage:</para>
							<para id="para-1.13.2.1.3.6.2.3">In a business model, business objects
								describe its business context. The business objects capture business
								concepts and express an abstract view of the business's "real
								world". The term "modeling business object" is used to designate
								this usage.</para>
							<para id="para-1.13.2.1.3.6.2.4">In a design for a software system or in
								program code, business objects reflect how business concepts are
								represented in software. The term "system business objects" is used
								to designate this usage.</para>
						</entry>
					</row>
					<row>
						<entry>
							<para id="para-1.13.2.1.3.7.1.1">Business semantic(s)</para>
						</entry>
						<entry>
							<para id="para-1.13.2.1.3.7.2.1">The precise meaning of words from a
								business perspective.</para>
						</entry>
					</row>
					<row>
						<entry>
							<para id="para-1.13.2.1.3.8.1.1">Business Term</para>
						</entry>
						<entry>
							<para id="para-1.13.2.1.3.8.2.1">A synonym under which the Core
								Component or Business Information Entity is commonly known and used
								in the business. A Core Component or Business Information Entity may
								be known by several business terms or synonyms.</para>
						</entry>
					</row>
					<row>
						<entry>
							<para id="para-1.13.2.1.3.9.1.1">Class</para>
						</entry>
						<entry>
							<para id="para-1.13.2.1.3.9.2.1">A description of a set of objects that
								share the same attributes, operations, methods, relationships, and
								semantics. A class may use a set of interfaces to specify
								collections of operations it provides to its environment.</para>
						</entry>
					</row>
					<row>
						<entry>
							<para id="para-1.13.2.1.3.10.1.1">Class diagram</para>
						</entry>
						<entry>
							<para id="para-1.13.2.1.3.10.2.1">(OMG Distilled) Shows Static structure
								of concepts, types, and classes. Concepts show how users think about
								the world; types show interfaces of software components; classes
								show implementation of software components.</para>
							<para id="para-1.13.2.1.3.10.2.2">(Rational Unified Process) A diagram
								that shows a collection of declarative (static) model elements, such
								as classes, types, and their contents and relationships.</para>
						</entry>
					</row>
					<row>
						<entry>
							<para id="para-1.13.2.1.3.11.1.1">Classification scheme</para>
						</entry>
						<entry>
							<para id="para-1.13.2.1.3.11.2.1">Officially supported scheme to
								describe a given Context Category.</para>
						</entry>
					</row>

					<row>
						<entry>
							<para id="para-1.13.2.1.3.16.1.1">Document schema</para>
						</entry>

						<entry>
							<para id="para-1.13.2.1.3.16.2.1">A schema document corresponding to a
								single namespace, which is likely to include or import schema
								modules.</para>
						</entry>
					</row>
					<row>
						<entry>
							<para id="para-1.13.2.1.3.17.1.1">Core Component</para>
						</entry>
						<entry>
							<para id="para-1.13.2.1.3.17.2.1">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.</para>
						</entry>
					</row>
					<row>
						<entry>
							<para id="para-1.13.2.1.3.18.1.1">Core Component Type</para>
						</entry>
						<entry>
							<para id="para-1.13.2.1.3.18.2.1">A Core Component which consists of one
								and only one Content Component that carries the actual content plus
								one or more Supplementary Components giving an essential extra
								definition to the Content Component. Core Component Types do not
								have business semantics.</para>
						</entry>
					</row>
					<row>
						<entry>
							<para id="para-1.13.2.1.3.19.1.1">Data type</para>
						</entry>
						<entry>
							<para id="para-1.13.2.1.3.19.2.1">(XSD) A descriptor of a set of values
								that lack identity and whose operations do not have side effects.
								XSD data types include primitive pre-defined types and
								user-definable types. Pre-defined types include numbers, string, and
								time. User-definable types include enumerations. </para>
							<para id="para-1.13.2.1.3.19.2.2">(CCTS) Defines the set of valid values
								that can be used for a particular Basic Core Component Property or
								Basic Business Information Entity Property. It is defined by
								specifying restrictions on the Core Component Type that forms the
								basis of the data type.</para>
						</entry>
					</row>

					<row>
						<entry>
							<para id="para-1.13.2.1.3.21.1.1">Instance</para>
						</entry>
						<entry>
							<para id="para-1.13.2.1.3.21.2.1">An individual entity satisfying the
								description of a class or type. In XML, an individual document of a
								certain type (a specific purchase order, invoice, etc.).</para>
						</entry>
					</row>
					<row>
						<entry>
							<para id="para-1.13.2.1.3.22.1.1">Instance constraint checking</para>
						</entry>
						<entry>
							<para id="para-1.13.2.1.3.22.2.1">Additional validation checking of an
								instance, beyond what XSD makes available, that relies only on
								constraints describable in terms of the instance and not additional
								business knowledge; e.g., checking co-occurrence constraints across
								elements and attributes. Such constraints might be described using
								Schematron, for example.</para>
						</entry>
					</row>

					<row>
						<entry>
							<para id="para-1.13.2.1.3.24.1.1">Intermediate element</para>
						</entry>
						<entry>
							<para id="para-1.13.2.1.3.24.2.1">An element not at the top level that
								is of a complex type, only containing other elements and
								attributes.</para>
						</entry>
					</row>
					<row>
						<entry>
							<para id="para-1.13.2.1.3.25.1.1">Internal schema module</para>
						</entry>
						<entry>
							<para id="para-1.13.2.1.3.25.2.1">A schema module that does not declare
								a target namespace.</para>
						</entry>
					</row>
					<row>
						<entry>
							<para id="para-1.13.2.1.3.26.1.1">Leaf element</para>
						</entry>
						<entry>
							<para id="para-1.13.2.1.3.26.2.1">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>
						</entry>
					</row>
					<row>
						<entry>
							<para id="para-1.13.2.1.3.27.1.1">Lower-level element</para>
						</entry>
						<entry>
							<para id="para-1.13.2.1.3.27.2.1">An element that appears inside a
								business message. Lower-level elements consist of intermediate and
								leaf level.</para>
						</entry>
					</row>
					<row>
						<entry>
							<para id="para-1.13.2.1.3.28.1.1">Object Class</para>
						</entry>
						<entry>
							<para id="para-1.13.2.1.3.28.2.1">The logical data grouping (in a
								logical data model) to which a data element belongs (ISO11179). The
								Object Class is the part of a Core Component's Dictionary Entry Name
								that represents an activity or object in a specific Context.</para>
						</entry>
					</row>
					<row>
						<entry>
							<para id="para-1.13.2.1.3.29.1.1">Namespace schema module</para>
						</entry>
						<entry>
							<para id="para-1.13.2.1.3.29.2.1">A schema module that declares a target
								namespace and is likely to include or import schema modules.</para>
						</entry>
					</row>
					<row>
						<entry>
							<para id="para-1.13.2.1.3.30.1.1">Naming convention</para>
						</entry>
						<entry>
							<para id="para-1.13.2.1.3.30.2.1">The set of rules that together
								comprise how the Dictionary Entry Name for Core Components and
								Business Information Entities are constructed.</para>
						</entry>
					</row>
					<row>
						<entry>
							<para id="para-1.13.2.1.3.31.1.1">(XML) Schema</para>
						</entry>
						<entry>
							<para id="para-1.13.2.1.3.31.2.1">An XML Schema consists of components
								such as type definitions and element declarations. These can be used
								to assess the validity of well-formed element and attribute
								information items (as defined in [XSD]), and furthermore may specify
								augmentations to those items and their descendants.</para>
						</entry>
					</row>
					<row>
						<entry>
							<para id="para-1.13.2.1.3.32.1.1">Schema module</para>
						</entry>
						<entry>
							<para id="para-1.13.2.1.3.32.2.1">A schema that can be included or
								imported by other schemas.</para>
						</entry>
					</row>
					<row>
						<entry>
							<para id="para-1.13.2.1.3.33.1.1">Schema processing</para>
						</entry>
						<entry>
							<para id="para-1.13.2.1.3.33.2.1">Schema validation checking plus
								provision of default values and provision of new infoset
								properties.</para>
						</entry>
					</row>
					<row>
						<entry>
							<para id="para-1.13.2.1.3.34.1.1">Schema validation</para>
						</entry>
						<entry>
							<para id="para-1.13.2.1.3.34.2.1">The process of programmatically
								checking a document instance for adherence to an XSD schema.</para>
						</entry>
					</row>
					<row>
						<entry>
							<para id="para-1.13.2.1.3.35.1.1">Semantic</para>
						</entry>
						<entry>
							<para id="para-1.13.2.1.3.35.2.1">Relating to meaning in language;
								relating to the connotations of words.</para>
						</entry>
					</row>
					<row>
						<entry>
							<para id="para-1.13.2.1.3.36.1.1">Top-level element</para>
						</entry>
						<entry>
							<para id="para-1.13.2.1.3.36.2.1">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>
						</entry>
					</row>
					<row>
						<entry>
							<para id="para-1.13.2.1.3.37.1.1">Type</para>
						</entry>
						<entry>
							<para id="para-1.13.2.1.3.37.2.1">Description of a set of entities that
								share common characteristics, relations, attributes, and
								semantics.</para>
						</entry>
					</row>
				</tbody>
			</tgroup>
		</informaltable>
	</appendix>

<appendix id="checklist">
<title>UBL NDR Checklist</title>
<para>The following checklist reproduces all the UBL XML naming and design rules defined in
            this document. The checklist is in alphabetical
            sequence as follows:
        </para><itemizedlist spacing="compact"><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 colnum="1" colname="col1" colwidth="1.00*" />
<colspec colnum="2" colname="col2" colwidth="7.58*" />
<thead>
<row>
<entry namest="col1" nameend="col2" align="center">Code List Rules</entry>
</row>
</thead>
<tbody>
<row><entry colname="col1">CDL1</entry>
<entry colname="col2">
		  All UBL codes MUST be part of a UBL or externally maintained code list.</entry>
</row>
<row><entry colname="col1">CDL2</entry>
<entry colname="col2">
		  The UBL Library SHOULD identify and use external standardized code lists rather
		  than develop its own UBL-native code lists.</entry>
</row>
<row><entry colname="col1">CDL3</entry>
<entry colname="col2">
		  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.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<informaltable>
<tgroup cols="2">
<colspec colnum="1" colname="col1" colwidth="1.00*" />
<colspec colnum="2" colname="col2" colwidth="7.58*" />
<thead>
<row>
<entry namest="col1" nameend="col2" align="center">ComplexType Definition rules</entry>
</row>
</thead>
<tbody>
<row><entry colname="col1">CTD1</entry>
<entry colname="col2"> For every class identified in the UBL
				model, a named xsd:complexType MUST be defined.</entry>
</row>
<row><entry colname="col1">CTD2</entry>
<entry colname="col2"> Every CCTS ABIE xsd:complexType definition
					 content model MUST contain an xsd:sequence element containing the
					 appropriate global element declarations.</entry>
</row>
<row><entry colname="col1">CTD3</entry>
<entry colname="col2"> Every CCTS BBIE Property xsd:complexType
					 definition content model MUST contain an xsd:simpleContent element.</entry>
</row>
<row><entry colname="col1">CTD4</entry>
<entry colname="col2"> Every CCTS BBIE Property xsd:complexType
					 content model xsd:simpleContent element MUST consist of an xsd:extension
					 element.</entry>
</row>
<row><entry colname="col1">CTD5</entry>
<entry colname="col2"> Every CCTS BBIE Property xsd:complexType
					 xsd:base attribute value MUST be the UN/CEFACT Unqualified
					 Datatype or UBL Qualified Datatype as appropriate.</entry>
</row>
<row><entry colname="col1">CTD6</entry>
<entry colname="col2"> For every CCTS Qualified Datatype used in the
						UBL model, a named xsd:complexType or xsd:simpleType MUST be defined.</entry>
</row>
<row><entry colname="col1">CTD20</entry>
<entry colname="col2"> A CCTS Qualified DataType MUST be based on
						an CCTS Unqualified Datatype and add some semantic and/or technical restriction to
						the CCTS Unqualified Datatype.</entry>
</row>
<row><entry colname="col1">CTD21</entry>
<entry colname="col2"> The name of a UBL Qualified DataType MUST be the qualifier
								term followed by the name of its base CCTS Unqualified
								DataType with separators and spaces removed.</entry>
</row>
<row><entry colname="col1">CTD22</entry>
<entry colname="col2"> 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>MUST be defined as an
        xsd:simpleType,</para>
    <para>MUST contain one
        xsd:restriction element, and</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 colname="col1">CTD23</entry>
<entry colname="col2"> Every CCTS Qualified Datatype based on a
						CCTS Unqualified Datatype xsd:complexType whose supplementary components do not map
						directly to the properties of an XSD built-in data type
    <para>MUST be defined as an
        xsd:complexType,</para>
    <para>MUST contain one
        xsd:simpleContent element,</para>
    <para>MUST contain one
        xsd:restriction element, and</para>
    <para>MUST include the Unqualified
        Datatype as its xsd:base attribute.</para>
</entry>
</row>
<row><entry colname="col1">CTD24</entry>
<entry colname="col2"> Every CCTS Qualified Datatype based on a
						CCTS Unqualified Datatype xsd:simpleType
    <para>MUST contain one
        xsd:restriction element</para>
    <para>MUST include the unqualified
        datatype as its xsd:base attribute.</para></entry>
</row>
<row><entry colname="col1">CTD25</entry>
<entry colname="col2"> For every CCTS BBIE Property identified in
				  the UBL model, a named xsd:complexType MUST be defined.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<informaltable>
<tgroup cols="2">
<colspec colnum="1" colname="col1" colwidth="1.00*" />
<colspec colnum="2" colname="col2" colwidth="7.58*" />
<thead>
<row>
<entry namest="col1" nameend="col2" align="center">Complex Type Naming rules</entry>
</row>
</thead>
<tbody>
<row><entry colname="col1">CTN1</entry>
<entry colname="col2"> A UBL xsd:complexType 
							name based on a CCTS ABIE MUST be the CCTS Dictionary Entry Name
				with the separators removed and with the "Details" suffix replaced with
				"Type".</entry>
</row>
<row><entry colname="col1">CTN2</entry>
<entry colname="col2"> A UBL xsd:complexType
			 name based on a CCTS BBIE Property MUST be the CCTS
			 Dictionary Entry Name shared Property Term and its
			 qualifiers and the Representation Term of the BBIE with the
			 separators removed and with the "Type" suffix appended
			 after the Representation Term.</entry>
</row>
<row><entry colname="col1">CTN6</entry>
<entry colname="col2"> A UBL xsd:complexType name based on a CCTS BBIE Property and with
a CCTS BBIE Representation Term of "Text" MUST have the word
"Text" removed from the end of its name.</entry>
</row>
<row><entry colname="col1">CTN7</entry>
<entry colname="col2"> 
							 A UBL xsd:complexType name based on a CCTS BBIE Property and with
a CCTS BBIE Representation Term of "Identifier" MUST replace
"Identifier" with "ID" at the end of its name.</entry>
</row>
<row><entry colname="col1">CTN8</entry>
<entry colname="col2"> A UBL xsd:complexType name based on a CCTS BBIE Property MUST
remove all duplication of words that occurs as a result of
duplicate Property Terms and Representation Terms.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<informaltable>
<tgroup cols="2">
<colspec colnum="1" colname="col1" colwidth="1.00*" />
<colspec colnum="2" colname="col2" colwidth="7.58*" />
<thead>
<row>
<entry namest="col1" nameend="col2" align="center">Documentation rules</entry>
</row>
</thead>
<tbody>
<row><entry colname="col1">DOC1</entry>
<entry colname="col2"> The xsd:documentation element for every
data type MUST contain a set of annotations in the following order (as defined in CCTS Section 7): 
    <itemizedlist spacing="compact">
        <listitem>
            <para>DictionaryEntryName
                (mandatory)</para>
        </listitem>
        <listitem>
            <para>Version (mandatory)</para>
        </listitem>
        <listitem>
            <para>Definition (mandatory)</para>
        </listitem>
        <listitem>
            <para>RepresentationTerm (mandatory)</para>
        </listitem>
        <listitem>
            <para>QualifierTerm(s) (mandatory, where used)</para>
        </listitem>
        <listitem>
            <para>UniqueIdentifier
                (mandatory)</para>
        </listitem>
        <listitem>
            <para>Usage Rule(s) (optional)</para>
        </listitem>
        <listitem>
            <para>Content Component Restriction
                (optional)</para>
        </listitem>
    </itemizedlist></entry>
    
</row>
<row><entry colname="col1">DOC2</entry>
<entry colname="col2"> 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 set of
				annotations in the following order:
    <itemizedlist spacing="compact">
        <listitem>
            <para>RestrictionType (mandatory):
                Defines the type of format restriction that applies to the Content
                Component.</para>
        </listitem>
        <listitem>
            <para>RestrictionValue (mandatory):
                The actual value of the format restriction that applies to the Content
                Component.</para>
        </listitem>
        <listitem>
            <para>ExpressionType (optional):
                Defines the type of the regular expression of the restriction value.</para>
        </listitem>
    </itemizedlist></entry>
</row>
<row><entry colname="col1">DOC3</entry>
<entry colname="col2"> 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
				set of annotations in the following order:
				<itemizedlist spacing="compact">
    <listitem>
        <para>SupplementaryComponentName
            (mandatory): Identifies the Supplementary Component to which the restriction
            applies.</para>
    </listitem>
    <listitem>
        <para>RestrictionValue (mandatory,
            repetitive): The actual value(s) that is (are) valid for the Supplementary
            Component.</para>
    </listitem>
    </itemizedlist></entry>
</row>
<row><entry colname="col1">DOC4</entry>
<entry colname="col2"> The xsd:documentation element for every
				BBIE MUST contain a set of annotations
				in the following order:
    <itemizedlist spacing="compact">
        <listitem>
            <para>ComponentType (mandatory): The
                type of component to which the object belongs. For BBIEs 
                this MUST be "BBIE".</para>
        </listitem>
        <listitem>
            <para>DictionaryEntryName (mandatory):
                The official name of a BBIE.</para>
        </listitem>
        <listitem>
            <para>Version (optional): An
                indication of the evolution over time of the BBIE
                Entity.</para>
        </listitem>
        <listitem>
            <para>Definition (mandatory): The
                meaning of a BBIE.</para>
        </listitem>
        <listitem>
            <para>Cardinality (mandatory):
                Indicates whether the BBIE represents a
                not-applicable, optional, mandatory, or repetitive characteristic of the
                Aggregate Business Information Entity to which it belongs.</para>
        </listitem>
        <listitem>
            <para>ObjectClassQualifier (optional):
                The qualifier for the Object Class.</para>
        </listitem>
        <listitem>
            <para>ObjectClass (mandatory): The
                Object Class containing the BBIE.</para>
        </listitem>
        <listitem>
            <para>PropertyTermQualifier
                (optional): A  word or words which help define and differentiate
                a BBIE.</para>
        </listitem>
        <listitem>
            <para>PropertyTerm (mandatory):
                Conveys the characteristic or Property of the
                Object Class.</para>
        </listitem>
        <listitem>
            <para>RepresentationTerm (mandatory):
                Describes the form in which the BBIE is represented.</para>
        </listitem>
        <listitem>
            <para>DataTypeQualifier (optional):
                A meaningful name that differentiates the data type of the BBIE from its underlying Core Component Type.</para>
        </listitem>
        <listitem>
            <para>DataType (mandatory): Defines
                the data type used for the BBIE.</para>
        </listitem>
        <listitem>
            <para>AlternativeBusinessTerms
                (optional): Any synonymous terms under which the BBIE
                is commonly known and used in the business.</para>
        </listitem>
        <listitem>
            <para>Examples (optional): Examples
                of possible values for the BBIE.</para>
        </listitem>
    </itemizedlist></entry>
</row>
<row><entry colname="col1">DOC5</entry>
<entry colname="col2"> The xsd:documentation element for every
				ABIE MUST contain a set of
				annotations in the following order:
    <itemizedlist spacing="compact">
        <listitem>
            <para>ComponentType (mandatory): The
                type of component to which the object belongs. For
                ABIEs this MUST be "ABIE".</para>
        </listitem>
        <listitem>
            <para>DictionaryEntryName
                (mandatory): The official name of the ABIE
                .</para>
        </listitem>
        <listitem>
            <para>Version (optional): An
                indication of the evolution over time of the ABIE.</para>
        </listitem>
        <listitem>
            <para>Definition (mandatory): The
                meaning of the ABIE.</para>
        </listitem>
        <listitem>
            <para>ObjectClassQualifier
                (optional): The qualifier for the Object Class.</para>
        </listitem>
        <listitem>
            <para>ObjectClass (mandatory): The
                Object Class represented by the ABIE.</para>
        </listitem>
        <listitem>
            <para>AlternativeBusinessTerms
                (optional): Any synonymous terms under which the ABIE
                is commonly known and used in the business.</para>
        </listitem>
    </itemizedlist></entry>
</row>
<row><entry colname="col1">DOC6</entry>
<entry colname="col2"> The xsd:documentation element for every
				ASBIE element declaration MUST contain a
				set of annotations in the following order:
    <itemizedlist spacing="compact">
        <listitem>
            <para>ComponentType (mandatory): The
                type of component to which the object belongs. For ASBIEs this MUST be "ASBIE".</para>
        </listitem>
        <listitem>
            <para>DictionaryEntryName
                (mandatory): The official name of the ASBIE.</para>
        </listitem>
        <listitem>
            <para>Version (optional): An
                indication of the evolution over time of the ASBIE.</para>
        </listitem>
        <listitem>
            <para>Definition (mandatory): The
                meaning of the ASBIE.</para>
        </listitem>
        <listitem>
            <para>Cardinality (mandatory):
                Indicates whether the ASBIE represents an
                optional, mandatory, or repetitive assocation.</para>
        </listitem>
        <listitem>
            <para>ObjectClass (mandatory): The
                Object Class containing the ASBIE.</para>
        </listitem>
        <listitem>
            <para>PropertyTermQualifier
                (optional): A word or words which help define and identify
                the ASBIE.</para>
        </listitem>
        <listitem>
            <para>PropertyTerm (mandatory):
                Represents the ASBIE contained by
                the Association Business Information Entity.</para>
        </listitem>
        <listitem>
            <para>AssociatedObjectClassQualifier
                (optional): The Associated Object Class Qualifiers describe the "context" of the
                relationship with another ABIE. That is, it is the role the contained ABIE plays within its association with the containing
                ABIE.</para>
        </listitem>
        <listitem>
            <para>AssociatedObjectClass
                (mandatory): The Object Class at the other end of
                the association. It represents the ABIE
                contained by the ASBIE.</para>
        </listitem>
    </itemizedlist></entry>
</row>
<row><entry colname="col1">DOC8</entry>
<entry colname="col2"> The xsd:documentation element for every
				Supplementary Component attribute declaration MUST contain a set of
				annotations in the following order:
    <itemizedlist spacing="compact">
        <listitem>
            <para>Name (mandatory) Name in the
                Registry of a Supplementary Component of a Core Component Type.</para>
        </listitem>
        <listitem>
            <para>Definition (mandatory): An explanation of the meaning of a Supplementary
                Component and its relevance for the related Core Component Type.</para>
        </listitem>
        <listitem>
            <para>Primitive type (mandatory):
                The PrimitiveType to be used for the representation of the value of a Supplementary
                Component.</para>
        </listitem>
        <listitem>
            <para>Possible Value(s) (optional):
                Possible values of  Supplementary Components.</para>
        </listitem>
    </itemizedlist></entry>
</row>
<row><entry colname="col1">DOC9</entry>
<entry colname="col2"> 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:
    <itemizedlist spacing="compact">
        <listitem>
            <para>Restriction Value(s)
                (mandatory): The actual value(s) that is (are) valid for the Supplementary
                Component.</para>
        </listitem>
    </itemizedlist></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<informaltable>
<tgroup cols="2">
<colspec colnum="1" colname="col1" colwidth="1.00*" />
<colspec colnum="2" colname="col2" colwidth="7.58*" />
<thead>
<row>
<entry namest="col1" nameend="col2" align="center">Element Declaration rules</entry>
</row>
</thead>
<tbody>
<row><entry colname="col1">ELD2</entry>
<entry colname="col2"> All element declarations MUST be global.</entry>
</row>
<row><entry colname="col1">ELD3</entry>
<entry colname="col2"> For every class and property identified in
				the UBL model, a global element bound to the corresponding xsd:complexType MUST
				be declared.</entry>
</row>
<row><entry colname="col1">ELD4</entry>
<entry colname="col2"> When a CCTS ASBIE is unqualified, it is
				bound via reference to the global CCTS ABIE element with which it is
				associated.</entry>
</row>
<row><entry colname="col1">ELD6</entry>
<entry colname="col2"> The code list xsd:import element MUST
			 contain the namespace and schema location attributes.</entry>
</row>
<row><entry colname="col1">ELD7</entry>
<entry colname="col2"> Empty elements MUST not be declared, except
			 in the case of extension where the UBL Extensions element
						is used.</entry>
</row>
<row><entry colname="col1">ELD11</entry>
<entry colname="col2"> When a CCTS ASBIE is qualified, a new
				element MUST be declared and bound to the xsd:complexType of its associated
				CCTS ABIE.</entry>
</row>
<row><entry colname="col1">ELD12</entry>
<entry colname="col2"> The UBL Extensions element MUST be
			 declared as the first child of the document element with xsd:minOccurs="0".</entry>
</row>
<row><entry colname="col1">ELD13</entry>
<entry colname="col2"> The UBLProfileID element MUST be
			 declared immediately following the UBL Extensions element with xsd:minOccurs="0".</entry>
</row>
<row><entry colname="col1">ELD14</entry>
<entry colname="col2"> The UBLSubsetID element MUST be declared
			 immediately following the UBLProfileID element with xsd:minOccurs="0".</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<informaltable>
<tgroup cols="2">
<colspec colnum="1" colname="col1" colwidth="1.00*" />
<colspec colnum="2" colname="col2" colwidth="7.58*" />
<thead>
<row>
<entry namest="col1" nameend="col2" align="center">Element Naming rules</entry>
</row>
</thead>
<tbody>
<row><entry colname="col1">ELN1</entry>
<entry colname="col2"> 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 "Type" removed.</entry>
</row>
<row><entry colname="col1">ELN2</entry>
<entry colname="col2"> A UBL global element name based on a
				CCTS BBIE Property MUST be the same as the name of the corresponding
				xsd:complexType to which it is bound, with the word "Type" removed.</entry>
</row>
<row><entry colname="col1">ELN3</entry>
<entry colname="col2"> 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 Dictionary Entry Name separators MUST be removed.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<informaltable>
<tgroup cols="2">
<colspec colnum="1" colname="col1" colwidth="1.00*" />
<colspec colnum="2" colname="col2" colwidth="7.58*" />
<thead>
<row>
<entry namest="col1" nameend="col2" align="center">General Naming rules</entry>
</row>
</thead>
<tbody>
<row><entry colname="col1">GNR1</entry>
<entry colname="col2"> UBL XML element and type names MUST be in
			 the English language, using the primary English spellings provided in the
			 Oxford English Dictionary.</entry>
</row>
<row><entry colname="col1">GNR2</entry>
<entry colname="col2"> UBL XML element and type names MUST be
			 consistently derived from CCTS conformant Dictionary Entry Names.</entry>
</row>
<row><entry colname="col1">GNR3</entry>
<entry colname="col2"> UBL XML element and type names constructed
			 from CCTS Dictionary Entry Names MUST NOT include periods, spaces, other
			 separators, or characters not allowed by XSD.</entry>
</row>
<row><entry colname="col1">GNR4</entry>
<entry colname="col2"> UBL XML element names and simple and complex
			 type names MUST NOT use acronyms, abbreviations, or other word truncations,
			 except those in the list of exceptions maintained and published by the UBL
			 TC.</entry>
</row>
<row><entry colname="col1">GNR6</entry>
<entry colname="col2"> The acronyms and abbreviations listed in
			 the UBL-approved list MUST always be used in place of the word or phrase they
			 represent.</entry>
</row>
<row><entry colname="col1">GNR7</entry>
<entry colname="col2"> UBL XML element and type names MUST be in
			 singular form unless the concept itself is plural.</entry>
</row>
<row><entry colname="col1">GNR8</entry>
<entry colname="col2"> The UpperCamelCase (UCC) convention MUST be
			 used for naming elements and types.</entry>
</row>
<row><entry colname="col1">GNR9</entry>
<entry colname="col2"> The lowerCamelCase (LCC) convention MUST be
			 used for naming attributes.</entry>
</row>
<row><entry colname="col1">GNR10</entry>
<entry colname="col2"> Acronyms and abbreviations at the
			 beginning of an attribute name MUST appear in all lower case. 
			 Acronyms and abbreviations elsewhere in an attribute name MUST appear in upper case.</entry>
</row>
<row><entry colname="col1">GNR11</entry>
<entry colname="col2"> Acronyms and abbreviations MUST appear in
			 all upper case for all element and type names.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<informaltable>
<tgroup cols="2">
<colspec colnum="1" colname="col1" colwidth="1.00*" />
<colspec colnum="2" colname="col2" colwidth="7.58*" />
<thead>
<row>
<entry namest="col1" nameend="col2" align="center">General Type Definition Rules</entry>
</row>
</thead>
<tbody>
<row><entry colname="col1">GTD1</entry>
<entry colname="col2"> All types MUST be named.</entry>
</row>
<row><entry colname="col1">GTD2</entry>
<entry colname="col2"> The predefined XML schema type xsd:anyType
				MUST NOT be used.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<informaltable>
<tgroup cols="2">
<colspec colnum="1" colname="col1" colwidth="1.00*" />
<colspec colnum="2" colname="col2" colwidth="7.58*" />
<thead>
<row>
<entry namest="col1" nameend="col2" align="center">General XML Schema Rules</entry>
</row>
</thead>
<tbody>
<row><entry colname="col1">GXS1</entry>
<entry colname="col2"> Except in the case of
			 extension, where the "UBL Extensions" element is used, UBL schemas SHOULD conform to the
			 following physical layout as applicable: See .</entry>
</row>
<row><entry colname="col1">GXS2</entry>
<entry colname="col2"> UBL MUST provide two schemas for each
				transaction. One normative schema shall be fully annotated. One non-normative
				schema shall be a run-time schema devoid of documentation.</entry>
</row>
<row><entry colname="col1">GXS3</entry>
<entry colname="col2"> Built-in xsd:simpleTypes SHOULD be used
			 wherever possible.</entry>
</row>
<row><entry colname="col1">GXS4</entry>
<entry colname="col2"> All XSD constructs in UBL schema
    and schema modules MUST contain the following namespace declaration on the xsd:schema element: 
	<para><blockquote><para><literal>xmlns:xsd="http://www.w3.org/2001/XMLSchema"</literal></para></blockquote></para>
        </entry>
</row>
<row><entry colname="col1">GXS5</entry>
<entry colname="col2"> The xsd:substitutionGroup feature MUST NOT
			 be used.</entry>
</row>
<row><entry colname="col1">GXS6</entry>
<entry colname="col2"> The xsd:final attribute MUST be used to
			 control extensions where there is a desire to prohibit further
			 extensions.</entry>
</row>
<row><entry colname="col1">GXS7</entry>
<entry colname="col2"> xsd:notation MUST NOT be used.</entry>
</row>
<row><entry colname="col1">GXS8</entry>
<entry colname="col2"> xsd:all MUST NOT be
			 used.</entry>
</row>
<row><entry colname="col1">GXS9</entry>
<entry colname="col2"> The xsd:choice element SHOULD NOT be used
			 where customization and extensibility are a concern.</entry>
</row>
<row><entry colname="col1">GXS10</entry>
<entry colname="col2"> xsd:include can only be used when the including
		  schema is in the same namespace as the included schema.</entry>
</row>
<row><entry colname="col1">GXS11</entry>
<entry colname="col2"> The xsd:union technique MUST NOT be used
			 except for code lists.</entry>
</row>
<row><entry colname="col1">GXS12</entry>
<entry colname="col2"> UBL schemas SHOULD NOT use
			 xsd:appinfo. If used, xsd:appinfo MUST be used only to convey non-normative
			 information.</entry>
</row>
<row><entry colname="col1">GXS15</entry>
<entry colname="col2"> 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.</entry>
</row>
<row><entry colname="col1">GXS16</entry>
<entry colname="col2"> The built in xsd:nillable attribute MUST
			 NOT be used for any UBL declared element.</entry>
</row>
<row><entry colname="col1">GXS14</entry>
<entry colname="col2"> xsd:any MUST NOT be used
			 except within the ExtensionContentType type definition, and with
			 xsd:processContents= "skip" for non-UBL namespaces.</entry>
</row>
<row><entry colname="col1">GXS13</entry>
<entry colname="col2"> Complex type extension or restriction MAY
			 be used where appropriate.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<informaltable>
<tgroup cols="2">
<colspec colnum="1" colname="col1" colwidth="1.00*" />
<colspec colnum="2" colname="col2" colwidth="7.58*" />
<thead>
<row>
<entry namest="col1" nameend="col2" align="center">Instance document rules</entry>
</row>
</thead>
<tbody>
<row><entry colname="col1">IND1</entry>
<entry colname="col2">
		  All UBL instance documents MUST validate to a corresponding
		UBL schema.</entry>
</row>
<row><entry colname="col1">IND2</entry>
<entry colname="col2">
		  All UBL instance documents MUST identify their character encoding within the
		  XML declaration.</entry>
</row>
<row><entry colname="col1">IND3</entry>
<entry colname="col2">
		  In conformance with ISO IEC ITU UN/CEFACT eBusiness 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.</entry>
</row>
<row><entry colname="col1">IND5</entry>
<entry colname="col2">
		  UBL conformant instance documents MUST NOT contain an element devoid of content
		  or containing null values, except in the case of extension, where
		  the UBLExtensionContent element is used.</entry>
</row>
<row><entry colname="col1">IND6</entry>
<entry colname="col2">
		  The absence of a construct or data in a UBL instance document MUST NOT carry
		  meaning.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<informaltable>
<tgroup cols="2">
<colspec colnum="1" colname="col1" colwidth="1.00*" />
<colspec colnum="2" colname="col2" colwidth="7.58*" />
<thead>
<row>
<entry namest="col1" nameend="col2" align="center">Modelling constraint rules</entry>
</row>
</thead>
<tbody>
<row><entry colname="col1">MDC0</entry>
<entry colname="col2"> The sequence of the business information entities that is expressed
						in the UBL model MUST be preserved in the schema.</entry>
</row>
<row><entry colname="col1">MDC1</entry>
<entry colname="col2"> UBL libraries and schemas MUST only use
				  CCTS Core Component Types, except in the case of extension, where the UBLExtensions element is used.</entry>
</row>
<row><entry colname="col1">MDC2</entry>
<entry colname="col2"> XML mixed content MUST NOT be used except where
				  contained in an xsd:documentation element.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<informaltable>
<tgroup cols="2">
<colspec colnum="1" colname="col1" colwidth="1.00*" />
<colspec colnum="2" colname="col2" colwidth="7.58*" />
<thead>
<row>
<entry namest="col1" nameend="col2" align="center">Naming constraint rules</entry>
</row>
</thead>
<tbody>
<row><entry colname="col1">NMC1</entry>
<entry colname="col2"> Each Dictionary Entry Name MUST define one
				and only one fully qualified path (FQP) for an element or attribute.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<informaltable>
<tgroup cols="2">
<colspec colnum="1" colname="col1" colwidth="1.00*" />
<colspec colnum="2" colname="col2" colwidth="7.58*" />
<thead>
<row>
<entry namest="col1" nameend="col2" align="center">Namespace Rules</entry>
</row>
</thead>
<tbody>
<row><entry colname="col1">NMS1</entry>
<entry colname="col2"> Every UBL-defined or -used schema module,
				except internal schema modules, MUST declare a namespace using the
				xsd:targetNamespace attribute.</entry>
</row>
<row><entry colname="col1">NMS2</entry>
<entry colname="col2"> Every UBL-defined or -used major version
				schema set MUST have its own unique namespace.</entry>
</row>
<row><entry colname="col1">NMS3</entry>
<entry colname="col2"> UBL namespaces MUST only contain UBL
				developed schema modules.</entry>
</row>
<row><entry colname="col1">NMS4</entry>
<entry colname="col2"> The namespace names for UBL schemas holding
    committee draft status MUST be of the form 
    urn:oasis:names:tc:ubl:schema:&lt;subtype&gt;:&lt;document-id&gt;</entry>
</row>
<row><entry colname="col1">NMS5</entry>
<entry colname="col2"> The namespace names for UBL schemas holding
				OASIS Standard status MUST be of the
				form
				urn:oasis:names:specification:ubl:schema:&lt;subtype&gt;:&lt;document-id&gt;</entry>
</row>
<row><entry colname="col1">NMS6</entry>
<entry colname="col2"> UBL published namespaces MUST never be
				changed.</entry>
</row>
<row><entry colname="col1">NMS7</entry>
<entry colname="col2"> The UBL Common Aggregate Components 
							schema
					 module MUST reside in its own namespace.</entry>
</row>
<row><entry colname="col1">NMS8</entry>
<entry colname="col2"> The UBL Common Aggregate Components schema
					 module namespace MUST be represented by the namespace prefix "cac" when
					 referenced in other schemas.</entry>
</row>
<row><entry colname="col1">NMS9</entry>
<entry colname="col2"> The UBL Common Basic Components schema module
					 MUST reside in its own namespace.</entry>
</row>
<row><entry colname="col1">NMS10</entry>
<entry colname="col2"> The UBL Common Basic Components schema
					 module namespace MUST be represented by the namespace prefix "cbc" when
					 referenced in other schemas.</entry>
</row>
<row><entry colname="col1">NMS15</entry>
<entry colname="col2"> The UBL Qualified Datatypes schema module
					 MUST reside in its own namespace.</entry>
</row>
<row><entry colname="col1">NMS16</entry>
<entry colname="col2"> The UBL Qualified Datatypes schema module
					 namespace MUST be represented by the namespace prefix "qdt" when referenced in
					 other schemas.</entry>
</row>
<row><entry colname="col1">NMS17</entry>
<entry colname="col2"> The CCTS Unqualified Datatypes schema
					 module namespace MUST be represented by the prefix "udt" when referenced in
					 other schemas.</entry>
</row>
<row><entry colname="col1">NMS18</entry>
<entry colname="col2"> The CommonExtensionComponents schema
					 module namespace MUST be represented by the namespace prefix "ext" when
					 referenced in other schemas.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<informaltable>
<tgroup cols="2">
<colspec colnum="1" colname="col1" colwidth="1.00*" />
<colspec colnum="2" colname="col2" colwidth="7.58*" />
<thead>
<row>
<entry namest="col1" nameend="col2" align="center">Root element declaration rules</entry>
</row>
</thead>
<tbody>
<row><entry colname="col1">RED2</entry>
<entry colname="col2"> The root element MUST be the only global
				  element declared in the document schema.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<informaltable>
<tgroup cols="2">
<colspec colnum="1" colname="col1" colwidth="1.00*" />
<colspec colnum="2" colname="col2" colwidth="7.58*" />
<thead>
<row>
<entry namest="col1" nameend="col2" align="center">Schema structure modularity rules</entry>
</row>
</thead>
<tbody>
<row><entry colname="col1">SSM1</entry>
<entry colname="col2"> UBL schema expressions MAY be split into
			 multiple schema modules.</entry>
</row>
<row><entry colname="col1">SSM2</entry>
<entry colname="col2"> A schema in one UBL namespace that
					 is dependent upon type definitions or element declarations in another schema
					 namespace MUST only import that schema.</entry>
</row>
<row><entry colname="col1">SSM3</entry>
<entry colname="col2"> A schema in one UBL namespace that
					 is dependent upon type definitions or element declarations defined in another
					 schema namespace MUST NOT import the internal schema modules of that schema.</entry>
</row>
<row><entry colname="col1">SSM6</entry>
<entry colname="col2"> All UBL internal 
					schema modules MUST be in
				the same namespace as their corresponding document schema.</entry>
</row>
<row><entry colname="col1">SSM7</entry>
<entry colname="col2"> Each UBL internal schema module MUST be
					named &lt;ParentSchemaModuleName&gt;&lt;InternalSchemaModuleFunction&gt; 
					</entry>
</row>
<row><entry colname="col1">SSM8</entry>
<entry colname="col2"> UBL schema modules MAY be created for
				reusable components.</entry>
</row>
<row><entry colname="col1">SSM9</entry>
<entry colname="col2"> A schema module defining all UBL Common
				  Aggregate Components MUST be created.</entry>
</row>
<row><entry colname="col1">SSM10</entry>
<entry colname="col2"> The UBL Common Aggregate Components schema
				  module MUST be identified as CommonAggregateComponents in the document name
				  within the schema header.</entry>
</row>
<row><entry colname="col1">SSM11</entry>
<entry colname="col2"> A schema module defining all UBL Common
				  Basic Components MUST be created.</entry>
</row>
<row><entry colname="col1">SSM12</entry>
<entry colname="col2"> The UBL Common Basic Components schema
				  module MUST be identified as CommonBasicComponents in the document name within
				  the schema header.</entry>
</row>
<row><entry colname="col1">SSM18</entry>
<entry colname="col2"> A schema module defining all UBL Qualified
					 Datatypes MUST be created.</entry>
</row>
<row><entry colname="col1">SSM19</entry>
<entry colname="col2"> The UBL Qualified Datatypes schema module
					 MUST be identified as QualifiedDatatypes in the document name in the schema
					 header.</entry>
</row>
<row><entry colname="col1">SSM20</entry>
<entry colname="col2"> The UBL Qualified Datatypes schema module
					 MUST import the CCTS Unqualified Datatypes schema module.</entry>
</row>
<row><entry colname="col1">SSM21</entry>
<entry colname="col2"> The UBL extension 
					schema module MUST be
				identified as CommonExtensionComponents in the document name within the schema
				header.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<informaltable>
<tgroup cols="2">
<colspec colnum="1" colname="col1" colwidth="1.00*" />
<colspec colnum="2" colname="col2" colwidth="7.58*" />
<thead>
<row>
<entry namest="col1" nameend="col2" align="center">Versioning rules</entry>
</row>
</thead>
<tbody>
<row><entry colname="col1">VER2</entry>
<entry colname="col2"> Every UBL schema module major version 
		  MUST have an RFC 3121 document-id of the form
		  &lt;modulename&gt;-&lt;major&gt;	
					</entry>
</row>
<row><entry colname="col1">VER4</entry>
<entry colname="col2"> Every minor version release of a UBL schema 
		  module MUST have a document-id of the
			 form
			 &lt;modulename&gt;-&lt;major&gt;</entry>
</row>
<row><entry colname="col1">VER5</entry>
<entry colname="col2"> For UBL minor version changes, the namespace
			 name MUST not change.</entry>
</row>
<row><entry colname="col1">VER6</entry>
<entry colname="col2"> Every UBL schema module major
			 version number MUST be a sequentially assigned integer greater than zero.</entry>
</row>
<row><entry colname="col1">VER7</entry>
<entry colname="col2"> Every UBL schema module minor
			 version number MUST be a sequentially assigned, non-negative integer.</entry>
</row>
<row><entry colname="col1">VER12</entry>
<entry colname="col2"> Every major version
				release of a UBL schema module 
			 MUST capture its version number in the xsd:version
			 attribute of the xsd:schema element in the form 
			 &lt;major&gt;.0</entry>
</row>
<row><entry colname="col1">VER14</entry>
<entry colname="col2"> Every minor version release of a UBL
			 schema module MUST capture its version information in
			 the xsd:version attribute in the form
			 &lt;major&gt;.&lt;non-zero&gt;</entry>
</row>
<row><entry colname="col1">VER15</entry>
<entry colname="col2"> Every UBL document schema MUST declare an
			 optional element named UBLVersionID immediately following the optional UBL
			 Extensions element.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</appendix>

</article>

