<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="NDRProfile-to-HTML.xsl" type="text/xsl"?>
<NDRProfile NDRProfileID="prd-UBL-NDR-2.0" NDRDocumentBaseURI="UBL-NDR-Docbook-20070207.xml"><NDRTitle>Universal Business Language (UBL)</NDRTitle><Status>Draft</Status><Guidance guidanceID="rule-RED2" documentationID="rule-RED2" prefixNumber="2" prefixToken="RED"><GuidanceText>
                     
                  
		   The root element MUST be the only global element declared in document schemas.
                  </GuidanceText><TestCases ruleType="Schematron"><TestCase><CodeExample><![CDATA[
]]></CodeExample></TestCase></TestCases></Guidance><Guidance guidanceID="rule-NMC1" documentationID="rule-NMC1" prefixNumber="1" prefixToken="NMC"><GuidanceText>
                  
                  
		  Each dictionary entry name MUST define one and only one fully qualified path (FQP) for an element or attribute. 
               </GuidanceText></Guidance><Guidance guidanceID="rule-MDC1" documentationID="rule-MDC1" prefixNumber="1" prefixToken="MDC"><Testability>Untestable</Testability><GuidanceText>
                     
                  
		  UBL Libraries and Schemas MUST only use ebXML Core Component approved ccts:CoreComponentTypes, except in the case of extension, where the 'UBLExtensions' element is used.
                  </GuidanceText></Guidance><Guidance guidanceID="rule-MDC2" documentationID="rule-MDC2" prefixNumber="2" prefixToken="MDC"><Testability>Fully-Testable</Testability><GuidanceText>
                     
                  
		  Mixed content MUST NOT be used except where contained in an xsd:documentation element. 
                  </GuidanceText><TestCases ruleType="Schematron"><TestCase><CodeExample><![CDATA[
<?xml version="1.0"?>
<schema xmlns="http://www.ascc.net/xml/schematron">
<title>Mixed Content Model</title>
<ns prefix="xs" uri="http://www.w3.org/2001/XMLSchema"></ns>
<pattern name="MDC4">
    <rule context="*">
        <report test="@mixed = &apos;true&apos;">MDC2:                 
		  Mixed content MUST NOT be used except where contained in an 
		  xsd:documentation element. 
                   </report>
    </rule>
</pattern>
</schema>
]]></CodeExample></TestCase></TestCases></Guidance><Guidance guidanceID="rule-ELD2" documentationID="rule-ELD2" prefixNumber="2" prefixToken="ELD"><Testability>Fully-Testable</Testability><GuidanceText>
                     
                  
		  All element declarations MUST be global 
                  </GuidanceText><TestCases ruleType="Schematron"><TestCase><CodeExample><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.ascc.net/xml/schematron">
    <title>Navy Naming and Design Rules</title>
    <ns prefix="xsi" uri="http://www.w3.org/2000/10/XMLSchema-instance"/>
    <ns prefix="xsd" uri="http://www.w3.org/2001/XMLSchema"/>
    <ns prefix="html" uri="http://www.w3.org/1999/xhtml"/>
    
    <pattern id="ELD" name="Element Rule">
        <rule id="ELD1" context="//xsd:all |
                                 //xsd:choice |
                                 //xsd:complexType |
                                 //xsd:sequence">
            <assert test="xsd:element/@ref">ELD2:                   
		  All element declarations MUST be global             
            </assert>
       </rule>
    </pattern>
 
</schema>
]]></CodeExample></TestCase></TestCases></Guidance><Guidance guidanceID="rule-GXS14" documentationID="rule-GXS14" prefixNumber="14" prefixToken="GXS"><Note>BH:  This is a complex rule.  This would be better handled with 2 rules.</Note><Testability>Fully-Testable</Testability><GuidanceText>
               
                  
		  The xsd:any element MUST NOT be used except within the 'ExtensionContentType' type definition, and with xsd:processContents= "skip" for non-UBL namespaces.
            </GuidanceText><TestCases ruleType="Schematron"><TestCase><CodeExample><![CDATA[
				
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.ascc.net/xml/schematron">
    <title>UBL Naming and Design Rules</title>
    <ns prefix="xsi" uri="http://www.w3.org/2000/10/XMLSchema-instance"/>
    <ns prefix="xsd" uri="http://www.w3.org/2001/XMLSchema"/>
    <ns prefix="html" uri="http://www.w3.org/1999/xhtml"/>
    
    <pattern id="GSX14" name="General XML Schema Rules">
        <rule id="GSX14" context="//xsd:any">
            <assert test="ancestor::xsd:extension">GSX14:                   
		 The xsd:any element MUST NOT be used except within the 
		 'ExtensionContentType' type definitions
            </assert>
            <assert test="@processContents='skip'"> 
		 xsd:processContents= "skip" for non-UBL namespaces.                     
            </assert>
       </rule>
    </pattern>
 
</schema>				
				
				]]></CodeExample></TestCase></TestCases></Guidance><Guidance guidanceID="rule-ELD12" documentationID="rule-ELD12" prefixNumber="12" prefixToken="ELD"><Note>I am not sure I understand what this means.  An example would make this more understandable.</Note><GuidanceText>
               
                  
		  The 'UBL Extensions' element MUST be declared as the first child of the document element with xsd:minOccurs="0".
            </GuidanceText></Guidance><Guidance guidanceID="rule-ELD13" documentationID="rule-ELD13" prefixNumber="13" prefixToken="ELD"><Note>I am not sure I understand what this means.  An example would make this more understandable.</Note><GuidanceText>
               
                  
		  The 'UBLProfileID' element MUST be declared immediately following the 'UBL Extensions' element with xsd:minOccurs="0".".
            </GuidanceText></Guidance><Guidance guidanceID="rule-ELD14" documentationID="rule-ELD14" prefixNumber="14" prefixToken="ELD"><Note>I am not sure I understand what this means.  An example would make this more understandable.</Note><GuidanceText>
               
                  
		  The 'UBLSubsetID' element MUST be declared immediately following the 'UBLProfileID' element  with xsd:minOccurs="0".
            </GuidanceText></Guidance><Guidance guidanceID="rule-NMS1" documentationID="rule-NMS1" prefixNumber="1" prefixToken="NMS"><Testability>Fully-Testable</Testability><GuidanceText>
                  
                  
		  Every UBL-defined –or -used schema module, except internal schema modules, MUST have a namespace declared using the xsd:targetNamespace attribute.
               </GuidanceText><TestCases ruleType="Schematron"><TestCase><CodeExample><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.ascc.net/xml/schematron">
    <title>UBL Naming and Design Rules</title>
    <ns prefix="xsi" uri="http://www.w3.org/2000/10/XMLSchema-instance"/>
    <ns prefix="xsd" uri="http://www.w3.org/2001/XMLSchema"/>
    <ns prefix="html" uri="http://www.w3.org/1999/xhtml"/>
    
    <pattern id="NMS1" name="Namespace Rules">
        <rule id="NMS1" context="/xsd:schema">
            <assert test="@targetNamespace">NMS1:                              
		  Every UBL-defined –or -used schema module, except 
		  internal schema modules, MUST have a namespace 
		  declared using the xsd:targetNamespace attribute.         
            </assert>
       </rule>
    </pattern>
 
