Tech-invite3GPPspaceIETFspace
959493929190898887868584838281807978777675747372717069686766656463626160595857565554535251504948474645444342414039383736353433323130292827262524232221201918171615141312111009080706050403020100
in Index   Prev   Next

RFC 4912

Abstract Syntax Notation X (ASN.X)

Pages: 165
Experimental
Part 6 of 6 – Pages 118 to 165
First   Prev   None

Top   ToC   RFC4912 - Page 118   prevText

Appendix B. ASN.X for ASN.X

This appendix is non-normative. <?xml version="1.0"?> <asnx:module xmlns:asnx="urn:ietf:params:xml:ns:asnx" name="AbstractSyntaxNotation-X" identifier="1.3.6.1.4.1.21472.1.0.1" schemaIdentity="urn:oid:1.3.6.1.4.1.21472.1.0.1" targetNamespace="urn:ietf:params:xml:ns:asnx" targetPrefix="asnx" extensibilityImplied="true"> <annotation> Copyright (C) The IETF Trust (2007). This version of this ASN.X module is part of RFC 4912; see the RFC itself for full legal notices. Regarding this ASN.X module or any portion of it, the author makes no guarantees and is not responsible for any damage resulting from its use. The author grants irrevocable permission to anyone to use, modify, and distribute it in any way that does not diminish the rights of anyone else to use, modify, and distribute it, provided that redistributed derivative works do not contain misleading author or version information. Derivative works need not be licensed under similar terms. </annotation>
Top   ToC   RFC4912 - Page 119
    <import name="GSER-EncodingInstructionNotation"
            identifier="1.3.6.1.4.1.21472.1.0.2"
            schemaIdentity="urn:oid:1.3.6.1.4.1.21472.1.0.2"
            namespace="urn:ietf:params:xml:ns:asnx"/>

    <import name="XER-EncodingInstructionNotation"
            identifier="1.3.6.1.4.1.21472.1.0.3"
            schemaIdentity="urn:oid:1.3.6.1.4.1.21472.1.0.3"
            namespace="urn:ietf:params:xml:ns:asnx"/>

    <namedType name="ModuleDefinition">
     <type>
      <sequence insertions="hollow">
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <optional>
        <attribute name="format" versionIndicator="true">
         <type>
          <constrained type="asnx:UTF8String">
           <literalValue>1.0</literalValue>
           <extension/>
          </constrained>
         </type>
        </attribute>
        <default literalValue="1.0"/>
       </optional>
       <attribute name="name" type="asnx:ModuleReference"/>
       <optional>
        <attribute name="identifier" type="asnx:DefinitiveIdentifier"/>
       </optional>
       <optional>
        <attribute name="schemaIdentity" type="asnx:AnyURI"/>
       </optional>
       <optional>
        <attribute name="targetNamespace" type="asnx:AnyURI"/>
       </optional>
       <optional>
        <attribute name="targetPrefix" type="asnx:NCName"/>
       </optional>
       <optional>
        <attribute name="tagDefault" type="asnx:TagDefault"/>
        <default literalValue="automatic"/>
       </optional>
       <optional>
        <attribute name="extensibilityImplied" type="asnx:BOOLEAN"/>
        <default literalValue="false"/>
       </optional>
Top   ToC   RFC4912 - Page 120
       <optional>
        <element name="export">
         <annotation> export is not used in this version </annotation>
         <type>
          <sequence/>
         </type>
        </element>
       </optional>
       <optional>
        <group name="imports" type="asnx:ImportList"/>
       </optional>
       <optional>
        <group name="assignments" type="asnx:AssignmentList"/>
       </optional>
       <optional>
        <element name="encodingControls"
                 type="asnx:EncodingControlSections"/>
       </optional>
      </sequence>
     </type>
    </namedType>

    <namedType name="ModuleReference" type="asnx:TypeReference"/>

    <namedType name="DefinitiveIdentifier"
               type="asnx:OBJECT-IDENTIFIER"/>

    <namedType name="TagDefault">
     <type>
      <enumerated>
       <enumeration name="explicit"/>
       <enumeration name="implicit"/>
       <enumeration name="automatic"/>
      </enumerated>
     </type>
    </namedType>

    <namedType name="Annotation" type="asnx:Markup"/>

    <namedType name="ImportList">
     <type>
      <sequenceOf minSize="1">
       <element name="import" type="asnx:Import"/>
      </sequenceOf>
     </type>
    </namedType>

    <namedType name="Import">
Top   ToC   RFC4912 - Page 121
     <type>
      <sequence>
       <optional>
        <attribute name="name" type="asnx:ModuleReference"/>
       </optional>
       <optional>
        <attribute name="identifier" type="asnx:DefinitiveIdentifier"/>
       </optional>
       <optional>
        <attribute name="schemaIdentity" type="asnx:AnyURI"/>
       </optional>
       <optional>
        <attribute name="namespace" type="asnx:AnyURI"/>
       </optional>
       <optional>
        <attribute name="schemaLocation" type="asnx:AnyURI"/>
       </optional>
      </sequence>
     </type>
    </namedType>

    <namedType name="AssignmentList">
     <type>
      <sequenceOf minSize="1">
       <group name="assignment" type="asnx:Assignment"/>
      </sequenceOf>
     </type>
    </namedType>

    <namedType name="Assignment">
     <type>
      <choice insertions="none">
       <element name="namedType" type="asnx:TypeAssignment"/>
       <element name="namedValue" type="asnx:ValueAssignment"/>
       <element name="namedValueSet"
                type="asnx:ValueSetTypeAssignment"/>
       <element name="namedClass" type="asnx:ObjectClassAssignment"/>
       <element name="namedObject" type="asnx:ObjectAssignment"/>
       <element name="namedObjectSet" type="asnx:ObjectSetAssignment"/>
       <group name="component" type="asnx:TopLevelNamedType"/>
      </choice>
     </type>
    </namedType>

    <namedType name="TypeAssignment">
     <type>
      <sequence>
       <optional>
Top   ToC   RFC4912 - Page 122
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:TypeReference"/>
       <group name="type" type="asnx:Type"/>
      </sequence>
     </type>
    </namedType>

    <namedType name="TypeReference">
     <type>
      <constrained type="asnx:UTF8String">
       <pattern literalValue="[A-Z]\w*(-\w+)*"/>
       <!-- \w is equivalent to [a-zA-Z0-9] -->
      </constrained>
     </type>
    </namedType>

    <namedType name="ValueAssignment">
     <type>
      <sequence>
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:ValueReference"/>
       <group name="type" type="asnx:Type"/>
       <group name="value" type="asnx:Value"/>
      </sequence>
     </type>
    </namedType>

    <namedType name="ValueReference" type="asnx:Identifier"/>

    <namedType name="Identifier">
     <type>
      <constrained type="asnx:UTF8String">
       <pattern literalValue="[a-z]\w(-\w+)*"/>
      </constrained>
     </type>
    </namedType>

    <namedType name="ValueSetTypeAssignment">
     <type>
      <sequence>
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:TypeReference"/>
       <group name="type" type="asnx:Type"/>
Top   ToC   RFC4912 - Page 123
       <group name="valueSet" type="asnx:ValueSet"/>
      </sequence>
     </type>
    </namedType>

    <namedType name="ObjectClassAssignment">
     <type>
      <sequence>
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:ObjectClassReference"/>
       <group name="objectClass" type="asnx:ObjectClass"/>
      </sequence>
     </type>
    </namedType>

    <namedType name="ObjectClassReference">
     <type>
      <constrained type="asnx:UTF8String">
       <pattern literalValue="[A-Z][A-Z0-9]*(-[A-Z0-9]+)*"/>
      </constrained>
     </type>
    </namedType>

    <namedType name="ObjectAssignment">
     <type>
      <sequence>
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:ObjectReference"/>
       <group name="objectClass" type="asnx:DefinedObjectClass"/>
       <group name="object" type="asnx:Object"/>
      </sequence>
     </type>
    </namedType>

    <namedType name="ObjectReference" type="asnx:ValueReference"/>

    <namedType name="ObjectSetAssignment">
     <type>
      <sequence>
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:ObjectSetReference"/>
       <group name="objectClass" type="asnx:DefinedObjectClass"/>