</schema>]]></CodeExample></TestCase></TestCases></Guidance><Guidance guidanceID="rule-NMS2" documentationID="rule-NMS2" prefixNumber="2" prefixToken="NMS"><Note>Untestable without UBL library.</Note><GuidanceText>
                  
                  
		  Every UBL-defined-or -used major version schema set MUST have its own unique namespace.
               </GuidanceText></Guidance><Guidance guidanceID="rule-NMS3" documentationID="rule-NMS3" prefixNumber="3" prefixToken="NMS"><Note>Untestable without list of UBL library.</Note><GuidanceText>
                  
                  
		  UBL namespaces MUST only contain UBL developed schema modules.
               </GuidanceText></Guidance><Guidance guidanceID="rule-NMS4" documentationID="rule-NMS4" prefixNumber="4" prefixToken="NMS"><Note>NMS4  and NMS5 are identical.</Note><GuidanceText>
                  
                  
		  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;</GuidanceText></Guidance><Guidance guidanceID="rule-NMS5" documentationID="rule-NMS5" prefixNumber="5" prefixToken="NMS"><GuidanceText>
                  
                  
		  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; 
               </GuidanceText></Guidance><Guidance guidanceID="rule-NMS6" documentationID="rule-NMS6" prefixNumber="6" prefixToken="NMS"><Testability>Untestable</Testability><GuidanceText>
                  
                  
		  UBL published namespaces MUST never be changed. 
               </GuidanceText></Guidance><Guidance guidanceID="rule-VER1" documentationID="rule-VER1" prefixNumber="1" prefixToken="VER"><Note>This is only testable if you whether the schema is a committee draft.</Note><Testability>Fully-Testable</Testability><GuidanceText>
               
                  
		  Every UBL Schema and schema module major version committee draft MUST have an RFC 3121 document-id of the form 
            
                  
		  </GuidanceText></Guidance><Guidance guidanceID="rule-VER11" documentationID="rule-VER11" prefixNumber="11" prefixToken="VER"><Testability>Fully-Testable</Testability><GuidanceText>
               
                  
		  Every UBL Schema and schema module major version committee draft MUST capture its version number in the xsd:version attribute of the xsd:schema element in the form 
        
		  [.&lt;revision&gt;]</GuidanceText><TestCases ruleType="Schematron"><TestCase><CodeExample><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.ascc.net/xml/schematron">
    <title>UBL Naming and Design Rules</title>
    <ns prefix="xsi" uri="http://www.w3.org/2000/10/XMLSchema-instance"/>
    <ns prefix="xsd" uri="http://www.w3.org/2001/XMLSchema"/>
    <ns prefix="html" uri="http://www.w3.org/1999/xhtml"/>
    
    <pattern id="VER11" name="Version Rule">
        <rule id="VER11" context="/xsd:schema">
            <assert test="@xsd:version">VER11:                                               
		  Every UBL Schema and schema module major 
		  version committee draft MUST capture its version 
		  number in the xsd:version attribute of the 
		  xsd:schema element in the form 	  
            </assert>
       </rule>
    </pattern>
 
</schema>
]]></CodeExample></TestCase></TestCases></Guidance><Guidance guidanceID="rule-VER2" documentationID="rule-VER2" prefixNumber="2" prefixToken="VER"><GuidanceText>
               
                  
		  Every UBL Schema and schema module major version OASIS Standard MUST have an RFC 3121 document-id of the form 
            &lt;name&gt;-&lt;major&gt;</GuidanceText></Guidance><Guidance guidanceID="rule-VER12" documentationID="rule-VER12" prefixNumber="12" prefixToken="VER"><GuidanceText>
               
                  
		  Every UBL Schema and schema module major version OASIS Standard MUST capture its version number in the xsd:version attribute of the xsd:schema element in the form
            &lt;major&gt;.0</GuidanceText></Guidance><Guidance guidanceID="rule-VER3" documentationID="rule-VER3" prefixNumber="3" prefixToken="VER"><GuidanceText>
               
                  
		  Every minor version release of a UBL schema or schema module committee draft MUST have an RFC 3121 document-id of the form 
                  
		  
            </GuidanceText></Guidance><Guidance guidanceID="rule-VER13" documentationID="rule-VER13" prefixNumber="13" prefixToken="VER"><GuidanceText>
               
                  
		  Every minor version release of a UBL schema or schema module committee draft MUST capture its version information in the xsd:version attribute in the form
                  
		  
            </GuidanceText></Guidance><Guidance guidanceID="rule-VER4" documentationID="rule-VER4" prefixNumber="4" prefixToken="VER"><GuidanceText>
               
                  
		   Every minor version release of a UBL schema or schema module OASIS Standard MUST have an RFC 3121 document-id of the form
            </GuidanceText></Guidance><Guidance guidanceID="rule-VER14" documentationID="rule-VER14" prefixNumber="14" prefixToken="VER"><GuidanceText>
               
                  
		   Every minor version release of a UBL schema or schema module OASIS Standard MUST capture its version information in the xsd:version attribute in the form
            </GuidanceText></Guidance><Guidance guidanceID="rule-VER5" documentationID="rule-VER5" prefixNumber="5" prefixToken="VER"><GuidanceText>
               
                  
		  For UBL Minor version changes the namespace name MUST not change, 
            </GuidanceText></Guidance><Guidance guidanceID="rule-VER10" documentationID="rule-VER10" prefixNumber="10" prefixToken="VER"><GuidanceText>
               
                  
		  UBL Schema and schema module minor version changes MUST not break semantic compatibility with prior versions.
            </GuidanceText></Guidance><Guidance guidanceID="rule-VER6" documentationID="rule-VER6" prefixNumber="6" prefixToken="VER"><GuidanceText>
               
                  
		  Every UBL Schema and schema module major version number MUST be a sequentially assigned, incremental number greater than zero.
            </GuidanceText></Guidance><Guidance guidanceID="rule-VER7" documentationID="rule-VER7" prefixNumber="7" prefixToken="VER"><GuidanceText>
               
                  
		  Every UBL Schema and schema module minor version number MUST be a sequentially assigned, incremental non-negative integer.
            </GuidanceText></Guidance><Guidance guidanceID="rule-VER15" documentationID="rule-VER15" prefixNumber="15" prefixToken="VER"><GuidanceText>
               
                  
		  Every UBL document schema MUST declare an optional element named "UBLVersionID" immediately following the optional 'UBL Extensions' element. 
            </GuidanceText></Guidance><Guidance guidanceID="rule-SSM1" documentationID="rule-SSM1" prefixNumber="1" prefixToken="SSM"><Testability>Untestable</Testability><GuidanceText>
               
                  
		  UBL Schema expressions MAY be split into multiple schema modules.
            </GuidanceText></Guidance><Guidance guidanceID="rule-SSM2" documentationID="rule-SSM2" prefixNumber="2" prefixToken="SSM"><GuidanceText>
                     
                  
		  A document schema in one UBL namespace that is dependent upon type definitions or element declarations defined in another namespace MUST only import the document schema from that namespace. 
                  </GuidanceText></Guidance><Guidance guidanceID="rule-SSM3" documentationID="rule-SSM3" prefixNumber="3" prefixToken="SSM"><GuidanceText>
                     
                  
		  A document schema in one UBL namespace that is dependant upon type definitions or element declarations defined in another namespace MUST NOT import internal schema modules from that namespace.
                  </GuidanceText></Guidance><Guidance guidanceID="rule-SSM6" documentationID="rule-SSM6" prefixNumber="6" prefixToken="SSM"><GuidanceText>
                  
                  
		  All UBL internal schema modules MUST be in the same namespace as their corresponding document schema.
               </GuidanceText></Guidance><Guidance guidanceID="rule-SSM7" documentationID="rule-SSM7" prefixNumber="7" prefixToken="SSM"><GuidanceText>
                  
                  
		  Each UBL internal schema module MUST be named {ParentSchemaModuleName}{InternalSchemaModuleFunction}{schema module}
               </GuidanceText></Guidance><Guidance guidanceID="rule-SSM8" documentationID="rule-SSM8" prefixNumber="8" prefixToken="SSM"><Testability>Untestable</Testability><GuidanceText>
                  
                  
		  A UBL schema module MAY be created for reusable components.
               </GuidanceText></Guidance><Guidance guidanceID="rule-SSM21" documentationID="rule-SSM21" prefixNumber="21" prefixToken="SSM"><GuidanceText>
                  
                  
		  The UBL extensions schema module MUST be identified as CommonExtensionComponents in the document name within the schema header.
               </GuidanceText></Guidance><Guidance guidanceID="rule-SSM9" documentationID="rule-SSM9" prefixNumber="9" prefixToken="SSM"><Testability>Untestable</Testability><GuidanceText>
                     
                  
		  A schema module defining all UBL Common Aggregate Components MUST be created.
                  </GuidanceText></Guidance><Guidance guidanceID="rule-SSM10" documentationID="rule-SSM10" prefixNumber="10" prefixToken="SSM"><GuidanceText>
                     
                  
		  The UBL Common Aggregate Components schema module MUST be identified as CommonAggregateComponents in the document name within the schema header.
                  </GuidanceText></Guidance><Guidance guidanceID="rule-NMS7" documentationID="rule-NMS7" prefixNumber="7" prefixToken="NMS"><GuidanceText>
                        
                  
		  The ubl:CommonAggregateComponents schema module MUST reside in its own namespace.
                     </GuidanceText></Guidance><Guidance guidanceID="rule-NMS8" documentationID="rule-NMS8" prefixNumber="8" prefixToken="NMS"><GuidanceText>
                        
                  
		  The ubl:CommonAggregateComponents schema module namespace MUST be represented by the namespace prefix "cac" when referenced in other schemas.
                     </GuidanceText></Guidance><Guidance guidanceID="rule-SSM11" documentationID="rule-SSM11" prefixNumber="11" prefixToken="SSM"><GuidanceText>
                     
                  
		  A schema module defining all UBL Common Basic Components MUST be created.
                  </GuidanceText></Guidance><Guidance guidanceID="rule-SSM12" documentationID="rule-SSM12" prefixNumber="12" prefixToken="SSM"><GuidanceText>
                     
                  
		  The UBL Common Basic Components schema module MUST be identified as CommonBasicComponents in the document name within the schema header.
                  </GuidanceText></Guidance><Guidance guidanceID="rule-NMS9" documentationID="rule-NMS9" prefixNumber="9" prefixToken="NMS"><GuidanceText>
                        
                  
		  The ubl:CommonBasicComponents schema module MUST reside in its own namespace.
                     </GuidanceText></Guidance><Guidance guidanceID="rule-NMS10" documentationID="rule-NMS10" prefixNumber="10" prefixToken="NMS"><GuidanceText>
                        
                  
		  The ubl:CommonBasicComponents schema module namespace MUST be represented by the namespace prefix "cbc" when referenced in other schemas.
                     </GuidanceText></Guidance><Guidance guidanceID="rule-NMS17" documentationID="rule-NMS17" prefixNumber="17" prefixToken="NMS"><GuidanceText>
                        
                  
		  The ccts:UnqualifiedDatatypes schema module namespace MUST be represented by the token "udt" when referenced in other schemas.
                     </GuidanceText></Guidance><Guidance guidanceID="rule-SSM18" documentationID="rule-SSM18" prefixNumber="18" prefixToken="SSM"><GuidanceText>
                        
                  
		  A schema module defining all UBL Qualified Datatypes MUST be created.
                     </GuidanceText></Guidance><Guidance guidanceID="rule-SSM20" documentationID="rule-SSM20" prefixNumber="20" prefixToken="SSM"><GuidanceText>
                        
                  
		  The UBL Qualified Datatypes schema module MUST import the ccts:UnQualifiedDatatypes schema module.
                     </GuidanceText></Guidance><Guidance guidanceID="rule-SSM19" documentationID="rule-SSM19" prefixNumber="19" prefixToken="SSM"><GuidanceText>
                        
                  
		  The UBL Qualified Datatypes schema module MUST be identified as QualifiedDatatypes in the document name in the schema header.
                     </GuidanceText></Guidance><Guidance guidanceID="rule-NMS15" documentationID="rule-NMS15" prefixNumber="15" prefixToken="NMS"><GuidanceText>
                        
                  
		  The ubl:QualifiedDatatypes schema module MUST reside in its own namespace.
                     </GuidanceText></Guidance><Guidance guidanceID="rule-NMS16" documentationID="rule-NMS16" prefixNumber="16" prefixToken="NMS"><GuidanceText>
                        
                  
		  The ubl:QualifiedDatatypes schema module namespace MUST be represented by the namespace prefix "qdt" when referenced in other schemas.
                     </GuidanceText></Guidance><Guidance guidanceID="rule-NMS18" documentationID="rule-NMS18" prefixNumber="18" prefixToken="NMS"><GuidanceText>
                        
                  
		  The CommonExtensionComponents schema module namespace MUST be represented by the namespace prefix 'ext' when referenced in other schemas. 
                     </GuidanceText></Guidance><Guidance guidanceID="rule-GXS2" documentationID="rule-GXS2" prefixNumber="2" prefixToken="GXS"><Note>I don't understand the rationale for this requirement.  This seems like a configuration issue and the possibility of schemas being out of sync is highly likely.</Note><Testability>Untestable</Testability><GuidanceText>
                  
                  
		  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.
               </GuidanceText></Guidance><Guidance guidanceID="rule-DOC1" documentationID="rule-DOC1" prefixNumber="1" prefixToken="DOC"><Note>There is an extra colon follwoing Version(mandatory): that should be deleted from the original document.</Note><Note>An example in the full documentation would be really helpful.</Note><Note>This rule could be fully testable if the mandatory and optional documentation components were separated into two rules. The mandatory components are testable.</Note><Testability>Partially-Testable</Testability><GuidanceText>
                  
                  
		   The xsd:documentation element for every Datatype MUST contain a structured set of annotations in the following sequence and pattern (as defined in CCTS Section 7): 
               DictionaryEntryName (mandatory) Version (mandatory): RepresentationTerm (mandatory) QualifierTerm(s) (mandatory, where used) UniqueIdentifier (mandatory) Usage Rule(s) (optional) Content Component Restriction (optional)</GuidanceText><TestCases ruleType="Schematron"><TestCase><CodeExample><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.ascc.net/xml/schematron">
   <title>UBL Naming and Design Rules</title>
   <ns prefix="xsi" uri="http://www.w3.org/2000/10/XMLSchema-instance"/>
   <ns prefix="xsd" uri="http://www.w3.org/2001/XMLSchema"/>
   <ns prefix="ccts" uri="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-1.0"/>
   <ns prefix="html" uri="http://www.w3.org/1999/xhtml"/>

<pattern id="DOC1" name="Documentation Rules">
   <rule id="DOC1" context="//xsd:annotation">
      <assert  test="descendant::ccts:DictionaryEntryName">
         [DOC1-1/4]:  DictionaryEntryName (mandatory): The xsd:documentation 
		 element for every Datatype MUST contain a structured set of 
		 annotations in the following sequence and pattern (as defined 
		 in CCTS Section 7): 
          </assert>
         <assert test=" descendant::ccts:Version">
            [DOC1-2/4]:  Version (mandatory): The xsd:documentation element
			for every Datatype MUST contain a structured set of annotations 
			in the following sequence and pattern (as defined in CCTS Section 7): 
         </assert>
         <assert test=" descendant::ccts:RepresentatationTerm"> 
            [DOC1-3/4]: RepresentationTerm (mandatory): The xsd:documentation 
			element for every Datatype MUST contain a structured set of annotations in the 
            following sequence and pattern (as defined in CCTS Section 7): 
          </assert>
         <assert test="descendant::ccts:UniqueIdentifier"> 
            [DOC1-4/4]: UniqueIdentifier (mandatory): The xsd:documentation element 
			for every Datatype MUST contain a structured set of annotations in the 
            following sequence and pattern (as defined in CCTS Section 7): 
          </assert>
   </rule>           
</pattern>