Top   ToC   RFC4912 - Page 124
       <group name="objectSet" type="asnx:ObjectSet"/>
      </sequence>
     </type>
    </namedType>

    <namedType name="ObjectSetReference" type="asnx:TypeReference"/>

    <namedType name="TopLevelNamedType">
     <type>
      <constrained type="asnx:NamedType">
       <withComponents partial="true">
        <element name="component">
         <withComponents partial="true">
          <group name="definition">
           <withComponents partial="true">
            <group name="reference" use="absent"/>
           </withComponents>
          </group>
         </withComponents>
        </element>
        <element name="element">
         <withComponents partial="true">
          <group name="definition">
           <withComponents partial="true">
            <group name="reference" use="absent"/>
           </withComponents>
          </group>
         </withComponents>
        </element>
        <element name="attribute">
         <withComponents partial="true">
          <group name="definition">
           <withComponents partial="true">
            <group name="reference" use="absent"/>
           </withComponents>
          </group>
         </withComponents>
        </element>
        <element name="group" use="absent"/>
        <element name="member" use="absent"/>
        <element name="item" use="absent"/>
        <element name="simpleContent" use="absent"/>
       </withComponents>
      </constrained>
     </type>
    </namedType>

    <namedType name="NamedType">
Top   ToC   RFC4912 - Page 125
     <type>
      <choice insertions="singular">
       <element name="component" type="asnx:Element"/>
       <element name="element" type="asnx:Element"/>
       <element name="attribute" type="asnx:Attribute"/>
       <element name="group" type="asnx:InvisibleNamedType"/>
       <element name="member" type="asnx:InvisibleNamedType"/>
       <element name="item" type="asnx:InvisibleNamedType"/>
       <element name="simpleContent" type="asnx:InvisibleNamedType"/>
      </choice>
     </type>
    </namedType>

    <namedType name="Attribute">
     <type>
      <constrained type="asnx:GenericNamedType">
       <withComponents partial="true">
        <group name="definition">
         <withComponents partial="true">
          <group name="local">
           <withComponents partial="true">
            <attribute name="typeAsVersion" use="absent"/>
           </withComponents>
          </group>
         </withComponents>
        </group>
       </withComponents>
      </constrained>
     </type>
    </namedType>

    <namedType name="Element">
     <type>
      <constrained type="asnx:GenericNamedType">
       <withComponents partial="true">
        <group name="definition">
         <withComponents partial="true">
          <group name="local">
           <withComponents partial="true">
            <attribute name="versionIndicator" use="absent"/>
           </withComponents>
          </group>
         </withComponents>
        </group>
       </withComponents>
      </constrained>
     </type>
    </namedType>
Top   ToC   RFC4912 - Page 126
    <namedType name="InvisibleNamedType">
     <type>
      <constrained type="asnx:GenericNamedType">
       <withComponents partial="true">
        <group name="definition">
         <withComponents partial="true">
          <group name="reference" use="absent"/>
          <group name="local">
           <withComponents partial="true">
            <attribute name="typeAsVersion" use="absent"/>
            <attribute name="versionIndicator" use="absent"/>
           </withComponents>
          </group>
         </withComponents>
        </group>
       </withComponents>
      </constrained>
     </type>
    </namedType>

    <namedType name="GenericNamedType">
     <type>
      <sequence insertions="hollow">
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <optional>
        <attribute name="identifier" type="asnx:IdentifierOrEmpty"/>
       </optional>
       <group name="definition">
        <type>
         <choice>
          <group name="reference" type="asnx:DefinedComponent"/>
          <group name="local" type="asnx:LocalComponent"/>
         </choice>
        </type>
       </group>
      </sequence>
     </type>
    </namedType>

    <namedType name="IdentifierOrEmpty">
     <type>
      <constrained type="asnx:UTF8String">
       <union>
        <includes type="asnx:Identifier"/>
        <literalValue></literalValue>
       </union>
Top   ToC   RFC4912 - Page 127
      </constrained>
     </type>
    </namedType>

    <namedType name="DefinedComponent">
     <type>
      <constrained>
       <type>
        <sequence insertions="hollow">
         <group name="name">
          <type>
           <choice insertions="none">
            <attribute name="ref" type="asnx:QName"/>
            <attribute name="elementType" type="asnx:Name"/>
           </choice>
          </type>
         </group>
         <optional>
          <attribute name="namespace" type="asnx:AnyURI"/>
         </optional>
         <optional>
          <attribute name="context" type="asnx:AnyURI"/>
         </optional>
         <optional>
          <attribute name="embedded" type="asnx:BOOLEAN"/>
         </optional>
         <optional>
          <group name="prefixes" type="asnx:EncodingPrefixes"/>
         </optional>
        </sequence>
       </type>
       <union>
        <withComponents partial="true">
         <group name="name">
          <withComponents>
           <attribute name="ref" use="present"/>
          </withComponents>
         </group>
         <attribute name="namespace" use="absent"/>
        </withComponents>
        <withComponents partial="true">
         <group name="name">
          <withComponents>
           <attribute name="elementType" use="present"/>
          </withComponents>
         </group>
         <attribute name="embedded" use="absent"/>
        </withComponents>
Top   ToC   RFC4912 - Page 128
       </union>
      </constrained>
     </type>
    </namedType>

    <namedType name="LocalComponent">
     <type>
      <sequence>
       <attribute name="name" type="asnx:NCName"/>
       <optional>
        <attribute name="typeAsVersion" type="asnx:BOOLEAN"/>
       </optional>
       <optional>
        <attribute name="versionIndicator" type="asnx:BOOLEAN"/>
       </optional>
       <group name="type" type="asnx:Type"/>
      </sequence>
     </type>
    </namedType>

    <namedType name="Type">
     <type>
      <choice insertions="none">
       <attribute name="type" identifier="typeRef" type="asnx:QName"/>
       <element name="type" type="asnx:ElementFormType"/>
      </choice>
     </type>
    </namedType>

    <namedType name="ElementFormType">
     <type>
      <sequence insertions="hollow">
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <optional>
        <attribute name="explicit" type="asnx:BOOLEAN"/>
       </optional>
       <group name="definition">
        <type>
         <choice>
          <group name="reference" type="asnx:DefinedType"/>
          <element name="expanded" type="asnx:ExpandedType"/>
          <attribute name="ancestor">
           <type>
            <constrained type="asnx:INTEGER">
             <range>
              <minInclusive literalValue="1"/>