</schema>
]]></CodeExample></TestCase></TestCases></Guidance><Guidance guidanceID="rule-DOC2" documentationID="rule-DOC2" prefixNumber="2" prefixToken="DOC"><GuidanceText>
                  
                  
		   A Datatype definition MAY contain one or more Content Component Restrictions to provide additional information on the relationship between the Datatype and its corresponding Core Component Type. If used the Content Component Restrictions must contain a structured set of annotations in the following patterns:
               RestrictionType (mandatory): Defines the type of format restriction that applies to the Content Component. RestrictionValue (mandatory): The actual value of the format restriction that applies to the Content Component. ExpressionType (optional): Defines the type of the regular expression of the restriction value.</GuidanceText></Guidance><Guidance guidanceID="rule-DOC3" documentationID="rule-DOC3" prefixNumber="3" prefixToken="DOC"><GuidanceText>
                  
                  
		   A Datatype definition MAY contain one or more Supplementary Component Restrictions to provide additional information on the relationship between the Datatype and its corresponding Core Component Type. If used the Supplementary Component Restrictions must contain a structured set of annotations in the following patterns:
               SupplementaryComponentName (mandatory): Identifies the Supplementary Component on which the restriction applies. RestrictionValue (mandatory, repetitive): The actual value(s) that is (are) valid for the Supplementary Component.</GuidanceText></Guidance><Guidance guidanceID="rule-DOC4" documentationID="rule-DOC4" prefixNumber="4" prefixToken="DOC"><GuidanceText>
                  
                  
		   The xsd:documentation element for every Basic Business Information Entity MUST contain a structured set of annotations in the following patterns:
               ComponentType (mandatory): The type of component to which the object belongs. For Basic Business Information Entities this must be "BBIE".DictionaryEntryName (mandatory): The official name of a Basic Business Information Entity.
Version (optional): An indication of the evolution over time of the Basic Business Information Entity.
Definition(mandatory): The semantic meaning of a Basic Business Information Entity.
Cardinality(mandatory): Indication whether the Basic Business Information Entity represents a not-applicable, optional, mandatory and/or repetitive characteristic of the Aggregate Business Information Entity.
ObjectClassQualifier (optional): The qualifier for the object class.
ObjectClass(mandatory): The Object Class containing the Basic Business Information Entity.
PropertyTermQualifier (optional): A qualifier is a word or words which help define and differentiate a Basic Business Information Entity.
PropertyTerm(mandatory): Property Term represents the distinguishing characteristic or Property of the Object Class and shall occur naturally in the definition of the Basic Business Information Entity. 
RepresentationTerm (mandatory): A Representation Term describes the form in which the Basic Business Information Entity is represented. 
DataTypeQualifier (optional): semantically meaningful name that differentiates the Datatype of the Basic Business Information Entity from its underlying Core Component Type. 
DataType (mandatory): Defines the Datatype used for the Basic Business Information Entity.
AlternativeBusinessTerms (optional): Any synonym terms under which the Basic Business Information Entity is commonly known and used in the business.
Examples (optional): Examples of possible values for the Basic Business Information Entity.
</GuidanceText></Guidance><Guidance guidanceID="rule-DOC5" documentationID="rule-DOC5" prefixNumber="5" prefixToken="DOC"><GuidanceText>
                  
                  
		   The xsd:documentation element for every Aggregate Business Information Entity MUST contain a structured set of annotations in the following sequence and pattern:
               ComponentType (mandatory): The type of component to which the object belongs. For Aggregate Business Information Entities this must be "ABIE".
DictionaryEntryName (mandatory): The official name of the Aggregate Business Information Entity .
Version (optional): An indication of the evolution over time of the Aggregate Business Information Entity.
Definition(mandatory): The semantic meaning of the Aggregate Business Information Entity.
ObjectClassQualifier (optional): The qualifier for the object class.
ObjectClass(mandatory): The Object Class represented by the Aggregate Business Information Entity.
AlternativeBusinessTerms (optional): Any synonym terms under which the Aggregate Business Information Entity is commonly known and used in the business.
</GuidanceText></Guidance><Guidance guidanceID="rule-DOC6" documentationID="rule-DOC6" prefixNumber="6" prefixToken="DOC"><GuidanceText>
                  
                  
		   The xsd:documentation element for every Association Business Information Entity element declaration MUST contain a structured set of annotations in the following sequence and pattern:
               ComponentType (mandatory): The type of component to which the object belongs. For Association Business Information Entities this must be "ASBIE".
DictionaryEntryName (mandatory): The official name of the Association Business Information Entity.
Version (optional): An indication of the evolution over time of the Association Business Information Entity.
Definition(mandatory): The semantic meaning of the Association Business Information Entity.
Cardinality(mandatory): Indication whether the Association Business Information Entity represents an optional, mandatory and/or repetitive assocation.
ObjectClass(mandatory): The Object Class containing the Association Business Information Entity.
PropertyTermQualifier (optional): A qualifier is a word or words which help define and differentiate the Association Business Information Entity.
PropertyTerm(mandatory): Property Term represents the Aggregate Business Information Entity contained by the Association Business Information Entity.
AssociatedObjectClassQualifier (optional): Associated Object Class Qualifiers describe the 'context' of the relationship with another ABIE. That is, it is the role the contained Aggregate Business Information Entity plays within its association with the containing Aggregate Business Information Entity. 
AssociatedObjectClass (mandatory); Associated Object Class is the Object Class at the other end of this association. It represents the Aggregate Business Information Entity contained by the Association Business Information Entity.</GuidanceText></Guidance><Guidance guidanceID="rule-DOC8" documentationID="rule-DOC8" prefixNumber="8" prefixToken="DOC"><GuidanceText>
                  
                  
		   The xsd:documentation element for every Supplementary Component attribute declarationMUST contain a structured set of annotations in the following sequence and pattern:
               Name (mandatory): Name in the Registry of a Supplementary Component of a Core Component Type.
               Definition (mandatory): A clear, unambiguous and complete explanation of the meaning of a Supplementary Component and its relevance for the related Core Component Type.
               Primitive type (mandatory): PrimitiveType to be used for the representation of the value of a Supplementary Component.
               Possible Value(s) (optional): one possible value of a Supplementary Component.</GuidanceText></Guidance><Guidance guidanceID="rule-DOC9" documentationID="rule-DOC9" prefixNumber="9" prefixToken="DOC"><GuidanceText>
                  
                  
		   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:
               Restriction Value(s) (mandatory): The actual value(s) that is (are) valid for the Supplementary Component.</GuidanceText></Guidance><Guidance guidanceID="rule-GNR1" documentationID="rule-GNR1" prefixNumber="1" prefixToken="GNR"><Testability>Untestable</Testability><GuidanceText>
               
                  
		  UBL XML element and type names MUST be in the English language, using the primary English spellings provided in the Oxford English Dictionary.
            </GuidanceText></Guidance><Guidance guidanceID="rule-GNR2" documentationID="rule-GNR2" prefixNumber="2" prefixToken="GNR"><Testability>Untestable</Testability><GuidanceText>
               
                  
		  UBL XML element and type names MUST be consistently derived from CCTS conformant dictionary entry names.
            </GuidanceText></Guidance><Guidance guidanceID="rule-GNR3" documentationID="rule-GNR3" prefixNumber="3" prefixToken="GNR"><Note>Test with spaces and periods.  Non-W3CXML 1.0 XML Names should be picked up by the parser.</Note><Note>Does this mean hypens (-) and underscores (_) are allowed?</Note><Testability>Fully-Testable</Testability><GuidanceText>
               
                  
		  UBL XML element and type names constructed from ccts:DictionaryEntryNames MUST NOT include periods, spaces, other separators, or characters not allowed by W3C XML 1.0 for XML names. 
            </GuidanceText><TestCases ruleType="Schematron"><TestCase><CodeExample><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.ascc.net/xml/schematron">
   <title>UBL Naming and Design Rules</title>
   <ns prefix="xsi" uri="http://www.w3.org/2000/10/XMLSchema-instance"/>
   <ns prefix="xsd" uri="http://www.w3.org/2001/XMLSchema"/>
   <ns prefix="ccts" uri="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-1.0"/>
   <ns prefix="html" uri="http://www.w3.org/1999/xhtml"/>