Top   ToC   RFC4912 - Page 129
             </range>
            </constrained>
           </type>
          </attribute>
          <element name="namedBitList" type="asnx:NamedBitList"/>
          <element name="namedNumberList" type="asnx:NamedNumberList"/>
          <element name="enumerated" type="asnx:EnumeratedType"/>
          <element name="tagged" type="asnx:TaggedType"/>
          <element name="prefixed" type="asnx:EncodingPrefixedType"/>
          <element name="selection" type="asnx:SelectionType"/>
          <element name="instanceOf" type="asnx:InstanceOfType"/>
          <element name="fromClass" type="asnx:ObjectClassFieldType"/>
          <element name="fromObjects"
                   type="asnx:InformationFromObjects"/>
          <element name="sequence" type="asnx:SequenceType"/>
          <element name="set" type="asnx:SetType"/>
          <element name="choice" type="asnx:ChoiceType"/>
          <element name="union" type="asnx:UnionType"/>
          <element name="sequenceOf" type="asnx:SequenceOfType"/>
          <element name="setOf" type="asnx:SetOfType"/>
          <element name="list" type="asnx:ListType"/>
          <element name="constrained" type="asnx:ConstrainedType"/>
         </choice>
        </type>
       </group>
      </sequence>
     </type>
    </namedType>

    <namedType name="DefinedType">
     <type>
      <constrained>
       <type>
        <sequence>
         <group name="name">
          <type>
           <choice insertions="none">
            <attribute name="ref" type="asnx:QName"/>
            <attribute name="elementType" type="asnx:Name"/>
           </choice>
          </type>
         </group>
         <optional>
          <attribute name="context" type="asnx:AnyURI"/>
         </optional>
         <optional>
          <attribute name="embedded" type="asnx:BOOLEAN"/>
         </optional>
Top   ToC   RFC4912 - Page 130
        </sequence>
       </type>
       <union>
        <withComponents partial="true">
         <group name="name">
          <withComponents>
           <attribute name="ref" use="present"/>
          </withComponents>
         </group>
        </withComponents>
        <withComponents partial="true">
         <group name="name">
          <withComponents>
           <attribute name="elementType" use="present"/>
          </withComponents>
         </group>
         <attribute name="embedded" use="absent"/>
        </withComponents>
       </union>
      </constrained>
     </type>
    </namedType>

    <namedType name="ExpandedType">
     <type>
      <sequence>
       <optional>
        <attribute name="name" type="asnx:NCName"/>
       </optional>
       <optional>
        <element name="module" type="asnx:ReferencedModule"/>
       </optional>
       <group name="type" type="asnx:Type"/>
      </sequence>
     </type>
    </namedType>

    <namedType name="ReferencedModule">
     <type>
      <sequence>
       <optional>
        <attribute name="name" type="asnx:ModuleReference"/>
       </optional>
       <optional>
        <attribute name="identifier" type="asnx:DefinitiveIdentifier"/>
       </optional>
       <optional>
        <attribute name="schemaIdentity" type="asnx:AnyURI"/>
Top   ToC   RFC4912 - Page 131
       </optional>
      </sequence>
     </type>
    </namedType>

    <namedType name="NamedBitList">
     <type>
      <sequenceOf minSize="1">
       <element name="namedBit" type="asnx:NamedBit"/>
      </sequenceOf>
     </type>
    </namedType>

    <namedType name="NamedBit">
     <type>
      <sequence>
       <attribute name="name" type="asnx:NCName"/>
       <optional>
        <attribute name="identifier" type="asnx:Identifier"/>
       </optional>
       <attribute name="bit">
        <type>
         <constrained type="asnx:INTEGER">
          <range>
           <minInclusive literalValue="0"/>
          </range>
         </constrained>
        </type>
       </attribute>
      </sequence>
     </type>
    </namedType>

    <namedType name="NamedNumberList">
     <type>
      <sequenceOf minSize="1">
       <element name="namedNumber" type="asnx:NamedNumber"/>
      </sequenceOf>
     </type>
    </namedType>

    <namedType name="NamedNumber">
     <type>
      <sequence>
       <attribute name="name" type="asnx:NCName"/>
       <optional>
        <attribute name="identifier" type="asnx:Identifier"/>
       </optional>
Top   ToC   RFC4912 - Page 132
       <attribute name="number" type="asnx:INTEGER"/>
      </sequence>
     </type>
    </namedType>

    <namedType name="EnumeratedType">
     <type>
      <sequence>
       <group name="root" type="asnx:Enumeration"/>
       <optional>
        <element name="extension">
         <type>
          <sequence>
           <optional>
            <element name="exception" type="asnx:ExceptionSpec"/>
           </optional>
           <optional>
            <group name="additions" type="asnx:Enumeration"/>
           </optional>
          </sequence>
         </type>
        </element>
       </optional>
      </sequence>
     </type>
    </namedType>

    <namedType name="Enumeration">
     <type>
      <sequenceOf minSize="1">
       <element name="enumeration" type="asnx:EnumerationItem"/>
      </sequenceOf>
     </type>
    </namedType>

    <namedType name="EnumerationItem">
     <type>
      <sequence>
       <attribute name="name" type="asnx:NCName"/>
       <optional>
        <attribute name="identifier" type="asnx:Identifier"/>
       </optional>
       <optional>
        <attribute name="number" type="asnx:INTEGER"/>
       </optional>
      </sequence>
     </type>
    </namedType>
Top   ToC   RFC4912 - Page 133
    <namedType name="Tag">
     <type>
      <sequence>
       <optional>
        <attribute name="tagClass" type="asnx:TagClass"/>
       </optional>
       <attribute name="number">
        <type>
         <constrained type="asnx:INTEGER">
          <range>
           <minInclusive literalValue="0"/>
          </range>
         </constrained>
        </type>
       </attribute>
       <optional>
        <attribute name="tagging" type="asnx:Tagging"/>
       </optional>
      </sequence>
     </type>
    </namedType>

    <namedType name="TaggedType">
     <type>
      <sequence>
       <componentsOf type="asnx:Tag"/>
       <group name="type" type="asnx:Type"/>
      </sequence>
     </type>
    </namedType>

    <namedType name="TagClass">
     <type>
      <enumerated>
       <enumeration name="universal"/>
       <enumeration name="application"/>
       <enumeration name="private"/>
      </enumerated>
     </type>
    </namedType>

    <namedType name="Tagging">
     <type>
      <enumerated>
       <enumeration name="explicit"/>
       <enumeration name="implicit"/>
      </enumerated>
     </type>
Top   ToC   RFC4912 - Page 134
    </namedType>

    <namedType name="EncodingPrefixedType">
     <type>
      <sequence insertions="hollow">
       <group name="prefixes" type="asnx:EncodingPrefixes"/>
       <group name="type" type="asnx:Type"/>
      </sequence>
     </type>
    </namedType>

    <namedType name="EncodingPrefixes">
     <type>
      <sequenceOf minSize="1">
       <group name="prefix" type="asnx:EncodingPrefix"/>
      </sequenceOf>
     </type>
    </namedType>

    <namedType name="EncodingPrefix">
     <type>
      <choice insertions="singular">
       <element name="TAG" identifier="tag" type="asnx:Tag"/>
       <element name="GSER" identifier="gser"
                type="asnx:GSER-EncodingInstruction"/>
       <element name="XER" identifier="xer"
                type="asnx:XER-EncodingInstruction"/>
       <!-- plus encoding instructions
            for other encoding rules in the future -->
      </choice>
     </type>
    </namedType>

    <namedType name="SelectionType">
     <type>
      <sequence>
       <group name="alternative">
        <type>
         <choice insertions="singular">
          <attribute name="component" type="asnx:QName"/>
          <attribute name="element" type="asnx:QName"/>
          <attribute name="attribute" type="asnx:QName"/>
          <attribute name="group" type="asnx:QName"/>
          <attribute name="member" type="asnx:QName"/>
         </choice>
        </type>
       </group>
       <group name="type" type="asnx:Type"/>