<pattern id="GNR3" name="General Naming Rules">
   <rule id="GNR3" context="//xsd:complexType |
                                                //xsd:element |
                                                //xsd:attribute |
                                                //xsd:simpleType">
      <assert  test="not(contains(@name, ' '))">
         [GNR3]:  Space Found:  UBL XML element and type names 
		 constructed from ccts:DictionaryEntryNames MUST NOT 
		 include periods, spaces, other separators, or characters 
		 not allowed by W3C XML 1.0 for XML names. 
      </assert>
      <assert  test="not(contains(@name, '.'))">
         [GNR3]:  Period Found:  UBL XML element and type names 
		 constructed from ccts:DictionaryEntryNames MUST NOT 
		 include periods, spaces, other separators, or 
		 characters not allowed by W3C XML 1.0 for XML names. 
      </assert>
   </rule>           
</pattern>

</schema>
]]></CodeExample></TestCase></TestCases></Guidance><Guidance guidanceID="rule-GNR4" documentationID="rule-GNR4" prefixNumber="4" prefixToken="GNR"><Testability>Untestable</Testability><GuidanceText>
               
                  
		  UBL XML element, and simple and complex type names MUST NOT use acronyms, abbreviations, or other word truncations, except those in the list of exceptions maintained and published by the UBL TC.
            </GuidanceText></Guidance><Guidance guidanceID="rule-GNR6" documentationID="rule-GNR6" prefixNumber="6" prefixToken="GNR"><GuidanceText>
               
                  
		  The acronyms and abbreviations listed in the UBL-approved list MUST always be used in place of the word or phrase they represent.
            </GuidanceText></Guidance><Guidance guidanceID="rule-GNR7" documentationID="rule-GNR7" prefixNumber="7" prefixToken="GNR"><Testability>Untestable</Testability><GuidanceText>
               
                  
		  UBL XML element, and type names MUST be in singular form unless the concept itself is plural.
            </GuidanceText></Guidance><Guidance guidanceID="rule-GNR10" documentationID="rule-GNR10" prefixNumber="10" prefixToken="GNR"><Testability>Untestable</Testability><GuidanceText>
               
                  
		  Acronyms and abbreviations at the beginning of an attribute name MUST appear in all lower case.  All other acronym and abbreviation usage in an attribute declaration MUST appear in upper case.
            </GuidanceText></Guidance><Guidance guidanceID="rule-GNR11" documentationID="rule-GNR11" prefixNumber="11" prefixToken="GNR"><Testability>Untestable</Testability><GuidanceText>
               
                  
		  Acronyms and abbreviations MUST appear in all upper case for all element declarations and type definitions.
            </GuidanceText></Guidance><Guidance guidanceID="rule-GNR8" documentationID="rule-GNR8" prefixNumber="8" prefixToken="GNR"><Testability>Untestable</Testability><GuidanceText>
               
                  
		  The UpperCamelCase (UCC) convention MUST be used for naming elements and types
            </GuidanceText></Guidance><Guidance guidanceID="rule-CTN1" documentationID="rule-CTN1" prefixNumber="1" prefixToken="CTN"><Note>Cannot test without all schema's.</Note><Testability>Partially-Testable</Testability><GuidanceText>
                  
                  
		  A UBL xsd:complexType name based on an ccts:AggregateBusinessInformationEntity MUST be the ccts:DictionaryEntryName with the separators removed and with the "Details" suffix replaced with "Type".
               </GuidanceText><TestCases ruleType="Schematron"><TestCase><CodeExample><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.ascc.net/xml/schematron">
   <title>UBL Naming and Design Rules</title>
   <ns prefix="xsi" uri="http://www.w3.org/2000/10/XMLSchema-instance"/>
   <ns prefix="xsd" uri="http://www.w3.org/2001/XMLSchema"/>
   <ns prefix="ccts" uri="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-1.0"/>
   <ns prefix="html" uri="http://www.w3.org/1999/xhtml"/>

<pattern id="CNT1" name="ComplexType Naming Rules">
   <rule id="CNT1" context="//xsd:complexType">
      <assert  test="contains(@name, 'Type')">
         [CNT1]:   A UBL xsd:complexType name based on an 
		 ccts:AggregateBusinessInformationEntity MUST be the 
		 ccts:DictionaryEntryName with the separators removed 
		 and with the "Details" suffix replaced with "Type".
      </assert>
   </rule>           
</pattern>

</schema>
]]></CodeExample></TestCase></TestCases></Guidance><Guidance guidanceID="rule-CTN2" documentationID="rule-CTN2" prefixNumber="2" prefixToken="CTN"><GuidanceText>
                  
                  
		  A UBL xsd:complexType name based on a ccts:BasicBusinessInformationEntityProperty MUST be the ccts:DictionaryEntryName shared property term and its qualifiers and representation term of the ccts:BasicBusinessInformationEntity, with the separators removed and with the "Type" suffix appended after the representation term.
               </GuidanceText></Guidance><Guidance guidanceID="rule-CTN6" documentationID="rule-CTN6" prefixNumber="6" prefixToken="CTN"><GuidanceText>
                  
                  
		  A UBL xsd:complexType name based on a ccts:BasicBusinessInformationEntityProperty  and with a . ccts:BasicBusinessInformationEntityRepresentationTerm of 'Text' MUST have the word "Text" removed from the end of its name.
               </GuidanceText></Guidance><Guidance guidanceID="rule-CTN7" documentationID="rule-CTN7" prefixNumber="7" prefixToken="CTN"><GuidanceText>
                  
                  
		  A UBL xsd:complexType name based on a ccts:BasicBusinessInformationEntityProperty  and with a . ccts:BasicBusinessInformationEntityRepresentationTerm of 'Identifier' MUST have the word "Identifier" replaced by the word "ID" at the end of its name.
               </GuidanceText></Guidance><Guidance guidanceID="rule-CTN8" documentationID="rule-CTN8" prefixNumber="8" prefixToken="CTN"><GuidanceText>
                  
                  
		  A UBL xsd:complexType name based on a ccts:BasicBusinessInformationEntityProperty MUST remove all duplication of words that occur as a result of duplicate property terms and representation terms.
               </GuidanceText></Guidance><Guidance guidanceID="rule-ELN1" documentationID="rule-ELN1" prefixNumber="1" prefixToken="ELN"><GuidanceText>
                  
                  
		  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.
               </GuidanceText></Guidance><Guidance guidanceID="rule-ELN2" documentationID="rule-ELN2" prefixNumber="2" prefixToken="ELN"><GuidanceText>
                  
                  
		  A UBL global element name based on a ccts:BBIEProperty MUST be the same as the name of the corresponding xsd:complexType to which it is bound, with the word "Type" removed.
               </GuidanceText></Guidance><Guidance guidanceID="rule-ELN3" documentationID="rule-ELN3" prefixNumber="3" prefixToken="ELN"><GuidanceText>
                  
                  
		  A UBL global element name based on a ccts:ASBIE MUST be the ccts:ASBIE dictionary entry name property term and its qualifiers; and the object class term and qualifiers of its associated ccts:ABIE. All ccts:DictionaryEntryName separators MUST be removed..
               </GuidanceText></Guidance><Guidance guidanceID="rule-GTD1" documentationID="rule-GTD1" prefixNumber="1" prefixToken="GTD"><Testability>Fully-Testable</Testability><GuidanceText>
                  
                  
		  All types MUST be named.
               </GuidanceText><TestCases ruleType="Schematron"><TestCase><CodeExample><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.ascc.net/xml/schematron">
   <title>UBL Naming and Design Rules</title>
   <ns prefix="xsi" uri="http://www.w3.org/2000/10/XMLSchema-instance"/>
   <ns prefix="xsd" uri="http://www.w3.org/2001/XMLSchema"/>
   <ns prefix="ccts" uri="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-1.0"/>
   <ns prefix="html" uri="http://www.w3.org/1999/xhtml"/>

<pattern id="GTD1" name="General Type Definition">
   <rule id="GTD1" context="//xsd:complexType | //xsd:simpleType">
      <assert  test="@name">
         [GTN1]:   All types MUST be named.
      </assert>
   </rule>           
</pattern>

</schema>
]]></CodeExample></TestCase></TestCases></Guidance><Guidance guidanceID="rule-GTD2" documentationID="rule-GTD2" prefixNumber="2" prefixToken="GTD"><Testability>Fully-Testable</Testability><GuidanceText>
                  
                  
		  The predefined XML Schema type xsd:anyType MUST NOT be used.
               </GuidanceText><TestCases ruleType="Schematron"><TestCase><CodeExample><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.ascc.net/xml/schematron">
   <title>UBL Naming and Design Rules</title>
   <ns prefix="xsi" uri="http://www.w3.org/2000/10/XMLSchema-instance"/>
   <ns prefix="xsd" uri="http://www.w3.org/2001/XMLSchema"/>
   <ns prefix="ccts" uri="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-1.0"/>
   <ns prefix="html" uri="http://www.w3.org/1999/xhtml"/>

<pattern id="GTD2" name="General Type Definition">
   <rule id="GTD2" context="//xsd:element[@type] | //xsd:attribute[@type]">
      <assert  test="@type!='xsd:anyType'">
         [GTD2]:   The predefined XML Schema type xsd:anyType
		 MUST NOT be used.
      </assert>
   </rule>           
</pattern>

</schema>
]]></CodeExample></TestCase></TestCases></Guidance><Guidance guidanceID="rule-CTD1" documentationID="rule-CTD1" prefixNumber="1" prefixToken="CTD"><Note>I am not sure what this is saying.  I think it is saying for every global element that is not defined as an XSD datatype, then a complexType should be created.  </Note><GuidanceText>
                  
                  
		  For every class identified in the UBL model, a named xsd:complexType MUST be defined.
               </GuidanceText></Guidance><Guidance guidanceID="rule-CTD25" documentationID="rule-CTD25" prefixNumber="25" prefixToken="CTD"><GuidanceText>
                  
                  
		   For every ccts:BBIEProperty identified in the UBL model a named xsd:complexType must be defined.
               </GuidanceText></Guidance><Guidance guidanceID="rule-CTD2" documentationID="rule-CTD2" prefixNumber="2" prefixToken="CTD"><Note>This rule has to rely on the documentation in order to test.</Note><Testability>Partially-Testable</Testability><GuidanceText>
                     
                  
		  Every ccts:ABIE xsd:complexType definition content model MUST use the xsd:sequence element containing references to the appropriate global element declarations.
                  </GuidanceText><TestCases ruleType="Schematron"><TestCase><CodeExample><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.ascc.net/xml/schematron">
   <title>UBL Naming and Design Rules</title>
   <ns prefix="xsi" uri="http://www.w3.org/2000/10/XMLSchema-instance"/>
   <ns prefix="xsd" uri="http://www.w3.org/2001/XMLSchema"/>
   <ns prefix="ccts" uri="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-1.0"/>
   <ns prefix="html" uri="http://www.w3.org/1999/xhtml"/>

<pattern id="CTD2" name="ComplexType Definition">
   <rule id="CTD2" context="//xsd:complexType[descendant::ccts:ComponentType='ABIE']">
      <assert  test="xsd:sequence">
         [CTD2]:   Every ccts:ABIE xsd:complexType definition content 
		 model MUST use the xsd:sequence element containing references 
		 to the appropriate global element declarations.
      </assert>
   </rule>           
</pattern>

</schema>
]]></CodeExample></TestCase></TestCases></Guidance><Guidance guidanceID="rule-CTD3" documentationID="rule-CTD3" prefixNumber="3" prefixToken="CTD"><Note>This rule has to rely on the documentation in order to test.</Note><Testability>Partially-Testable</Testability><GuidanceText>
                     
                  
		  Every ccts:BBIEProperty xsd:complexType definition content model MUST use the xsd:simpleContent element.
                  </GuidanceText><TestCases ruleType="Schematron"><TestCase><CodeExample><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.ascc.net/xml/schematron">
   <title>UBL Naming and Design Rules</title>
   <ns prefix="xsi" uri="http://www.w3.org/2000/10/XMLSchema-instance"/>
   <ns prefix="xsd" uri="http://www.w3.org/2001/XMLSchema"/>
   <ns prefix="ccts" uri="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-1.0"/>
   <ns prefix="html" uri="http://www.w3.org/1999/xhtml"/>

<pattern id="CTD3" name="ComplexType Definition">
   <rule id="CTD3" context="//xsd:complexType[descendant::ccts:ComponentType='BBIE']">
      <assert  test="xsd:simpleContent">
         [CTD3]:   Every ccts:BBIEProperty xsd:complexType definition 
		 content model MUST use the xsd:simpleContent element.
         
      </assert>
   </rule>           
</pattern>

</schema>
]]></CodeExample></TestCase></TestCases></Guidance><Guidance guidanceID="rule-CTD4" documentationID="rule-CTD4" prefixNumber="4" prefixToken="CTD"><GuidanceText>
                     
                  
		  Every ccts:BBIEProperty xsd:complexType content model xsd:simpleContent element MUST consist of an xsd:extension element. 
                  </GuidanceText><TestCases ruleType="Schematron"><TestCase><CodeExample><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.ascc.net/xml/schematron">
   <title>UBL Naming and Design Rules</title>
   <ns prefix="xsi" uri="http://www.w3.org/2000/10/XMLSchema-instance"/>
   <ns prefix="xsd" uri="http://www.w3.org/2001/XMLSchema"/>
   <ns prefix="ccts" uri="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-1.0"/>
   <ns prefix="html" uri="http://www.w3.org/1999/xhtml"/>

<pattern id="CTD4" name="ComplexType Definition">
   <rule id="CTD4" context="//xsd:complexType[descendant::ccts:ComponentType='BBIE']">
      <assert  test="xsd:simpleContent/xsd:extension">
         [CTD4]:    Every ccts:BBIEProperty xsd:complexType content 
		 model xsd:simpleContent element MUST consist of an 
		 xsd:extension element. 
     </assert>
   </rule>           
</pattern>