Top   ToC   RFC4912 - Page 135
      </sequence>
     </type>
    </namedType>

    <namedType name="InstanceOfType" type="asnx:DefinedObjectClass"/>

    <namedType name="ObjectClassFieldType">
     <type>
      <sequence>
       <group name="objectClass" type="asnx:DefinedObjectClass"/>
       <group name="fieldName" type="asnx:FieldName"/>
      </sequence>
     </type>
    </namedType>

    <namedType name="FieldName">
     <type>
      <choice insertions="singular">
       <attribute name="fieldName" identifier="fieldNameAtt"
                  type="asnx:PrimitiveFieldNames"/>
       <element name="fieldName" type="asnx:PrimitiveFieldNames"/>
      </choice>
     </type>
    </namedType>

    <namedType name="PrimitiveFieldNames" type="asnx:UTF8String"/>

    <namedType name="InformationFromObjects">
     <type>
      <sequence insertions="hollow">
       <group name="referencedObjects" type="asnx:ReferencedObjects"/>
       <group name="fieldName" type="asnx:FieldName"/>
      </sequence>
     </type>
    </namedType>

    <namedType name="ReferencedObjects">
     <type>
      <choice insertions="singular">
       <group name="object" type="asnx:Object"/>
       <group name="objectSet" type="asnx:ObjectSet"/>
      </choice>
     </type>
    </namedType>

    <namedType name="Insertions">
     <type>
      <enumerated>
Top   ToC   RFC4912 - Page 136
       <enumeration name="none"/>
       <enumeration name="hollow"/>
       <enumeration name="singular"/>
       <enumeration name="uniform"/>
       <enumeration name="multiform"/>
      </enumerated>
     </type>
    </namedType>

    <namedType name="SequenceType">
     <type>
      <sequence insertions="hollow">
       <optional>
        <attribute name="insertions" type="asnx:Insertions"/>
       </optional>
       <optional>
        <group name="root" type="asnx:ComponentTypeList"/>
       </optional>
       <optional>
        <group name="extensionAndFinal">
         <type>
          <sequence insertions="hollow">
           <element name="extension">
            <type>
             <sequence insertions="hollow">
              <optional>
               <element name="exception" type="asnx:ExceptionSpec"/>
              </optional>
              <optional>
               <group name="additions" type="asnx:ExtensionAdditions"/>
              </optional>
             </sequence>
            </type>
           </element>
           <optional>
            <group name="root" type="asnx:ComponentTypeList"/>
           </optional>
          </sequence>
         </type>
        </group>
       </optional>
      </sequence>
     </type>
    </namedType>

    <namedType name="ComponentTypeList">
     <type>
      <sequenceOf minSize="1">
Top   ToC   RFC4912 - Page 137
       <group name="componentType" type="asnx:ComponentType"/>
      </sequenceOf>
     </type>
    </namedType>

    <namedType name="ComponentType">
     <type>
      <choice insertions="none">
       <group name="component" type="asnx:SequenceNamedType"/>
       <element name="optional">
        <type>
         <sequence>
          <group name="component" type="asnx:SequenceNamedType"/>
          <optional>
           <element name="default" type="asnx:Value"/>
          </optional>
         </sequence>
        </type>
       </element>
       <element name="componentsOf" type="asnx:Type"/>
      </choice>
     </type>
    </namedType>

    <namedType name="SequenceNamedType">
     <type>
      <constrained type="asnx:NamedType">
       <withComponents partial="true">
        <element name="member" use="absent"/>
        <element name="item" use="absent"/>
       </withComponents>
      </constrained>
     </type>
    </namedType>

    <namedType name="ExtensionAdditions">
     <type>
      <sequenceOf minSize="1">
       <group name="addition" type="asnx:ExtensionAddition"/>
      </sequenceOf>
     </type>
    </namedType>

    <namedType name="ExtensionAddition">
     <type>
      <choice insertions="none">
       <element name="extensionGroup"
                type="asnx:ExtensionAdditionGroup"/>
Top   ToC   RFC4912 - Page 138
       <group name="componentType" type="asnx:ComponentType"/>
      </choice>
     </type>
    </namedType>

    <namedType name="ExtensionAdditionGroup">
     <type>
      <sequence insertions="hollow">
       <optional>
        <attribute name="version" type="asnx:VersionNumber"/>
       </optional>
       <group name="componentTypes" type="asnx:ComponentTypeList"/>
      </sequence>
     </type>
    </namedType>

    <namedType name="VersionNumber">
     <type>
      <constrained type="asnx:INTEGER">
       <range>
        <minInclusive literalValue="2"/>
       </range>
      </constrained>
     </type>
    </namedType>

    <namedType name="SetType" type="asnx:SequenceType"/>

    <namedType name="ChoiceOrUnionType">
     <type>
      <sequence insertions="hollow">
       <optional>
        <attribute name="insertions" type="asnx:Insertions"/>
       </optional>
       <optional>
        <attribute name="precedence" type="asnx:PrecedenceList"/>
       </optional>
       <group name="root" type="asnx:AlternativeTypeList"/>
       <optional>
        <element name="extension">
         <type>
          <sequence insertions="hollow">
           <optional>
            <element name="exception" type="asnx:ExceptionSpec"/>
           </optional>
           <optional>
            <group name="additions"
                   type="asnx:ExtensionAdditionAlternatives"/>
Top   ToC   RFC4912 - Page 139
           </optional>
          </sequence>
         </type>
        </element>
       </optional>
      </sequence>
     </type>
    </namedType>

    <namedType name="PrecedenceList">
     <type>
      <list minSize="1">
       <item name="member" type="asnx:QName"/>
      </list>
     </type>
    </namedType>

    <namedType name="AlternativeTypeList">
     <type>
      <sequenceOf minSize="1">
       <group name="component" type="asnx:ChoiceOrUnionNamedType"/>
      </sequenceOf>
     </type>
    </namedType>

    <namedType name="ChoiceOrUnionNamedType">
     <type>
      <constrained type="asnx:NamedType">
       <withComponents partial="true">
        <element name="item" use="absent"/>
        <element name="simpleContent" use="absent"/>
       </withComponents>
      </constrained>
     </type>
    </namedType>

    <namedType name="ExtensionAdditionAlternatives">
     <type>
      <sequenceOf minSize="1">
       <group name="addition" type="asnx:ExtensionAdditionAlternative"/>
      </sequenceOf>
     </type>
    </namedType>

    <namedType name="ExtensionAdditionAlternative">
     <type>
      <choice insertions="none">
       <element name="extensionGroup"
Top   ToC   RFC4912 - Page 140
                type="asnx:ExtensionAdditionAlternativesGroup"/>
       <group name="component" type="asnx:ChoiceOrUnionNamedType"/>
      </choice>
     </type>
    </namedType>

    <namedType name="ExtensionAdditionAlternativesGroup">
     <type>
      <sequence insertions="hollow">
       <optional>
        <attribute name="version" type="asnx:VersionNumber"/>
       </optional>
       <group name="alternatives" type="asnx:AlternativeTypeList"/>
      </sequence>
     </type>
    </namedType>

    <namedType name="ChoiceType">
     <type>
      <constrained type="asnx:ChoiceOrUnionType">
       <withComponents partial="true">
        <attribute name="precedence" use="absent"/>
        <group name="root">
         <withComponent>
          <includes type="asnx:ChoiceNamedType"/>
         </withComponent>
        </group>
        <element name="extension">
         <withComponents partial="true">
          <group name="additions">
           <withComponent>
            <withComponents partial="true">
             <element name="extensionGroup">
              <withComponents partial="true">
               <group name="alternatives">
                <withComponent>
                 <includes type="asnx:ChoiceNamedType"/>
                </withComponent>
               </group>
              </withComponents>
             </element>
             <group name="component">
              <includes type="asnx:ChoiceNamedType"/>
             </group>
            </withComponents>
           </withComponent>
          </group>
         </withComponents>