</schema>
]]></CodeExample></TestCase></TestCases></Guidance><Guidance guidanceID="rule-CTD5" documentationID="rule-CTD5" prefixNumber="5" prefixToken="CTD"><Testability>Untestable</Testability><GuidanceText>
                     
                  
		  Every ccts:BBIEProperty xsd:complexType content model xsd:base attribute value MUST be the  UN/CEFACT Unqualified Datatype or UBL Qualified Datatype as appropriate.
                  </GuidanceText></Guidance><Guidance guidanceID="rule-CTD6" documentationID="rule-CTD6" prefixNumber="6" prefixToken="CTD"><Testability>Untestable</Testability><GuidanceText>
                        
                  
		  For every Qualified Datatype used in the UBL model, a named xsd:complexType or xsd:simpleType MUST be defined.
                     </GuidanceText></Guidance><Guidance guidanceID="rule-CTD20" documentationID="rule-CTD20" prefixNumber="20" prefixToken="CTD"><Testability>Untestable</Testability><GuidanceText>
                        
                  
		  A ccts:QualifiedDataType MUST be based on an unqualified data type and add some semantic and/or technical restriction to the unqualified data type.
                     </GuidanceText></Guidance><Guidance guidanceID="rule-CTD21" documentationID="rule-CTD21" prefixNumber="21" prefixToken="CTD"><Testability>Untestable</Testability><GuidanceText>
                        
                  
		  The name of a ccts:QualifiedDataType MUST be the name of its base ccts:UnqualifiedDataType with separators and spaces removed and with its qualifier term added.
                     </GuidanceText></Guidance><Guidance guidanceID="rule-CTD22" documentationID="rule-CTD22" prefixNumber="22" prefixToken="CTD"><GuidanceText>
                        
                  
		  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
                     MUST be defined as an xsd:simpleType
                     MUST contain one xsd:restriction element
                     MUST include an xsd:base attribute that defines the specific XSD built-in data type required for the content component; (1) MUST be defined as an xsd:simpleType
                     (2) MUST contain one xsd:restriction element
                     (3) MUST include an xsd:base attribute that defines the specific XSD built-in data type required for the content component</GuidanceText></Guidance><Guidance guidanceID="rule-CTD23" documentationID="rule-CTD23" prefixNumber="23" prefixToken="CTD"><GuidanceText>
                        
                  
		  Every qualified datatype based on an unqualified datatype xsd:complexType whose supplementary components do not map directly to the properties of an XSD built-in data type
                     MUST be defined as an xsd:complexType
                     MUST contain one xsd:simpleContent element
                     MUST contain one xsd:restriction element
                     MUST include the unqualified datatype as its xsd:base attribute</GuidanceText></Guidance><Guidance guidanceID="rule-CTD24" documentationID="rule-CTD24" prefixNumber="24" prefixToken="CTD"><GuidanceText>
                        
                  
		  Every qualified datatype based on an unqualified datatype xsd:simpleType 
                     MUST contain one xsd:restriction element
                     MUST include the unqualified datatype as its xsd:base attribute</GuidanceText></Guidance><Guidance guidanceID="rule-ELD3" documentationID="rule-ELD3" prefixNumber="3" prefixToken="ELD"><GuidanceText>
                  
                  
		  For every class and property identified in the UBL model, a global element bound to the corresponding xsd:complexType MUST be declared.
               </GuidanceText></Guidance><Guidance guidanceID="rule-ELD4" documentationID="rule-ELD4" prefixNumber="4" prefixToken="ELD"><GuidanceText>
                  
                  
		   When a ccts:ASBIE is unqualified, it is bound via reference to the global ccts:ABIE element to which it is associated.
               </GuidanceText></Guidance><Guidance guidanceID="rule-ELD11" documentationID="rule-ELD11" prefixNumber="11" prefixToken="ELD"><GuidanceText>
                  
                  
		  When a ccts:ASBIE is qualified, a new element MUST be declared and bound to the xsd:complexType of its associated ccts:ABIE.
               </GuidanceText></Guidance><Guidance guidanceID="rule-ELD6" documentationID="rule-ELD6" prefixNumber="6" prefixToken="ELD"><GuidanceText>
                  
                  
		  The code list xsd:import element MUST contain the namespace and schema location attributes.
               </GuidanceText></Guidance><Guidance guidanceID="rule-ELD7" documentationID="rule-ELD7" prefixNumber="7" prefixToken="ELD"><GuidanceText>
                  
                  
		  Empty elements MUST not be declared, except in  the case of extension, where the 'UBL Extensions' element is used.
               </GuidanceText><TestCases ruleType="Schematron"><TestCase><CodeExample><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.ascc.net/xml/schematron">
   <title>UBL Naming and Design Rules</title>
   <ns prefix="xsi" uri="http://www.w3.org/2000/10/XMLSchema-instance"/>
   <ns prefix="xsd" uri="http://www.w3.org/2001/XMLSchema"/>
   <ns prefix="ccts" uri="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-1.0"/>
   <ns prefix="html" uri="http://www.w3.org/1999/xhtml"/>

<pattern id="ELD7" name="Element Rule">
   <rule id="ELD7" context="//xsd:element[@name]">
      <assert  test="@type | xsd:complexType | xsd:simpleType">
         [ELD7]:    Empty elements MUST not be declared, except in  
		 the case of extension, where the   'UBL Extensions' 
		 element is used.
         
     </assert>
   </rule>           
</pattern>

</schema>
]]></CodeExample></TestCase></TestCases></Guidance><Guidance guidanceID="rule-CDL1" documentationID="rule-CDL1" prefixNumber="1" prefixToken="CDL"><Testability>Untestable</Testability><GuidanceText>
            
                  
		  All UBL Codes MUST be part of a UBL or externally maintained Code List.
         </GuidanceText></Guidance><Guidance guidanceID="rule-CDL2" documentationID="rule-CDL2" prefixNumber="2" prefixToken="CDL"><Testability>Untestable</Testability><GuidanceText>
            
                  
		  The UBL Library SHOULD identify and use external standardized code lists rather than develop its own UBL-native code lists.
         </GuidanceText></Guidance><Guidance guidanceID="rule-CDL3" documentationID="rule-CDL3" prefixNumber="3" prefixToken="CDL"><Testability>Untestable</Testability><GuidanceText>
            
                  
		  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.
         </GuidanceText></Guidance><Guidance guidanceID="rule-GXS3" documentationID="rule-GXS3" prefixNumber="3" prefixToken="GXS"><Testability>Untestable</Testability><GuidanceText>
               
                  
		  Built-in XSD Simple Types SHOULD be used wherever possible.
            </GuidanceText></Guidance><Guidance guidanceID="rule-GXS4" documentationID="rule-GXS4" prefixNumber="4" prefixToken="GXS"><GuidanceText>
               
                  
		  All W3C XML Schema constructs in UBL Schema and schema modules MUST contain the following namespace declaration on the xsd schema element:
                 xmlns:xsd="http://www.w3.org/2001/XMLSchema"</GuidanceText></Guidance><Guidance guidanceID="rule-GXS5" documentationID="rule-GXS5" prefixNumber="5" prefixToken="GXS"><Testability>Fully-Testable</Testability><GuidanceText>
               
                  
		  The xsd:substitutionGroup feature MUST NOT be used.
            </GuidanceText><TestCases ruleType="Schematron"><TestCase><CodeExample><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.ascc.net/xml/schematron">
   <title>UBL Naming and Design Rules</title>
   <ns prefix="xsi" uri="http://www.w3.org/2000/10/XMLSchema-instance"/>
   <ns prefix="xsd" uri="http://www.w3.org/2001/XMLSchema"/>
   <ns prefix="ccts" uri="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-1.0"/>
   <ns prefix="html" uri="http://www.w3.org/1999/xhtml"/>

<pattern id="GSX5" name="General XML Schema Rules">
   <rule id="GSX5" context="//xsd:element">
      <assert  test="not(@substitutionGroup)">
         [GSX5]:   The xsd:substitutionGroup feature MUST NOT be used.
      </assert>
   </rule>           
</pattern>

</schema>
]]></CodeExample></TestCase></TestCases></Guidance><Guidance guidanceID="rule-GXS6" documentationID="rule-GXS6" prefixNumber="6" prefixToken="GXS"><GuidanceText>
               
                  
		  The xsd:final attribute MUST be used to control extensions where there is a desire to prohibit further extensions.
            </GuidanceText></Guidance><Guidance guidanceID="rule-GXS7" documentationID="rule-GXS7" prefixNumber="7" prefixToken="GXS"><GuidanceText>
               
                  
		  xsd:notation MUST NOT be used.
            </GuidanceText><TestCases ruleType="Schematron"><TestCase><CodeExample><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.ascc.net/xml/schematron">
   <title>UBL Naming and Design Rules</title>
   <ns prefix="xsi" uri="http://www.w3.org/2000/10/XMLSchema-instance"/>
   <ns prefix="xsd" uri="http://www.w3.org/2001/XMLSchema"/>
   <ns prefix="ccts" uri="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-1.0"/>
   <ns prefix="html" uri="http://www.w3.org/1999/xhtml"/>

<pattern id="GSX7" name="General XML Schema Rules">
   <rule id="GSX7" context="//xsd:notation">
      <assert test="true">
         [GSX7]:   xsd:notation MUST NOT be used.
      </assert>
   </rule>           
</pattern>

</schema>
]]></CodeExample></TestCase></TestCases></Guidance><Guidance guidanceID="rule-GXS8" documentationID="rule-GXS8" prefixNumber="8" prefixToken="GXS"><GuidanceText>
               
                  
		  The xsd:all element MUST NOT be used.
            </GuidanceText><TestCases ruleType="Schematron"><TestCase><CodeExample><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.ascc.net/xml/schematron">
   <title>UBL Naming and Design Rules</title>
   <ns prefix="xsi" uri="http://www.w3.org/2000/10/XMLSchema-instance"/>
   <ns prefix="xsd" uri="http://www.w3.org/2001/XMLSchema"/>
   <ns prefix="ccts" uri="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-1.0"/>
   <ns prefix="html" uri="http://www.w3.org/1999/xhtml"/>