Top   ToC   RFC4912 - Page 141
        </element>
       </withComponents>
      </constrained>
     </type>
    </namedType>

    <namedType name="ChoiceNamedType">
     <type>
      <constrained type="asnx:ChoiceOrUnionNamedType">
       <withComponents partial="true">
        <element name="member" use="absent"/>
       </withComponents>
      </constrained>
     </type>
    </namedType>

    <namedType name="UnionType">
     <type>
      <constrained type="asnx:ChoiceOrUnionType">
       <withComponents partial="true">
        <attribute name="insertions" use="absent"/>
        <group name="root">
         <withComponent>
          <includes type="asnx:UnionNamedType"/>
         </withComponent>
        </group>
        <element name="extension">
         <withComponents partial="true">
          <group name="additions">
           <withComponent>
            <withComponents partial="true">
             <element name="extensionGroup">
              <withComponents partial="true">
               <group name="alternatives">
                <withComponent>
                 <includes type="asnx:UnionNamedType"/>
                </withComponent>
               </group>
              </withComponents>
             </element>
             <group name="component">
              <includes type="asnx:UnionNamedType"/>
             </group>
            </withComponents>
           </withComponent>
          </group>
         </withComponents>
        </element>
Top   ToC   RFC4912 - Page 142
       </withComponents>
      </constrained>
     </type>
    </namedType>

    <namedType name="UnionNamedType">
     <type>
      <constrained type="asnx:ChoiceOrUnionNamedType">
       <withComponents partial="true">
        <element name="component" use="absent"/>
        <element name="element" use="absent"/>
        <element name="attribute" use="absent"/>
        <element name="group" use="absent"/>
       </withComponents>
      </constrained>
     </type>
    </namedType>

    <namedType name="SequenceOfOrListType">
     <type>
      <sequence>
       <optional>
        <attribute name="minSize">
         <type>
          <constrained type="asnx:INTEGER">
           <range>
            <minInclusive literalValue="0"/>
           </range>
          </constrained>
         </type>
        </attribute>
       </optional>
       <optional>
        <attribute name="maxSize">
         <type>
          <constrained type="asnx:INTEGER">
           <range>
            <minInclusive literalValue="0"/>
           </range>
          </constrained>
         </type>
        </attribute>
       </optional>
       <group name="component">
        <type>
         <constrained type="asnx:NamedType">
          <withComponents partial="true">
           <element name="attribute" use="absent"/>
Top   ToC   RFC4912 - Page 143
           <element name="member" use="absent"/>
           <element name="simpleContent" use="absent"/>
          </withComponents>
         </constrained>
        </type>
       </group>
      </sequence>
     </type>
    </namedType>

    <namedType name="SequenceOfType">
     <type>
      <constrained type="asnx:SequenceOfOrListType">
       <withComponents partial="true">
        <group name="component">
         <withComponents partial="true">
          <element name="item" use="absent"/>
         </withComponents>
        </group>
       </withComponents>
      </constrained>
     </type>
    </namedType>

    <namedType name="SetOfType" type="asnx:SequenceOfType"/>

    <namedType name="ListType">
     <type>
      <constrained type="asnx:SequenceOfOrListType">
       <withComponents partial="true">
        <group name="component">
         <withComponents partial="true">
          <element name="component" use="absent"/>
          <element name="element" use="absent"/>
          <element name="group" use="absent"/>
         </withComponents>
        </group>
       </withComponents>
      </constrained>
     </type>
    </namedType>

    <namedType name="ConstrainedType">
     <type>
      <sequence insertions="hollow">
       <group name="type" type="asnx:Type"/>
       <group name="constraint" type="asnx:Constraint"/>
      </sequence>
Top   ToC   RFC4912 - Page 144
     </type>
    </namedType>

    <namedType name="Constraint">
     <type>
      <sequence>
       <group name="constraintSpec">
        <type>
         <choice insertions="none">
          <group name="subtype" type="asnx:ElementSetSpecs"/>
          <element name="constrainedBy"
                   type="asnx:UserDefinedConstraint"/>
          <element name="table" type="asnx:TableConstraint"/>
          <element name="contents" type="asnx:ContentsConstraint"/>
         </choice>
        </type>
       </group>
       <optional>
        <element name="exception" type="asnx:ExceptionSpec"/>
       </optional>
      </sequence>
     </type>
    </namedType>

    <namedType name="UserDefinedConstraint">
     <type>
      <sequence insertions="hollow">
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <optional>
        <group name="parameters" type="asnx:ConstraintParameters"/>
       </optional>
      </sequence>
     </type>
    </namedType>

    <namedType name="ConstraintParameters">
     <type>
      <sequenceOf minSize="1">
       <group name="parameter"
              type="asnx:UserDefinedConstraintParameter"/>
      </sequenceOf>
     </type>
    </namedType>

    <namedType name="UserDefinedConstraintParameter">
     <type>
Top   ToC   RFC4912 - Page 145
      <choice insertions="singular">
       <element name="valueParameter">
        <type>
         <sequence>
          <group name="type" type="asnx:Type"/>
          <group name="value" type="asnx:Value"/>
         </sequence>
        </type>
       </element>
       <element name="valueSetParameter">
        <type>
         <sequence>
          <group name="type" type="asnx:Type"/>
          <group name="valueSet" type="asnx:ValueSet"/>
         </sequence>
        </type>
       </element>
       <element name="objectParameter">
        <type>
         <sequence>
          <group name="objectClass" type="asnx:DefinedObjectClass"/>
          <group name="object" type="asnx:Object"/>
         </sequence>
        </type>
       </element>
       <element name="objectSetParameter">
        <type>
         <sequence>
          <group name="objectClass" type="asnx:DefinedObjectClass"/>
          <group name="objectSet" type="asnx:ObjectSet"/>
         </sequence>
        </type>
       </element>
       <element name="typeParameter">
        <type>
         <sequence>
          <group name="type" type="asnx:Type"/>
         </sequence>
        </type>
       </element>
       <element name="classParameter">
        <type>
         <sequence>
          <group name="objectClass" type="asnx:DefinedObjectClass"/>
         </sequence>
        </type>
       </element>
      </choice>
Top   ToC   RFC4912 - Page 146
     </type>
    </namedType>

    <namedType name="TableConstraint">
     <type>
      <sequence>
       <group name="objectSet" type="asnx:ObjectSet"/>
       <optional>
        <group name="componentRelation" type="asnx:AtNotations"/>
       </optional>
      </sequence>
     </type>
    </namedType>

    <namedType name="AtNotations">
     <type>
      <sequenceOf minSize="1">
       <element name="restrictBy" type="asnx:AtNotation"/>
      </sequenceOf>
     </type>
    </namedType>

    <namedType name="AtNotation" type="asnx:Markup"/>

    <namedType name="ContentsConstraint">
     <type>
      <constrained>
       <type>
        <sequence>
         <optional>
          <element name="containing" type="asnx:Type"/>
         </optional>
         <optional>
          <element name="encodedBy" type="asnx:Value"/>
         </optional>
        </sequence>
       </type>
       <union>
        <withComponents partial="true">
         <element name="containing" use="present"/>
        </withComponents>
        <withComponents partial="true">
         <element name="encodedBy" use="present"/>
        </withComponents>
       </union>
      </constrained>
     </type>
    </namedType>
Top   ToC   RFC4912 - Page 147
    <namedType name="ExceptionSpec">
     <type>
      <sequence>
       <group name="type" type="asnx:Type"/>
       <group name="value" type="asnx:Value"/>
      </sequence>
     </type>
    </namedType>

    <namedType name="Value">
     <type>
      <choice insertions="none">
       <attribute name="literalValue" identifier="literalValueAtt"
                  type="asnx:UTF8String"/>
       <element name="literalValue"
                type="asnx:ElementFormLiteralValue"/>
       <attribute name="value" identifier="valueRef" type="asnx:QName"/>
       <element name="value" type="asnx:ElementFormNotationalValue"/>
      </choice>
     </type>
    </namedType>

    <namedType name="ElementFormLiteralValue" type="asnx:Markup">
     <annotation>
      If asnx:literal="false" then the governing type of
      ElementFormLiteralValue is ElementFormNotationalValue.
     </annotation>
    </namedType>

    <namedType name="ElementFormNotationalValue">
     <type>
      <sequence insertions="hollow">
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <group name="definition">
        <type>
         <choice insertions="none">
          <group name="reference" type="asnx:Reference"/>
          <element name="expanded" type="asnx:ExpandedValue"/>
          <element name="fromObjects"
                   type="asnx:InformationFromObjects"/>
          <element name="openTypeValue">
           <type>
            <sequence>
             <group name="type" type="asnx:Type"/>
             <group name="value" type="asnx:Value"/>
            </sequence>
Top   ToC   RFC4912 - Page 148
           </type>
          </element>
          <group name="components" type="asnx:ComponentValueList"/>
         </choice>
        </type>
       </group>
      </sequence>
     </type>
    </namedType>

    <namedType name="Reference">
     <type>
      <sequence>
       <attribute name="ref" type="asnx:QName"/>
       <optional>
        <attribute name="context" type="asnx:AnyURI"/>
       </optional>
      </sequence>
     </type>
    </namedType>

    <namedType name="ExpandedValue">
     <type>
      <sequence>
       <optional>
        <attribute name="name" type="asnx:NCName"/>
       </optional>
       <optional>
        <element name="module" type="asnx:ReferencedModule"/>
       </optional>
       <group name="value" type="asnx:Value"/>
      </sequence>
     </type>
    </namedType>

    <namedType name="ComponentValueList">
     <type>
      <sequenceOf minSize="1">
       <group name="component" type="asnx:NamedValue"/>
      </sequenceOf>
     </type>
    </namedType>

    <namedType name="NamedValue">
     <type>
      <choice insertions="singular">
       <element name="component" type="asnx:GenericNamedValue"/>
       <element name="element" type="asnx:GenericNamedValue"/>
Top   ToC   RFC4912 - Page 149
       <element name="attribute" type="asnx:GenericNamedValue"/>
       <element name="group" type="asnx:GenericNamedValue"/>
       <element name="member" type="asnx:GenericNamedValue"/>
       <element name="item" type="asnx:GenericNamedValue"/>
       <element name="simpleContent" type="asnx:GenericNamedValue"/>
      </choice>
     </type>
    </namedType>

    <namedType name="GenericNamedValue">
     <type>
      <sequence>
       <attribute name="name" type="asnx:QName"/>
       <group name="value" type="asnx:Value"/>
      </sequence>
     </type>
    </namedType>

    <namedType name="ValueSet">
     <type>
      <choice insertions="none">
       <attribute name="valueSet" identifier="valueSetRef"
                  type="asnx:QName">
        <annotation>
         valueSet attribute is not used in this version
        </annotation>
       </attribute>
       <element name="valueSet" type="asnx:ElementFormValueSet"/>
      </choice>
     </type>
    </namedType>

    <namedType name="ElementFormValueSet">
     <type>
      <sequence insertions="hollow">
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <group name="definition">
        <type>
         <choice insertions="none">
          <group name="elementSetSpecs" type="asnx:ElementSetSpecs"/>
         </choice>
        </type>
       </group>
      </sequence>
     </type>
    </namedType>
Top   ToC   RFC4912 - Page 150
    <namedType name="ElementSetSpecs">
     <type>
      <sequence insertions="hollow">
       <group name="root" type="asnx:ValueElementSetSpec"/>
       <optional>
        <element name="extension">
         <type>
          <sequence insertions="hollow">
           <optional>
            <group name="additions" type="asnx:ValueElementSetSpec"/>
           </optional>
          </sequence>
         </type>
        </element>
       </optional>
      </sequence>
     </type>
    </namedType>

    <namedType name="ValueElementSetSpec">
     <type>
      <constrained type="asnx:ElementSetSpec">
       <withComponents partial="true">
        <element name="object" use="absent"/>
        <element name="objectSet" use="absent"/>
        <element name="union">
         <withComponent>
          <includes type="asnx:ValueElementSetSpec"/>
         </withComponent>
        </element>
        <element name="intersection">
         <withComponent>
          <includes type="asnx:ValueElementSetSpec"/>
         </withComponent>
        </element>
        <element name="all">
         <withComponents partial="true">
          <group name="elements">
           <includes type="asnx:ValueElementSetSpec"/>
          </group>
          <element name="except">
           <includes type="asnx:ValueElementSetSpec"/>
          </element>
         </withComponents>
        </element>
       </withComponents>
      </constrained>
     </type>
Top   ToC   RFC4912 - Page 151
    </namedType>

    <namedType name="ElementSetSpec">
     <type>
      <choice insertions="singular">
       <element name="literalValue"
                type="asnx:ElementFormLiteralValue"/>
       <element name="value" type="asnx:ElementFormNotationalValue"/>
       <element name="includes" type="asnx:Type"/>
       <element name="range" type="asnx:ValueRange"/>
       <element name="size" type="asnx:Constraint"/>
       <element name="typeConstraint" type="asnx:Type"/>
       <element name="from" type="asnx:Constraint"/>
       <element name="withComponent" type="asnx:Constraint"/>
       <element name="withComponents"
                type="asnx:MultipleTypeConstraints"/>
       <element name="pattern" type="asnx:Value"/>
       <element name="object" type="asnx:ElementFormObject"/>
       <element name="objectSet" type="asnx:ElementFormObjectSet"/>
       <element name="union" type="asnx:ElementSetSpecList"/>
       <element name="intersection" type="asnx:ElementSetSpecList"/>
       <element name="all">
        <type>
         <sequence>
          <optional>
           <group name="elements" type="asnx:ElementSetSpec"/>
          </optional>
          <element name="except" type="asnx:ElementSetSpec"/>
         </sequence>
        </type>
       </element>
      </choice>
     </type>
    </namedType>

    <namedType name="ElementSetSpecList">
     <type>
      <sequenceOf minSize="2">
       <group name="elements" type="asnx:ElementSetSpec"/>
      </sequenceOf>
     </type>
    </namedType>

    <namedType name="ValueRange">
     <type>
      <sequence>
       <optional>
        <group name="minimum">
Top   ToC   RFC4912 - Page 152
         <type>
          <choice insertions="none">
           <element name="minInclusive" type="asnx:EndValue"/>
           <element name="minExclusive" type="asnx:EndValue"/>
          </choice>
         </type>
        </group>
        <default>
         <literalValue>
          <minInclusive/>
         </literalValue>
        </default>
       </optional>
       <optional>
        <group name="maximum">
         <type>
          <choice insertions="none">
           <element name="maxInclusive" type="asnx:EndValue"/>
           <element name="maxExclusive" type="asnx:EndValue"/>
          </choice>
         </type>
        </group>
        <default>
         <literalValue>
          <maxInclusive/>
         </literalValue>
        </default>
       </optional>
      </sequence>
     </type>
    </namedType>

    <namedType name="EndValue">
     <type>
      <sequence insertions="hollow">
       <optional>
        <group name="value" type="asnx:Value"/>
       </optional>
      </sequence>
     </type>
    </namedType>

    <namedType name="MultipleTypeConstraints">
     <type>
      <sequence insertions="hollow">
       <optional>
        <attribute name="partial" type="asnx:BOOLEAN"/>
        <default literalValue="false"/>