<pattern id="GSX8" name="General XML Schema Rules">
   <rule id="GSX8" context="//xsd:all">
      <assert test="true">
         [GSX8]:    The xsd:all element MUST NOT be used.
      </assert>
   </rule>           
</pattern>

</schema>
]]></CodeExample></TestCase></TestCases></Guidance><Guidance guidanceID="rule-GXS9" documentationID="rule-GXS9" prefixNumber="9" prefixToken="GXS"><Note>This requires some human knowledge about the use of xsd:choice.</Note><Testability>Partially-Testable</Testability><GuidanceText>
               
                  
		  The xsd:choice element SHOULD NOT be used where customisation and extensibility are a concern.
            </GuidanceText><TestCases ruleType="Schematron"><TestCase><CodeExample><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.ascc.net/xml/schematron">
   <title>UBL Naming and Design Rules</title>
   <ns prefix="xsi" uri="http://www.w3.org/2000/10/XMLSchema-instance"/>
   <ns prefix="xsd" uri="http://www.w3.org/2001/XMLSchema"/>
   <ns prefix="ccts" uri="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-1.0"/>
   <ns prefix="html" uri="http://www.w3.org/1999/xhtml"/>

<pattern id="GSX9" name="General XML Schema Rules">
   <rule id="GSX9" context="//xsd:choice">
      <assert test="true">
         [GSX9]:    The xsd:choice element SHOULD NOT be used where 
		 customisation and extensibility are a concern.
      </assert>
   </rule>           
</pattern>

</schema>
]]></CodeExample></TestCase></TestCases></Guidance><Guidance guidanceID="rule-GXS11" documentationID="rule-GXS11" prefixNumber="11" prefixToken="GXS"><Note>You would need to know the schema is a code-list schema.  </Note><Testability>Partially-Testable</Testability><GuidanceText>
               
                  
		  The xsd:union technique MUST NOT be used except for Code Lists. The xsd:union technique MAY be used for Code Lists. 
            </GuidanceText><TestCases ruleType="Schematron"><TestCase><CodeExample><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.ascc.net/xml/schematron">
   <title>UBL Naming and Design Rules</title>
   <ns prefix="xsi" uri="http://www.w3.org/2000/10/XMLSchema-instance"/>
   <ns prefix="xsd" uri="http://www.w3.org/2001/XMLSchema"/>
   <ns prefix="ccts" uri="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-1.0"/>
   <ns prefix="html" uri="http://www.w3.org/1999/xhtml"/>

<pattern id="GSX11" name="General XML Schema Rules">
   <rule id="GSX11" context="//xsd:union">
      <assert test="true">
         [GSX11]:   The xsd:union technique MUST NOT be used 
		 except for Code Lists.   The xsd:union technique 
		 MAY be used for Code Lists.         
      </assert>
   </rule>           
</pattern>

</schema>
]]></CodeExample></TestCase></TestCases></Guidance><Guidance guidanceID="rule-GXS12" documentationID="rule-GXS12" prefixNumber="12" prefixToken="GXS"><Note>The SHOULD NOT makes the rule optional.</Note><Testability>Partially-Testable</Testability><GuidanceText>
               
                  
		  UBL designed schema SHOULD NOT use xsd:appinfo. If used, xsd:appinfo MUST only be used to convey non-normative information.
            </GuidanceText></Guidance><Guidance guidanceID="rule-GXS15" documentationID="rule-GXS15" prefixNumber="15" prefixToken="GXS"><Testability>Untestable</Testability><GuidanceText>
               
                  
		  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.
            </GuidanceText></Guidance><Guidance guidanceID="rule-GXS16" documentationID="rule-GXS16" prefixNumber="16" prefixToken="GXS"><Testability>Fully-Testable</Testability><GuidanceText>
               
                  
		  The built in xsd:nillable attribute MUST NOT be used for any UBL declared element.
            </GuidanceText><TestCases ruleType="Schematron"><TestCase><CodeExample><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.ascc.net/xml/schematron">
   <title>UBL Naming and Design Rules</title>
   <ns prefix="xsi" uri="http://www.w3.org/2000/10/XMLSchema-instance"/>
   <ns prefix="xsd" uri="http://www.w3.org/2001/XMLSchema"/>
   <ns prefix="ccts" uri="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-1.0"/>
   <ns prefix="html" uri="http://www.w3.org/1999/xhtml"/>

<pattern id="GSX16" name="General XML Schema Rules">
   <rule id="GSX16" context="//xsd:element">
      <assert test="not(@nillable)">
         [GSX16]:    The built in xsd:nillable attribute MUST NOT be used 
		 for any UBL declared element.
      </assert>
   </rule>           
</pattern>

</schema>
]]></CodeExample></TestCase></TestCases></Guidance><Guidance guidanceID="rule-GXS17" documentationID="rule-GXS17" prefixNumber="17" prefixToken="GXS"><Testability>Fully-Testable</Testability><GuidanceText>
               
                  
		  The xsd:anyAttribute MUST NOT be used.
            </GuidanceText><TestCases ruleType="Schematron"><TestCase><CodeExample><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.ascc.net/xml/schematron">
   <title>UBL Naming and Design Rules</title>
   <ns prefix="xsi" uri="http://www.w3.org/2000/10/XMLSchema-instance"/>
   <ns prefix="xsd" uri="http://www.w3.org/2001/XMLSchema"/>
   <ns prefix="ccts" uri="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-1.0"/>
   <ns prefix="html" uri="http://www.w3.org/1999/xhtml"/>

<pattern id="GSX17" name="General XML Schema Rules">
   <rule id="GSX17" context="//xsd:anyAttribute">
      <assert test="true">
         [GSX17]:    The xsd:anyAttribute MUST NOT be used.   
      </assert>
   </rule>           
</pattern>

</schema>
]]></CodeExample></TestCase></TestCases></Guidance><Guidance guidanceID="rule-GXS13" documentationID="rule-GXS13" prefixNumber="13" prefixToken="GXS"><Testability>Untestable</Testability><GuidanceText>
               
                  
		  Complex Type extension or restriction MAY be used where appropriate. 
            </GuidanceText></Guidance><Guidance guidanceID="rule-IND1" documentationID="rule-IND1" prefixNumber="1" prefixToken="IND"><Testability>Untestable</Testability><GuidanceText>
               
                  
		   All UBL instance documents MUST validate to a corresponding schema. 
            </GuidanceText></Guidance><Guidance guidanceID="rule-IND2" documentationID="rule-IND2" prefixNumber="2" prefixToken="IND"><Note>Untestable in Schematron because you can't test against the XML declaration.</Note><GuidanceText>
               
                  
		   All UBL instance documents MUST identify their character encoding within the XML declaration. 
            </GuidanceText></Guidance><Guidance guidanceID="rule-IND3" documentationID="rule-IND3" prefixNumber="3" prefixToken="IND"><Note>Untestable in Schematron because you can't test against the XML declaration.</Note><GuidanceText>
               
                  
		   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. 
            </GuidanceText></Guidance><Guidance guidanceID="rule-IND5" documentationID="rule-IND5" prefixNumber="5" prefixToken="IND"><Note>This is an instance rule and not a schema rule.</Note><Testability>Untestable</Testability><GuidanceText>
               
                  
		  UBL conformant instance documents MUST NOT contain an element devoid of content or containing null values, except in the case of extension, where theUBLExtensionContent element is used. 
            </GuidanceText></Guidance><Guidance guidanceID="rule-IND6" documentationID="rule-IND6" prefixNumber="6" prefixToken="IND"><Testability>Untestable</Testability><GuidanceText>
               
                  
		  The absence of a construct or data in a UBL instance document MUST NOT carry meaning. 
            </GuidanceText></Guidance></NDRProfile>