Top   ToC   RFC4912 - Page 153
       </optional>
       <group name="typeConstraints" type="asnx:TypeConstraints"/>
      </sequence>
     </type>
    </namedType>

    <namedType name="TypeConstraints">
     <type>
      <sequenceOf minSize="1">
       <group name="namedConstraint" type="asnx:NamedConstraint"/>
      </sequenceOf>
     </type>
    </namedType>

    <namedType name="NamedConstraint">
     <type>
      <choice insertions="singular">
       <element name="component" type="asnx:GenericNamedConstraint"/>
       <element name="element" type="asnx:GenericNamedConstraint"/>
       <element name="attribute" type="asnx:GenericNamedConstraint"/>
       <element name="group" type="asnx:GenericNamedConstraint"/>
       <element name="member" type="asnx:GenericNamedConstraint"/>
       <element name="item" type="asnx:GenericNamedConstraint"/>
       <element name="simpleContent"
                type="asnx:GenericNamedConstraint"/>
      </choice>
     </type>
    </namedType>

    <namedType name="GenericNamedConstraint">
     <type>
      <sequence insertions="hollow">
       <attribute name="name" type="asnx:QName"/>
       <optional>
        <attribute name="use" type="asnx:PresenceConstraint"/>
       </optional>
       <optional>
        <group name="constraint" type="asnx:Constraint"/>
       </optional>
      </sequence>
     </type>
    </namedType>

    <namedType name="PresenceConstraint">
     <type>
      <enumerated>
       <enumeration name="present"/>
       <enumeration name="absent"/>
Top   ToC   RFC4912 - Page 154
       <enumeration name="optional"/>
      </enumerated>
     </type>
    </namedType>

    <namedType name="ObjectClass">
     <type>
      <choice insertions="singular">
       <attribute name="class" identifier="classRef" type="asnx:QName"/>
       <element name="class" type="asnx:ElementFormObjectClass"/>
      </choice>
     </type>
    </namedType>

    <namedType name="DefinedObjectClass">
     <type>
      <constrained type="asnx:ObjectClass">
       <withComponents partial="true">
        <element name="class">
         <withComponents partial="true">
          <group name="definition">
           <withComponents partial="true">
            <group name="objectClassDefn" use="absent"/>
           </withComponents>
          </group>
         </withComponents>
        </element>
       </withComponents>
      </constrained>
     </type>
    </namedType>

    <namedType name="ElementFormObjectClass">
     <type>
      <sequence insertions="hollow">
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <group name="definition">
        <type>
         <choice insertions="none">
          <group name="reference" type="asnx:Reference"/>
          <element name="expanded" type="asnx:ExpandedObjectClass"/>
          <group name="objectClassDefn" type="asnx:ObjectClassDefn"/>
         </choice>
        </type>
       </group>
      </sequence>
Top   ToC   RFC4912 - Page 155
     </type>
    </namedType>

    <namedType name="ExpandedObjectClass">
     <type>
      <sequence>
       <optional>
        <attribute name="name" type="asnx:NCName"/>
       </optional>
       <optional>
        <element name="module" type="asnx:ReferencedModule"/>
       </optional>
       <group name="objectClass" type="asnx:ObjectClass"/>
      </sequence>
     </type>
    </namedType>

    <namedType name="ObjectClassDefn">
     <type>
      <sequenceOf minSize="1">
       <group name="fieldSpec" type="asnx:FieldSpec"/>
      </sequenceOf>
     </type>
    </namedType>

    <namedType name="FieldSpec">
     <type>
      <choice insertions="singular">
       <element name="typeField" type="asnx:TypeField"/>
       <element name="valueField" type="asnx:ValueField"/>
       <element name="valueSetField" type="asnx:ValueSetField"/>
       <element name="objectField" type="asnx:ObjectField"/>
       <element name="objectSetField" type="asnx:ObjectSetField"/>
       <element name="optional" type="asnx:OptionalField"/>
      </choice>
     </type>
    </namedType>

    <namedType name="OptionalField">
     <type>
      <constrained>
       <type>
        <sequence>
         <group name="field">
          <type>
           <choice insertions="singular">
            <element name="typeField" type="asnx:TypeField"/>
            <element name="valueField" type="asnx:ValueField"/>
Top   ToC   RFC4912 - Page 156
            <element name="valueSetField" type="asnx:ValueSetField"/>
            <element name="objectField" type="asnx:ObjectField"/>
            <element name="objectSetField" type="asnx:ObjectSetField"/>
           </choice>
          </type>
         </group>
         <optional>
          <element name="default" type="asnx:Setting"/>
         </optional>
        </sequence>
       </type>
       <union>
        <withComponents partial="true">
         <group name="field">
          <withComponents>
           <element name="typeField" use="present"/>
          </withComponents>
         </group>
         <element name="default">
          <withComponents partial="true">
           <group name="value" use="absent"/>
           <group name="valueSet" use="absent"/>
           <group name="object" use="absent"/>
           <group name="objectSet" use="absent"/>
          </withComponents>
         </element>
        </withComponents>
        <withComponents partial="true">
         <group name="field">
          <withComponents>
           <element name="valueField" use="present"/>
          </withComponents>
         </group>
         <element name="default">
          <withComponents partial="true">
           <group name="type" use="absent"/>
           <group name="valueSet" use="absent"/>
           <group name="object" use="absent"/>
           <group name="objectSet" use="absent"/>
          </withComponents>
         </element>
        </withComponents>
        <withComponents partial="true">
         <group name="field">
          <withComponents>
           <element name="valueSetField" use="present"/>
          </withComponents>
         </group>
Top   ToC   RFC4912 - Page 157
         <element name="default">
          <withComponents partial="true">
           <group name="type" use="absent"/>
           <group name="value" use="absent"/>
           <group name="object" use="absent"/>
           <group name="objectSet" use="absent"/>
          </withComponents>
         </element>
        </withComponents>
        <withComponents partial="true">
         <group name="field">
          <withComponents>
           <element name="objectField" use="present"/>
          </withComponents>
         </group>
         <element name="default">
          <withComponents partial="true">
           <group name="type" use="absent"/>
           <group name="value" use="absent"/>
           <group name="valueSet" use="absent"/>
           <group name="objectSet" use="absent"/>
          </withComponents>
         </element>
        </withComponents>
        <withComponents partial="true">
         <group name="field">
          <withComponents>
           <element name="objectSetField" use="present"/>
          </withComponents>
         </group>
         <element name="default">
          <withComponents partial="true">
           <group name="type" use="absent"/>
           <group name="value" use="absent"/>
           <group name="valueSet" use="absent"/>
           <group name="object" use="absent"/>
          </withComponents>
         </element>
        </withComponents>
       </union>
      </constrained>
     </type>
    </namedType>

    <namedType name="TypeField">
     <type>
      <sequence>
       <optional>
Top   ToC   RFC4912 - Page 158
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:TypeFieldReference"/>
      </sequence>
     </type>
    </namedType>

    <namedType name="TypeFieldReference" type="asnx:TypeReference"/>

    <namedType name="ValueField">
     <type>
      <constrained>
       <type>
        <sequence>
         <optional>
          <element name="annotation" type="asnx:Annotation"/>
         </optional>
         <attribute name="name" type="asnx:ValueFieldReference"/>
         <optional>
          <attribute name="unique" type="asnx:BOOLEAN"/>
         </optional>
         <group name="governor">
          <type>
           <choice insertions="singular">
            <group name="type" type="asnx:Type"/>
            <element name="typeFromField" type="asnx:FieldName"/>
           </choice>
          </type>
         </group>
        </sequence>
       </type>
       <union>
        <withComponents partial="true">
         <attribute name="unique" use="absent"/>
        </withComponents>
        <withComponents partial="true">
         <group name="governor">
          <withComponents partial="true">
           <element name="typeFromField" use="absent"/>
          </withComponents>
         </group>
        </withComponents>
       </union>
      </constrained>
     </type>
    </namedType>

    <namedType name="ValueFieldReference" type="asnx:ValueReference"/>
Top   ToC   RFC4912 - Page 159
    <namedType name="ValueSetField">
     <type>
      <sequence>
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:ValueSetFieldReference"/>
       <group name="governor">
        <type>
         <choice insertions="singular">
          <group name="type" type="asnx:Type"/>
          <element name="typeFromField" type="asnx:FieldName"/>
         </choice>
        </type>
       </group>
      </sequence>
     </type>
    </namedType>

    <namedType name="ValueSetFieldReference" type="asnx:TypeReference"/>

    <namedType name="ObjectField">
     <type>
      <sequence>
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:ObjectFieldReference"/>
       <group name="objectClass" type="asnx:DefinedObjectClass"/>
      </sequence>
     </type>
    </namedType>

    <namedType name="ObjectFieldReference" type="asnx:ObjectReference"/>

    <namedType name="ObjectSetField">
     <type>
      <sequence>
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <attribute name="name" type="asnx:ObjectSetFieldReference"/>
       <group name="objectClass" type="asnx:DefinedObjectClass"/>
      </sequence>
     </type>
    </namedType>

    <namedType name="ObjectSetFieldReference"
Top   ToC   RFC4912 - Page 160
               type="asnx:ObjectSetReference"/>

    <namedType name="Object">
     <type>
      <choice insertions="none">
       <attribute name="object" identifier="objectRef"
                  type="asnx:QName"/>
       <element name="object" type="asnx:ElementFormObject"/>
      </choice>
     </type>
    </namedType>

    <namedType name="ElementFormObject">
     <type>
      <sequence insertions="hollow">
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <group name="definition">
        <type>
         <choice insertions="singular">
          <group name="reference" type="asnx:Reference"/>
          <element name="expanded" type="asnx:ExpandedObject"/>
          <element name="fromObjects"
                   type="asnx:InformationFromObjects"/>
          <group name="fields" type="asnx:ObjectDefn"/>
         </choice>
        </type>
       </group>
      </sequence>
     </type>
    </namedType>

    <namedType name="ExpandedObject">
     <type>
      <sequence>
       <optional>
        <attribute name="name" type="asnx:NCName"/>
       </optional>
       <optional>
        <element name="module" type="asnx:ReferencedModule"/>
       </optional>
       <group name="object" type="asnx:Object"/>
      </sequence>
     </type>
    </namedType>

    <namedType name="ObjectDefn">
Top   ToC   RFC4912 - Page 161
     <type>
      <sequenceOf>
       <element name="field" type="asnx:FieldSetting"/>
      </sequenceOf>
     </type>
    </namedType>

    <namedType name="FieldSetting">
     <type>
      <sequence insertions="hollow">
       <attribute name="name" type="asnx:NCName"/>
       <group name="setting" type="asnx:Setting"/>
      </sequence>
     </type>
    </namedType>

    <namedType name="Setting">
     <type>
      <choice>
       <group name="type" type="asnx:Type"/>
       <group name="value" type="asnx:Value"/>
       <group name="valueSet" type="asnx:ValueSet"/>
       <group name="object" type="asnx:Object"/>
       <group name="objectSet" type="asnx:ObjectSet"/>
      </choice>
     </type>
    </namedType>

    <namedType name="ObjectSet">
     <type>
      <choice insertions="none">
       <attribute name="objectSet" identifier="objectSetRef"
                  type="asnx:QName"/>
       <element name="objectSet" type="asnx:ElementFormObjectSet"/>
      </choice>
     </type>
    </namedType>

    <namedType name="ElementFormObjectSet">
     <type>
      <sequence insertions="hollow">
       <optional>
        <element name="annotation" type="asnx:Annotation"/>
       </optional>
       <group name="definition">
        <type>
         <choice insertions="none">
          <group name="reference" type="asnx:Reference"/>
Top   ToC   RFC4912 - Page 162
          <element name="expanded" type="asnx:ExpandedObjectSet"/>
          <group name="objectSetSpec" type="asnx:ObjectSetSpec"/>
          <element name="fromObjects"
                   type="asnx:InformationFromObjects"/>
         </choice>
        </type>
       </group>
      </sequence>
     </type>
    </namedType>

    <namedType name="ExpandedObjectSet">
     <type>
      <sequence>
       <optional>
        <attribute name="name" type="asnx:NCName"/>
       </optional>
       <optional>
        <element name="module" type="asnx:ReferencedModule"/>
       </optional>
       <group name="objectSet" type="asnx:ObjectSet"/>
      </sequence>
     </type>
    </namedType>

    <namedType name="ObjectSetSpec">
     <type>
      <constrained>
       <type>
        <sequence insertions="hollow">
         <optional>
          <group name="root" type="asnx:ObjectElementSetSpec"/>
         </optional>
         <optional>
          <element name="extension">
           <type>
            <sequence insertions="hollow">
             <optional>
              <group name="additions" type="asnx:ObjectElementSetSpec"/>
             </optional>
            </sequence>
           </type>
          </element>
         </optional>
        </sequence>
       </type>
       <union>
        <withComponents partial="true">
Top   ToC   RFC4912 - Page 163
         <group name="root" use="present"/>
        </withComponents>
        <withComponents partial="true">
         <element name="extension" use="present"/>
        </withComponents>
       </union>
      </constrained>
     </type>
    </namedType>

    <namedType name="ObjectElementSetSpec">
     <type>
      <constrained type="asnx:ElementSetSpec">
       <withComponents partial="true">
        <element name="literalValue" use="absent"/>
        <element name="value" use="absent"/>
        <element name="includes" use="absent"/>
        <element name="range" use="absent"/>
        <element name="size" use="absent"/>
        <element name="typeConstraint" use="absent"/>
        <element name="from" use="absent"/>
        <element name="withComponent" use="absent"/>
        <element name="withComponents" use="absent"/>
        <element name="pattern" use="absent"/>
        <element name="union">
         <withComponent>
          <includes type="asnx:ObjectElementSetSpec"/>
         </withComponent>
        </element>
        <element name="intersection">
         <withComponent>
          <includes type="asnx:ObjectElementSetSpec"/>
         </withComponent>
        </element>
        <element name="all">
         <withComponents partial="true">
          <group name="elements">
           <includes type="asnx:ObjectElementSetSpec"/>
          </group>
          <element name="except">
           <includes type="asnx:ObjectElementSetSpec"/>
          </element>
         </withComponents>
        </element>
       </withComponents>
      </constrained>
     </type>
    </namedType>
Top   ToC   RFC4912 - Page 164
    <namedType name="EncodingControlSections">
     <type>
      <sequenceOf minSize="1">
       <group name="section" type="asnx:EncodingControlSection"/>
      </sequenceOf>
     </type>
    </namedType>

    <namedType name="EncodingControlSection">
     <type>
      <choice insertions="singular">
       <element name="GSER" identifier="gser"
                type="asnx:GSER-EncodingInstructionAssignmentList"/>
       <element name="XER" identifier="xer"
                type="asnx:XER-EncodingInstructionAssignmentList"/>
       <!-- plus encoding control sections
            for other encoding rules in the future -->
      </choice>
     </type>
    </namedType>

    <element name="module" type="asnx:ModuleDefinition"/>

    <attribute name="literal" type="asnx:BOOLEAN"/>

   </asnx:module>

Author's Address

Dr. Steven Legg eB2Bcom Suite 3, Woodhouse Corporate Centre 935 Station Street Box Hill North, Victoria 3129 AUSTRALIA Phone: +61 3 9896 7830 Fax: +61 3 9896 7801 EMail: steven.legg@eb2bcom.com
Top   ToC   RFC4912 - Page 165
Full Copyright Statement

   Copyright (C) The IETF Trust (2007).

   This document is subject to the rights, licenses and restrictions
   contained in BCP 78, and except as set forth therein, the authors
   retain all their rights.

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
   THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
   OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
   THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Intellectual Property

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights 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; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat 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
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at
   ietf-ipr@ietf.org.

Acknowledgement

   Funding for the RFC Editor function is currently provided by the
   Internet Society.