<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://schemas.gpo.gov/xml/uslm"
   xmlns:uslm="http://schemas.gpo.gov/xml/uslm" xmlns="http://schemas.gpo.gov/xml/uslm"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:dcterms="http://purl.org/dc/terms/" xmlns:xhtml="http://www.w3.org/1999/xhtml"
   elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.0.4"
   xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning">
   <!-- This is a draft version of the USLM schema with proposed changes from 
        the GPO USLM project.  The base version number is updated to "2" because 
        breaking changes are proposed. This schema uses XMLSchema version 1.0.-->
   
   <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
   <xsd:import namespace="http://purl.org/dc/terms/" schemaLocation="dcterms.xsd"/>
   <xsd:import schemaLocation="uslm-table-module.xsd" namespace="http://www.w3.org/1999/xhtml">
      <xsd:annotation>
         <xsd:documentation> Schema that includes the redefinitions for USLM/XHTML tables.
         </xsd:documentation>
      </xsd:annotation>
   </xsd:import>
   <xsd:annotation>
      <xsd:documentation>
         <![CDATA[
         
         ======================================================================
         * United States Legislative Model (USLM)*
         ====================================================================== 
         
         ** Objective ** 
         
         This schema provides a general schema for modeling United States
         legislative and regulatory documents, including:
           * United States Code titles and appendices.
           * Enrolled Bills
           * Public Law
           * Statutes at Large
           * Federal Register
           * Code of Federal Regulations
         It is designed to be extendable to future legislative and regulatory
         documents. The intent is to support XML data delivery, publishing, 
         editing, and automated processing of the documents.
         
         The schema in intended to be extensible to model bills, resolutions,
         statutes, amendments, and other legislative documents.
         
         This schema is not intended to model executive branch or judicial
         branch documents, except as this content is included in the documments
         that are within scope.
         
         ** Understanding this Schema ** 
         
         This schema is designed in several layers. The best way to learn the 
         schema is to first understand the fundamental building blocks and then
         to build your understanding one layer at a time. The order of 
         declaration and definitions is generally the best order to learn it as
         well. 
         
         This schema is designed following a "Venetian Blind" design pattern. 
         This means that each element type is defined separately and a separate
         element declaration is created. This pattern maximizes the reusability
         of the schema. 
         
         ** Overriding Principles ** 
         
           * The general derivation hierarchy is from most abstract to most 
             concrete.
           * Terminology chosen for abstract elements is purposefully designed
             to minimize conflict with existing terminology by avoiding well-
             established terms. 
           * Terminology chosen for concrete elements is purposefully designed 
             to map very closely to existing terminology. 
           * The overall tag set is kept as small as possible without
             compromising semantic richness. 
           * The schema is more permissive than is absolutely necessary. As this
             schema must support legacy documents, a looser rather than tighter
             contract is required to be enforced by the schema. In general, the
             abstract layer is intended to support the variation extremes while
             the concrete layer is intended to support modern practices. 
           * Consistency with XHTML naming conventions and practices is 
             maximized. 
           * Care has been taken to avoid reinventing mark-up for areas, such as
             tables or formulas, where other good mark-up has already been
             designed. 
           * The overall structure has been designed to create a readable 
             document without any unnecessary redirection. 
           * All text shown in the printed or published document is regular 
             text, not contained within attributes or to be generated from 
             attribute data. Rather, the resulting text is shown in the content. 
           * Attributes are used to contain metadata or normalized forms of 
             text content. (i.e. normalized numeric values) The general flow of
             data is from the content to the attributes rather than the other
             way around.
           * The schema is designed for editing documents as well as for complete  
             documents. This means that the "empty document" situation is handled
             and validates as a complete and correct document. 
             
         ** General Definitions **
         
         Jurisdictions:
           * United States Federal Government - us
           
         Languages:
           * English Language - eng
         
         ** Primitives **
         
         The purpose of the primitives is to provide the fundamental building
         blocks out of which everything can be built. The primitives are a 
         minimal set of basic type definitions along with a corresponding set
         of element declarations. 
         
         At the very top of the derivation tree is the "BaseType" and two 
         closely related derivatives "BaseBlockType" and "BaseContentType". These
         types are primarily to provide base types for all the attributes. They
         are defined as abstract types and therefore cannot be instantiated. 
         
         All other types derive from these types, by way of either restriction
         and/or extension. The terminology chosen for the primitive layer has 
         been selected to describe, in the most general of terms, the fundamental
         building blocks. Care has been taken to avoid using terms which already
         have an established meaning within U.S. legislation and to avoid implying
         too much meaning or structure beyond the primitive nature of the 
         elements. 
         
         ** Common Core ** 
         
         The common core defines the basic structure of a legislative document.
         It is a very abstract and general model intended to be flexible enough
         to handle the widest variations likely to be encountered.
         
         It is possible, using the common core, along with the primitives defined
         above and the generics defined below, to model any U.S legislation,
         albeit abstractly. The terminology chosen has been selected to be 
         familiar without conflicting with any well-established meanings in use
         for U.S. legislation. 
         
         ** Structural Building Blocks **
         
         The structural building blocks are assemblies of elements which are
         used to define the common core. Rather than defining individual elements, 
         they define groups of elements which are placed together to define
         the content of elements in the common core. The building blocks are
         largely responsible for taking care of the flexible notes model and
         the underlying versioning model. 
         
         ** Generics ** 
         
         The generics provide fundamental elements necessary to model any 
         type of document. These elements fit within the common core, but are
         not themselves a part of it. In general, these elements model common
         structures like paragraphs, images, columns, and line breaks.
         
         The generics exist to complete the common core without clouding the
         core with basic functions that don't contribute the legislative nature
         of the schema. The terminology chosen has been selected to be familiar
         everyday terms for common concepts. Care has been taken to not 
         override any well-established meaning in use for U.S. legislation. 
         
         ** Synonyms **
         
         The synonyms are used to give familiar and comfortable terms to the
         most commonly used elements in modern legislation. These synonyms are
         more meaningful tags used as equivalent substitutes for the more
         abstract tags defined in the common core. As they are defined as
         synonyms rather than within a rigid content model, care must be taken
         to avoid using them in ways beyond their original intent and harming
         the semantic value of XML. 
         
         ** Naming Elements **
         
         There are three attributes for defining names for elements. Each of
         these attributes may or may not be used in all situations:
         
          * The @id attribute is an immutable identity, one that is not changed
            once it is assigned. Therefore, it should not reflect any aspect of
            the element that is subject to change, such as an assigned number.
            The preferred algorithm for generating the @id attribute value is to
            use a GUID (Globally Unique IDentifier) generator that guarantees
            uniqueness in all space and time. The @id should be given a simple "id"
            prefix.
            
          * The @identifier attribute specifies the URL context and identity of 
            the element. Typically, the @identifier will be established on the
            root element or on any element, such as a <quotedContent> or
            <quotedText> element, that changes the context.        
             
          * The @temporalId attribute is assigned a changeable, human-meaningful,
            identifier. Like the @name attribute, the @temporalId will vary with
            time. For this reason, the @temporalId is computed each time a document
            is extracted from the repository, based on the point-in-time requested,
            rather than being statically stored with the text in the repository. The
            @temporalId is specified to be nominally unique within the document to which
            the element belongs. The @temporalId is composed by concatenating the 
            @temporalId of the element's parent, if existing (or the parent element's
            name if the @temporalId does not exist), "_", and the element's <num> 
            @value. For example, paragraph 2 of subsection (a) of section 1 should
            have the @temporalId of "s1_a_2".
          
         ** Referencing Model **
         
         All references are modeled as relative URLs. References are made to 
         a logical rather than a physical hierarchy that starts always from the
         jurisdiction and reaches down to individual provisions within a bill,
         resolution, or other Legislation. References do not predict or expect
         any particular document partitioning. It is the intent of the URL handler
         to map the logical hierarchy to any specific physical hierarchy.
         
         The highest level of the hierarchy is always the jurisdiction code,
         specified using the ISO 3166-1 country code and optionally followed by
         a dash and a lower level jurisdiction code. For the U.S. Federal
         Government, the jurisdiction code is "us".
         
         Lower levels of the hierarchy should use an abbreviated prefix or a numeric/
         alphabetic entry to identify the target. Each level in the reference is 
         separated with the "/" in a hierarchy. For instance, Title 5 is expressed
         as "/us/usc/t5" while Pub. L. 111-314 is expressed as "/us/pl/111/314".
         
         When a URL is extended to within a document, the document hierarchy is
         expressed in an abbreviated form as in "/us/usc/t5/s101" or 
         "/us/pl/111/314/s1". To build this URL, append the reference to the
         document with "/" + the level designators. So a reference to "title 2 of
         division 3 of public law 113-314" would be "/us/pl/111/314/d3/t2".
         
         A language-neutral reference does not include a language code. To 
         create a reference to a specific language version of the document,
         include a language identifier at the nominal document level following
         a "!" symbol. For instance, to specify a reference to
         section 101 the English version of title 51, the
         reference would be "/us/usc/t51!eng/s101". 
         
         To make a reference to a version that is operational at a specific
         point in time, include a date specification at the nominal document
         level following a "@" symbol ("at" the time of). For instance, to 
         specify a reference to section 101 of Title 51 on 1 February, 
         2013, the reference would be "/us/t51@2013-02-01/s101". 
         
         When including both a language and a time specification, place
         the language specification ahead of the time specification. For 
         instance to combine both examples above, the result would be
         "/us/t51!eng@2013-02-01/s101".
      
      ]]></xsd:documentation>
   </xsd:annotation>
   <!-- ==================================================================== -->
   <!-- Simple Types                                                         -->
   <!-- ==================================================================== -->
   <xsd:simpleType name="DateSimpleType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            The date simple type unifies both date and time formats and allows
            a date to be specified as either a day or a time in a day. This is
            to allow situations where the law becomes effective based on another
            time zone.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:union memberTypes="xsd:date xsd:dateTime"/>
   </xsd:simpleType>
   <!-- ==================================================================== -->
   <xsd:simpleType name="OccurrenceSimpleType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            The occurrence simple type specifies which occurrence is affected
            by an action when amending. An occurence can be either a positive integer
            or a value from the choice enumeration such as "all" for
            all occurrences or "last" for the last occurrence.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:union memberTypes="xsd:positiveInteger ChoiceEnum"/>
   </xsd:simpleType>
   <!-- ==================================================================== -->
   <xsd:simpleType name="CharacterSimpleType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            A simple string with 1 character.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:restriction base="xsd:string">
         <xsd:maxLength value="1"/>
      </xsd:restriction>
   </xsd:simpleType>
   <!-- ==================================================================== -->
   <xsd:simpleType name="ShortStringSimpleType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            A simple string with not more than 32 characters.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:restriction base="xsd:string">
         <xsd:maxLength value="32"/>
      </xsd:restriction>
   </xsd:simpleType>
   <!-- ==================================================================== -->
   <xsd:simpleType name="MediumStringSimpleType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            A simple string with not more than 128 characters.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:restriction base="xsd:string">
         <xsd:maxLength value="128"/>
      </xsd:restriction>
   </xsd:simpleType>
   <!-- ==================================================================== -->
   <xsd:simpleType name="LongStringSimpleType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            A simple string with not more than 1024 characters.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:restriction base="xsd:string">
         <xsd:maxLength value="1024"/>
      </xsd:restriction>
   </xsd:simpleType>
   <!-- ==================================================================== -->
   <!-- Enumerations                                                         -->
   <!-- ==================================================================== -->
   <xsd:simpleType name="ChoiceEnum">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            The choice enumeration is used to enumerate some textual values for
            use with the occurrence simple type defined above.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:restriction base="xsd:NMTOKEN">
         <xsd:enumeration value="all"/>
         <xsd:enumeration value="none"/>
         <xsd:enumeration value="first"/>
         <xsd:enumeration value="last"/>
      </xsd:restriction>
   </xsd:simpleType>
   <!-- ==================================================================== -->
   <xsd:simpleType name="YesOrNoEnum">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The yes or no enum has two options: "yes" or "no".
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:restriction base="xsd:string">
         <xsd:enumeration value="yes"/>
         <xsd:enumeration value="no"/>
      </xsd:restriction>
   </xsd:simpleType>
   <!-- ==================================================================== -->
   <xsd:simpleType name="PropertyTypeEnum">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The property  type enumeration allows a property to be given a 
            type specification. If the @type attribute is not specified, then
            the default type is "string".
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:restriction base="xsd:NMTOKEN">
         <xsd:enumeration value="string"/>
         <xsd:enumeration value="number"/>
         <xsd:enumeration value="token"/>
         <xsd:enumeration value="boolean"/>
         <xsd:enumeration value="text"/>
         <xsd:enumeration value="date"/>
         <xsd:enumeration value="url"/>
      </xsd:restriction>
   </xsd:simpleType>
   <!-- ==================================================================== -->
   <xsd:simpleType name="SetTypeEnum">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            The set type enumeration is used allows a set of properties, grouped
            using the <set> element, to be given a type specification.  If the
            @type attribute is not specified, then the default type is "bag".
            
            The type values are inspired by the Resource Descriptor Framework 
            (RDF).
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:restriction base="xsd:NMTOKEN">
         <xsd:enumeration value="bag">
            <xsd:annotation>
               <xsd:documentation><![CDATA[
                  A "bag" is an unordered but homogeneous collection of 
                  properties or sets.
               ]]></xsd:documentation>
            </xsd:annotation>
         </xsd:enumeration>
         <xsd:enumeration value="seq">
            <xsd:annotation>
               <xsd:documentation><![CDATA[
                  A "seq" (sequence) is an ordered and homogeneous sequence of 
                  properties or sets.
               ]]></xsd:documentation>
            </xsd:annotation>
         </xsd:enumeration>
         <xsd:enumeration value="grp">
            <xsd:annotation>
               <xsd:documentation><![CDATA[
                  A "grp" (group) is a heterogeneous collection of properties 
                  or sets.
               ]]></xsd:documentation>
            </xsd:annotation>
         </xsd:enumeration>
         <xsd:enumeration value="alt">
            <xsd:annotation>
               <xsd:documentation><![CDATA[
                  An "alt" (alternatives) is a homogeneous collection of 
                  properties or sets of which one is selected at any one time.
               ]]></xsd:documentation>
            </xsd:annotation>
         </xsd:enumeration>
         <xsd:enumeration value="res">
            <xsd:annotation>
               <xsd:documentation><![CDATA[
                  A "res" is a resource, such as a person, place, or thing and 
                  the properties enclosed within the set describe it.
               ]]></xsd:documentation>
            </xsd:annotation>
         </xsd:enumeration>
      </xsd:restriction>
   </xsd:simpleType>
   <!-- ==================================================================== -->
   <xsd:simpleType name="StatusEnum">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            The status enumeration is used to specify the state of a provision 
            during the period of time defined by the @startPeriod and the
            @endPeriod attributes attached to the same element or hierarchically
            defined above.

            Typically, the status enumeration is applied to the <section> level
            or lower, but the model is general enough that it can be applied
            anywhere in the level hierarchy. A <section> will progress through a
            series of statuses, starting out as "proposed" in a bill, becoming 
            "pending" when the bill is enacted, "operational" on
            the commencement date, and then later possibly "repealed".

            It is possible that stages in this sequence might be skipped. 
            For instance, a section might be repealed before
            it ever becomes operational or it might never be repealed.
            If the status is not specified, then a section is assumed to be
            "operational".
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:restriction base="xsd:NMTOKEN">
         <xsd:enumeration value="proposed"/>
         <xsd:enumeration value="withdrawn"/>
         <xsd:enumeration value="cancelled"/>
         <xsd:enumeration value="pending"/>
         <xsd:enumeration value="operational"/>
         <xsd:enumeration value="suspended"/>
         <xsd:enumeration value="renumbered"/>
         <xsd:enumeration value="repealed"/>
         <xsd:enumeration value="expired"/>
         <xsd:enumeration value="terminated"/>
         <xsd:enumeration value="hadItsEffect"/>
         <xsd:enumeration value="omitted"/>
         <xsd:enumeration value="notAdopted"/>
         <xsd:enumeration value="transferred"/>
         <xsd:enumeration value="redesignated"/>
         <xsd:enumeration value="reserved"/>
         <xsd:enumeration value="vacant"/>
         <xsd:enumeration value="crossReference"/>
         <xsd:enumeration value="unknown">
            <xsd:annotation>
               <xsd:documentation><![CDATA[
               A "unknown" status indicates that the status is not known.
               ]]></xsd:documentation>
            </xsd:annotation>
         </xsd:enumeration>
      </xsd:restriction>
   </xsd:simpleType>
   <!-- ==================================================================== -->
   <xsd:simpleType name="StyleTypeEnum">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The style type enumeration sets the allowed values in the 
            @styleType attribute. 
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:restriction base="xsd:NMTOKEN">
         <xsd:enumeration value="appropriations"/>
         <xsd:enumeration value="defense"/>
         <xsd:enumeration value="OLC"/>
         <xsd:enumeration value="nuclear"/>
         <xsd:enumeration value="tax"/>
         <xsd:enumeration value="traditional"/>
         <xsd:enumeration value="USC"/>
         <xsd:enumeration value="multiple-resolved-clause"/>
         <xsd:enumeration value="order-of-business"/>
         <xsd:enumeration value="concur-with-amendment"/>
         <xsd:enumeration value="constitutional-amendment"/>
         <xsd:enumeration value="impeachment"/>
      </xsd:restriction>
   </xsd:simpleType>
   <!-- ==================================================================== -->
   <xsd:simpleType name="AmendingActionTypeEnum">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            The amending action enumeration is used to specify the type of action being 
            undertaken by an amendment.

            There are two basic sets of amending actions: those for law and those for
            proposed law. Pre-enactment stage amendments will use the "insert" and
            the "delete" actions when amending rather than the other actions 
            intended for modifying enacted law.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:restriction base="xsd:NMTOKEN">
         <xsd:enumeration value="enact">
            <xsd:annotation>
               <xsd:documentation><![CDATA[
               The "enact" action enacts a law.
               ]]></xsd:documentation>
            </xsd:annotation>
         </xsd:enumeration>
         <xsd:enumeration value="add">
            <xsd:annotation>
               <xsd:documentation><![CDATA[
               The "add" action adds a provision to existing law.
               ]]></xsd:documentation>
            </xsd:annotation>
         </xsd:enumeration>
         <xsd:enumeration value="amend">
            <xsd:annotation>
               <xsd:documentation><![CDATA[
               The "amend" action modifies an existing provision in the law.   
               ]]></xsd:documentation>
            </xsd:annotation>
         </xsd:enumeration>
         <xsd:enumeration value="substitute">
            <xsd:annotation>
               <xsd:documentation><![CDATA[
               The "substitute" action replaces an existing provision in the law.
               ]]></xsd:documentation>
            </xsd:annotation>
         </xsd:enumeration>
         <xsd:enumeration value="redesignate">
            <xsd:annotation>
               <xsd:documentation><![CDATA[
               The "redesignate" action changes the number of an existing 
               provision in the law.
               ]]></xsd:documentation>
            </xsd:annotation>
         </xsd:enumeration>
         <xsd:enumeration value="repeal">
            <xsd:annotation>
               <xsd:documentation><![CDATA[
               The "repeal" action repeals a provision of law or regulation.
               ]]></xsd:documentation>
            </xsd:annotation>
         </xsd:enumeration>
         <xsd:enumeration value="repealAndReserve">
            <xsd:annotation>
               <xsd:documentation><![CDATA[
               The "repealAndReserve" action repeals a provision of law or
               regulation and reserves the location of the provision.
               ]]></xsd:documentation>
            </xsd:annotation>
         </xsd:enumeration>
         <xsd:enumeration value="insert">
            <xsd:annotation>
               <xsd:documentation><![CDATA[
               The "insert" action adds text to a proposed provision to the law.
               ]]></xsd:documentation>
            </xsd:annotation>
         </xsd:enumeration>
         <xsd:enumeration value="delete">
            <xsd:annotation>
               <xsd:documentation><![CDATA[
                  The "delete" action removes text from a proposed provision to
                  the law.
               ]]></xsd:documentation>
            </xsd:annotation>
         </xsd:enumeration>
         <xsd:enumeration value="conform">
            <xsd:annotation>
               <xsd:documentation><![CDATA[
                  The "conform" action means to make the text the same as the
                  defined replacement text.
               ]]></xsd:documentation>
            </xsd:annotation>
         </xsd:enumeration>
         <xsd:enumeration value="noChange">
            <xsd:annotation>
               <xsd:documentation><![CDATA[
                  The "noChange" action means that no change is directed. This occurs,
                  for instance, in the federal register, when it says "The authority...
                  continues to read...".
               ]]></xsd:documentation>
            </xsd:annotation>
         </xsd:enumeration>
         <xsd:enumeration value="unknown">
            <xsd:annotation>
               <xsd:documentation><![CDATA[
                  The "unknown" action is for actions that have not yet been defined.
               ]]></xsd:documentation>
            </xsd:annotation>
         </xsd:enumeration>
      </xsd:restriction>
   </xsd:simpleType>
   <!-- ==================================================================== -->
   <xsd:simpleType name="PositionEnum">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            The position enumeration is used with references found within 
            amendments when it is necessary to specify a position relative to 
            an item rather than when referencing the item itself.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:restriction base="xsd:NMTOKEN">
         <xsd:enumeration value="start"/>
         <xsd:enumeration value="before"/>
         <xsd:enumeration value="inside"/>
         <xsd:enumeration value="after"/>
         <xsd:enumeration value="end"/>
      </xsd:restriction>
   </xsd:simpleType>
   <!-- ==================================================================== -->
   <xsd:simpleType name="OrientationEnum">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The orientation enumeration is used to specify how an item should be
            oriented in the printed form. The orientation can be specified
            for any content item or for any appendix item, including a 
            schedule.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:restriction base="xsd:NMTOKEN">
         <xsd:enumeration value="portrait"/>
         <xsd:enumeration value="landscape"/>
      </xsd:restriction>
   </xsd:simpleType>
   <!-- ==================================================================== -->
   <xsd:simpleType name="NoteTypeEnum">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            Notes can be placed inline, as footnotes at the end of the page,
            as side notes next to the text, as end notes of the logical unit,
            or can be U.S. Code notes.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:restriction base="xsd:NMTOKEN">
         <xsd:enumeration value="inline"/>
         <xsd:enumeration value="footnote"/>
         <xsd:enumeration value="sidenote"/>
         <xsd:enumeration value="endnote"/>
         <xsd:enumeration value="uscNote"/>
      </xsd:restriction>
   </xsd:simpleType>
   <!-- ==================================================================== -->
   <!-- Attribute Groups                                                     -->
   <!-- ==================================================================== -->
   <xsd:attributeGroup name="XmlSpecialAttrs">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            This attribute groups is similar to the same attribute group defined
            in the XML.xsd schema file, except it omits the "id" attribute.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:attribute ref="xml:base"/>
      <xsd:attribute ref="xml:lang"/>
      <xsd:attribute ref="xml:space"/>
      <!-- <xs:attribute ref="xml:id"/> -->
   </xsd:attributeGroup>
   <!-- ==================================================================== -->
   <xsd:attributeGroup name="IdentificationGroup">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The identification group of attributes is used to add an identity to
            an element. All elements use the identification group, and all 
            attributes are optional. In general:
            
            - An @id is an immutable GUID assigned to an item at its birth.
            - An @temporalId is a time variant name, scoped to the document.
            - An @identifier is an item variant URL, scoped globally.
            - As @scope is a URL of the scope in which the @identifier is valid.
            
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:attribute name="id" type="xsd:ID" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
               The @id attribute should always be assigned an immutable 
               (non-changing) value. If the item is subject to renaming or 
               renumbering, then the @id attribute should not reflect any part 
               of the changeable part. This is to allow the @id to be long 
               lasting without causing confusion should the item be renamed or 
               renumbered. 
               
               The @id should be prefixed with "id" and followed by a GUID that
               is guaranteed to be globally unique across both time and space.
               
               As an "xsd:ID", the identity must be ensured to be unique in the
               document - and it is a good idea that it be guaranteed globally 
               unique. As the @id is immutable, it is a good identity with which
               to associate external information to the item.
               
               If an item is deleted and later a similarly named item is 
               created, then the new item should be assigned a newly generated 
               identity as it is not the same item as the earlier item.
               
               The @id attribute is optional, but recommended for all elements
               which will contain any other identity attributes.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="temporalId" type="MediumStringSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
               The @temporalId attribute is a name, scoped to the document,
               that is intended to reflect the current identify of the element 
               in a human-readable way. This means that the @temporalId may need 
               to be recomputed based on the temporal state of a document or 
               according to the temporal specification in a requesting URL.
               
               A @temporalId is intended to be scoped to the document as a whole
               while the @name is scoped to its immediate parent. The 
               @temporalId is built as an "_" separated hierarchy of @name
               or, in the absence of an @name, element names. However, in a 
               couple cases, the levels of the hierarchy are suppressed. First
               of all, the <main> level is suppressed when calculating any
               @temporalId contained within. Secondly, when dealing with 
               sections which are numbered as a sequence without regard to
               the upper levels, then the upper levels are suppressed from the
               computation of the @temporalId.
               
               Some examples:
               
                * "s2" - section 2 in the main part of the document
                * "schedule_s2" - section 2 in the schedule
                * "p2_d1" - division 1 of part 2 in the main part of the 
                  document
               
               The @temporalId attribute is optional.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="identifier" type="LongStringSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
               Use the @identifier attribute to specify the URL context of the
               element. Typically, the @identifier will be established on the
               root element or on any element, such as a <quotedContent> or
               <quotedText> element, that changes the context.        
               
               The @identifier attribute is optional.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="scope" type="LongStringSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
               Use the @scope attribute to specify the scope within which the
               @identifier attribute is valid. Typically, @scope is formatted
               as a URL, referring to a specific context.  @scope is used for 
               terms within in definitions to specify the scope of the definition.        
               
               The @scope attribute is optional.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
   </xsd:attributeGroup>
   <!-- ==================================================================== -->
   <xsd:attributeGroup name="ClassificationGroup">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            The classification group is used to further refine the element 
            type and to specify any exception cases for styling the element 
            when presented in the printed form. The @role attribute is inspired
            by the @role attribute defined in support of WAI-ARIA for use
            in XHTML. Both the @class and the @style attributes are inspired by
            the identically named HTML attributes and their behavior is the 
            same. All elements use the classification group.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:attribute name="role" type="ShortStringSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
               Use the @role attribute to provide further refinement to an
               element's type. This is particularly useful when defining a
               refinement of an element from the abstract set. Another possible 
               use is to use the customary local name for an element whenever
               the element name is not a complete match. For example, if the 
               customary name for an "explanation" is "summary", then the 
               element can be expressed as <explanation role="summary">.
               
               There is a rough equivalence between an element of a base class
               with a @role attribute and a derived class in the schema, although
               this equivalence is not explicit. For example 
               <level role="division"> is roughly equal to <division>.
               
               When transforming XML to HTML, the @role attribute should be 
               appended to the element name using an "_" underscore and used
               as the first value in the HTML @class attribute. If desired,
               the proposed XHTML @role attribute can be computed as either the
               XML @role attribute or, in the absence of the XML @role 
               attribute, the XML element name. For example:
               
               <level role="division">
                  => <div role="division" class="level_division"> 
               
               <division> 
                  => <div role="division" class="division">
                  
               This approach is easily reversible.               
             ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="class" type="MediumStringSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
               The @class attribute corresponds to the @class attribute in 
               HTML. It can be used to specify presentation characteristics
               of an element that are not specified by the element name and
               the @role attribute. For example, the @class attribute can be
               used to specify the presence or absence of the ending separator.
               
               Like the HTML @class attribute, multiple class values can be 
               specified in a space separated list.
                              
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="style" type="LongStringSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
               The @style attribute is used to specify CSS attributes that 
               override the default styles defined for an element or an element 
               class. The current loose-leaf publication standards should be
               specified using an external style sheet and the use of the @style
               attribute should be reserved for exception cases where the 
               default presentation must be overridden.    
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="styleType" type="StyleTypeEnum" use="optional" default="OLC">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
               The @styleType attribute is used to set the overall semantic type of
               the block. This has rendering implications. Only a small set of values
               is allowed. 
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
   </xsd:attributeGroup>
   <!-- ==================================================================== -->
   <xsd:attributeGroup name="AnnotationGroup">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The annotations group is used to specify annotations with elements
            that are outside of the published content. As attributes, only
            limited text values should be associated using this mechanism. This
            mechanism should never be used for notes to be published. All 
            elements use the annotation group.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:attribute name="note" type="LongStringSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[            
               The @note attribute should be the primary mechanism for recording
               simple text notes to be associated with elements.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="alt" type="LongStringSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[            
            The @alt attribute should be used to provide an alternative
            description of the element. For use with WCAG 2.0 and other 
            accessibility initiatives.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="meta" type="LongStringSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
            The @meta attribute should be used to associate metadata
            information with the element for search and other uses. How this
            attribute is used is not prescribed by the schema.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="misc" type="LongStringSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
            The @misc attribute is provided for future use.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="draftingTip" type="LongStringSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
               The @draftingTip is for internal use.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="codificationTip" type="LongStringSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
               The @codificationTip is for internal use by the OLRC.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
   </xsd:attributeGroup>
   <!-- ==================================================================== -->
   <xsd:attributeGroup name="DescriptionGroup">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The description group is used to record information that will be 
            used to describe an element, primarily for use in a table of 
            contents or an index. The description group can be used for
            statements, the preamble, levels, and appendices including
            schedules. In addition, the description group is an integral
            part of a TOC item. All attributes are optional.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:attribute name="title" type="MediumStringSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
            The @title attribute is used to specify the text describing the
            element in a table of contents or index. It must be a simple text
            string and should consist of fewer than 40 or so characters - 
            although this is not enforced.               
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="brief" type="LongStringSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
               The @brief attribute is an alternate method for providing a 
               a longer description of an element, limited to 1024 characters.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="sortOrder" type="xsd:integer" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
               The @sortOrder attribute is used to specify a sorting order for 
               a list of items, when that sort order is not the document 
               sequence. The @sortOrder value must be specified as a positive 
               integer. This attribute should rarely be used.               
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
   </xsd:attributeGroup>
   <!-- ==================================================================== -->
   <xsd:attributeGroup name="ReferenceGroup">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The reference group is used to create references to other items. 
            These items can be items within the document, items in other documents,
            or entire other document. See the reference specification for how
            reference URL references are constructed. <property> and
            <reference> elements can use the reference group. 
            
            All attributes are optional.        
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:attribute name="href" type="xsd:anyURI" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[            
            The @href attribute is used to specify references to external
            documents or items in documents. The value must always be 
            specified as a relative URL conforming to the reference
            specification.          
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="idref" type="xsd:IDREF" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
               The @idref attribute is used to specify references to internal
               elements within the same document. The @idref is specified as
               the value of the @id attribute of the element being referenced.
               As in HTML, there is an equivalence between an @href specified
               as href="#{id}" and idref="{id}". However, the @idref attribute
               is preferred for internal references.
               
               If the @idref points to a <ref> element, then the referencing
               element builds on top of that reference, acquiring its attributes
               as default values (which may be overridden by local values). This
               is a recursive structure; an element may, through the @idref 
               attribute, point to an <ref> element which itself builds on 
               another <ref> element, and so on. This is to support the complex
               referencing sometimes found in legislation.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="portion" type="MediumStringSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
               The @portion attribute is used, in conjunction with the @idref
               attribute, when only a portion of the referenced item is being
               affected. The value of @portion is an additional part to append
               to the URL, with a "/" separator to identify the item affected. 
               Do not include a leading "/" in the @portion value.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
   </xsd:attributeGroup>
   <!-- ==================================================================== -->
   <xsd:attributeGroup name="AmendingGroup">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The amending group is used to point to items being amended. See the
            reference specification for how reference URL references are
            constructed. The amending group should only be used on references
            or amending actions within amending instructions.
            
            All attributes are optional.        
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:attribute name="pos" type="PositionEnum" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
               The @pos attribute is used to specify a location relative
               to the item being referenced. The @pos is intended primarily
               for used with amending instructions.    
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="posText" type="MediumStringSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
               The @posText attribute is used to specify text to be used as the
               context for the @pos attribute.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="posCount" type="xsd:positiveInteger" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
               The @posCount attribute is used to specify the number of 
               occurrences of the @posText to seek out when establishing the 
               context.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
   </xsd:attributeGroup>
   <!-- ==================================================================== -->
   <xsd:attributeGroup name="LinkGroup">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The link group is used to reference external documents to be 
            embedded in a document. The link group can be used for either
            appendices or for images. The @src attribute is optional, but 
            should always be used for images.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:attribute name="src" type="xsd:anyURI" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
               The @src attribute is a URL that points to an item to be included
               in the published document. Unlike an @href attribute, a @src 
               attribute can be any normal URL and can be relative or absolute.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
   </xsd:attributeGroup>
   <!-- ==================================================================== -->
   <xsd:attributeGroup name="ValueGroup">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The value group is used to keep a normalized value. In some cases 
            the value is recorded as text content and the normalized form is
            stored in the @value attribute. The @type attribute is usually used
            to type the value. The value group can be used for <property> and 
            <num> elements.      
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:attribute name="value" type="MediumStringSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
            The @value attribute is used when there is a single value.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="startValue" type="MediumStringSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
            The @startValue attribute is used for the lower end of a value
            range.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="endValue" type="MediumStringSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
            The @endValue attribute is used for the upper end of a value
            range.               
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
   </xsd:attributeGroup>
   <!-- ==================================================================== -->
   <xsd:attributeGroup name="NoteGroup">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The note group is used to place and categorize notes, either
            singularly or as groups. The @type attribute is used for placement
            while the @topic attribute is used for categorization. 
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:attribute name="type" type="NoteTypeEnum" use="optional" default="footnote">
         <xsd:annotation>
            <xsd:documentation><![CDATA[ 
               Set the @type attribute to "footnote" to indicate that
               the notes contained should be shown in the footnotes at
               the end of the page, to "endnote" to indicate the
               notes contained should be shown at the end of the
               document, or to "sidenote" if the notes should be shown
               on the side in the margin. If not specified, "footnote" is assumed.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="topic" type="MediumStringSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[ 
               Set the @topic attribute to a string value in order
               to categorize the note or group of notes. An open,
               but enumerated, list of string values should be used.
               Using a fixed list of values will better aid in 
               categorization of notes.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
   </xsd:attributeGroup>
   <!-- ==================================================================== -->
   <xsd:attributeGroup name="RenderingPositionGroup">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The RenderingLocationGroup is used to indicate where an element
            should be rendered. It is used for content that should be 
            rendered out of the normal text flow, such as footnotes or sidenotes.
            All attributes are optional.       
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:attribute name="renderingPosition" type="MediumStringSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
               The @position attribute is used to specify the rendering location.
               This location may be relative to an object specified in the 
               @relativeTo attribute. 
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="relativeTo" type="MediumStringSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
               The @relativeTo attribute specifies an object that the rendering
               should be relative to. This may be an element name, such as "table"
               or "section". It may also be a specific element, identified by its
               @id attribute or @identifier attribute. It may also be a physical
               entity, such as "page" or "column" or "frame".
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
   </xsd:attributeGroup>
   <!-- ==================================================================== -->
   <xsd:attributeGroup name="DateGroup">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            The date group is used to keep a normalized date. Both normal dates
            and date + times can be stored. The format for all dates is either
            the xsd:date or xsd:datetime formats which are ISO 8601 based. The 
            date group can be used with <property>, <date>, and <note> elements. 
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:attribute name="date" type="DateSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
            The @date attribute is used for a single date value.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="legisDate" type="DateSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
            The @legisDate attribute is used for a logical legislative date,
            which may be different from the calendar date.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="startDate" type="DateSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
            The @startDate attribute is used for the starting date of a date 
            range.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="endDate" type="DateSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
            The @endDate attribute is used for the ending date of a date 
            range.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
   </xsd:attributeGroup>
   <!-- ==================================================================== -->
   <xsd:attributeGroup name="VersioningGroup">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The versioning group is used to record dates and statuses of 
            different versions of various elements. These attributes define
            the versioning model for USLM. In general, when an item is 
            versioned, different versions of an element will exist alongside
            one another with different time periods and statuses defined.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:attribute name="startPeriod" type="DateSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
               The @startPeriod attribute is the earliest date that a particular 
               version applies to. The @startPeriod is not necessarily the
               effective date. It's merely the earliest date that the particular
               version of the text should be returned in point-in-time
               calculations.
               
               The @startPeriod works with the @endPeriod which defines that
               last date that a specific version applies to. Together, the
               @startPeriod and the @endPeriod define a period of time that the
               version applies to. This version may be in states such as
               pending, operational, partially commenced, suspended, or even 
               repealed.
               
               If the @startPeriod is not specified, then all past time is
               assumed.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="endPeriod" type="DateSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
               The @endPeriod attribute is the last date that a specific version
               of the text should be returned in point-in-time calculations. 
               
               If the @endPeriod is not specified, then all future time is 
               assumed.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="status" type="StatusEnum" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
               The @status attribute is used to show the status of a version
               of provision. This attribute works with the @startPeriod and the
               @endPeriod and applies to the period of time defined by these
               attributes.
           ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="partial" type="xsd:boolean" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
               The @partial attribute is used, in conjunction with the 
               @status attribute to indicate that the status is not fully
               applied.
           ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
   </xsd:attributeGroup>
   <!-- ==================================================================== -->
   <xsd:attributeGroup name="AmendingActionGroup">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The amending action group is used to describe amending actions.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:attribute name="type" type="AmendingActionTypeEnum" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
            The @type attribute describes the type of amending action being taken. 
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="occurrence" type="OccurrenceSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
               The @occurrence attribute describes which occurrence of item in question
               should the amending action take effect on.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="actionDate" type="DateSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
               The @actionDate attribute specifies the date upon which the
               action is to be applied.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
   </xsd:attributeGroup>
   <!-- ==================================================================== -->
   <xsd:attributeGroup name="CellGroup">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The cell group is used to describe a cell in a tabular structure
            found within legislation. 
            
            The @colspan and @rowspan attributes are inspired by the HTML 
            attributes of the same name. Consequently, the names are specified
            as all lower-case which is a minor inconsistency to the naming 
            convention used for all other attributes.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:attribute name="colspan" type="xsd:integer" use="optional" default="1">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
            The @colspan attribute, like the corresponding HTML attribute, 
            defines the number of columns a column tag must span. 
            If this attribute is not set, then the column span is one.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="rowspan" type="xsd:integer" use="optional" default="1">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
            The @rowspan attribute, like the corresponding HTML attribute,
            defines the number of rows a specific column tag must span.
            If this attribute is not set, then the row span is one.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="leaders" type="ShortStringSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
               The @leaders attribute specifies whether leaders should be 
               shown either trailing or following the text content. The 
               character included as the value is the character used to render 
               the leaders.
               
               Use the CSS text-align character to position the text. If the 
               text is aligned to the left, then the leaders will show to the 
               right and if the text is aligned to the right, then the leaders
               will show to the left.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
   </xsd:attributeGroup>
   <!-- ==================================================================== -->
   <!--                Attributes for use with HTML tables                   -->
   <!-- ==================================================================== -->
   <xsd:attributeGroup name="HtmlTableGroup">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The table group is used to add attributes to the HTML table model. 
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:attribute name="type" type="ShortStringSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
            The @type attribute says what the purpose of the table is.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="blockStyle" type="YesOrNoEnum" use="optional" default="no">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
            The @blockStyle attribute sets block style for all text (reading) columns in 
            the table, rather than the default flush and hang style. If the column is indented
            to indicate a hierarchy, the net effect is indentation and block, no hanging indent.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="cols" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
            Number of columns in the table. This must be an integer greater than zero
            and smaller than 31 (MicroComp can handle tables up to 30 columns).
            ]]></xsd:documentation>
         </xsd:annotation>
         <xsd:simpleType>
            <xsd:restriction base="xsd:nonNegativeInteger">
               <xsd:maxInclusive value="30"/>
            </xsd:restriction>
         </xsd:simpleType>
      </xsd:attribute>
   </xsd:attributeGroup>
   <xsd:attributeGroup name="HtmlTdGroup">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The HtmlTd group is used to add attributes to the HTML cell (td) model. 
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:attribute name="stubHierarchy" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
            The stubHierarchy indicates indention of a stub column. It is an attribute with 
            values 0 to 99, corresponding to stub hierarchy levels 1 to 100 in stub columns. 
            Usually only values 0 to 9 (1 to 100) are used.
            ]]></xsd:documentation>
         </xsd:annotation>
         <xsd:simpleType>
            <xsd:restriction base="xsd:nonNegativeInteger">
               <xsd:maxInclusive value="100"/>
            </xsd:restriction>
         </xsd:simpleType>
      </xsd:attribute>
      <xsd:attribute name="textHierarchy" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[
            The textHierarchy indicates indention of a stub column. It is an attribute with 
            values 0 to 99, corresponding to hierarchy levels 1 to 100 in text (reading) columns. 
            Usually only values 0 to 9 (1 to 100) are used.
            ]]></xsd:documentation>
         </xsd:annotation>
         <xsd:simpleType>
            <xsd:restriction base="xsd:nonNegativeInteger">
               <xsd:maxInclusive value="100"/>
            </xsd:restriction>
         </xsd:simpleType>
      </xsd:attribute>
      <xsd:attribute name="leaders" type="YesOrNoEnum" use="optional" default="no">
         <xsd:annotation>
            <xsd:documentation><![CDATA[ 
                     The @leaders attribute sets the presence or absence of the leader dots in the 
                     table cell. The value 'false' indicates no leaders, while 'true' indicates leaders.
                  ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="leaderAlign" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[ 
                     The @leaderAlign attribute sets the behavior of the leader dots.
                  ]]></xsd:documentation>
         </xsd:annotation>
         <xsd:simpleType>
            <xsd:restriction base="xsd:string">
               <xsd:enumeration value="topLine">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[ 
                     The leader dots of following cells will align with the top line of text in this cell.
                  ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:enumeration>
               <xsd:enumeration value="bottomLine">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[ 
                     The leader dots of following cells will align with the bottom line of text in this cell.
                  ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:enumeration>
            </xsd:restriction>
         </xsd:simpleType>
      </xsd:attribute>
   </xsd:attributeGroup>
   <!-- ==================================================================== -->
   <xsd:attributeGroup name="LeaderGroup">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The leader group is used to define leaders for use in tables of content.
            The attributes define the character to be used for the leader, and
            the alignment of the leader from the element.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:attribute name="leaderChar" type="CharacterSimpleType" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[ 
               Set the @leaderChar attribute to define the character to be used
               in the leader.
            ]]></xsd:documentation>
         </xsd:annotation>
      </xsd:attribute>
      <xsd:attribute name="leaderAlign" use="optional">
         <xsd:annotation>
            <xsd:documentation><![CDATA[ 
                     The @leaderAlign attribute sets the direction of the leaders
                     from the element.
                  ]]></xsd:documentation>
         </xsd:annotation>
         <xsd:simpleType>
            <xsd:restriction base="ShortStringSimpleType">
               <xsd:enumeration value="left"/>
               <xsd:enumeration value="right"/>
            </xsd:restriction>
         </xsd:simpleType>
      </xsd:attribute>
   </xsd:attributeGroup>

   <!-- ==================================================================== -->
   <!-- Primitive Definitions                                                -->
   <!-- ==================================================================== -->
   <xsd:annotation>
      <xsd:documentation>
         <![CDATA[         

         ** Primitive Definitions **
         
         There are five basic primitive types. All elements are defined to be
         one of these five basic types. In addition to types derived from these
         five basic types, there are also five abstract element declared 
         directly from these types. These elements can be used, in some cases, 
         for when the more specific cases do not apply. In those cases, the 
         primitive types can be used along with the @role attribute to create 
         new informal types.
         
         *** Basic Rules ***
         
           * A marker contains nothing within it.   
           * An inline contains text, or any inline structure including 
             inline, ref, or marker.
           * A block contains any block structure including block, content, 
             or property.
           * A content (block) contains text or any block or other content.
           
      ]]></xsd:documentation>
   </xsd:annotation>
   <!-- ==================================================================== -->
   <xsd:complexType name="BaseType" abstract="true">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The base type defines the most general element, specifying the 
            attributes which can be found on all elements - specifically
            attributes belonging to the identification, classification, and 
            annotation groups.
            
            The base type is defined as an abstract type and elements cannot
            be declared based on it.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:simpleContent>
         <xsd:extension base="xsd:string">
            <xsd:attributeGroup ref="XmlSpecialAttrs"/>
            <xsd:attributeGroup ref="IdentificationGroup"/>
            <xsd:attributeGroup ref="ClassificationGroup"/>
            <xsd:attributeGroup ref="AnnotationGroup"/>
            <xsd:attributeGroup ref="DescriptionGroup"/>
            <xsd:attributeGroup ref="VersioningGroup"/>
            <xsd:anyAttribute namespace="##other" processContents="lax"/>
         </xsd:extension>
      </xsd:simpleContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="BaseBlockType" abstract="true">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            The base block type is a variant of the base type, but having a
            content structure to support block level children - elements
            but no text. 
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:attributeGroup ref="XmlSpecialAttrs"/>
      <xsd:attributeGroup ref="IdentificationGroup"/>
      <xsd:attributeGroup ref="ClassificationGroup"/>
      <xsd:attributeGroup ref="AnnotationGroup"/>
      <xsd:attributeGroup ref="DescriptionGroup"/>
      <xsd:attributeGroup ref="VersioningGroup"/>
      <xsd:anyAttribute namespace="##other" processContents="lax"/>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="BaseContentType" abstract="true" mixed="true">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The base content type is a variant of the base type, but having
            a very open content model including text.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:attributeGroup ref="XmlSpecialAttrs"/>
      <xsd:attributeGroup ref="IdentificationGroup"/>
      <xsd:attributeGroup ref="ClassificationGroup"/>
      <xsd:attributeGroup ref="AnnotationGroup"/>
      <xsd:attributeGroup ref="DescriptionGroup"/>
      <xsd:attributeGroup ref="VersioningGroup"/>
      <xsd:anyAttribute namespace="##other" processContents="lax"/>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="MarkerType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The marker type is a restriction of the base type to an element 
            without content.
         ]]></xsd:documentation>
      </xsd:annotation>
      <!-- No content -->
      <xsd:simpleContent>
         <xsd:restriction base="BaseType">
            <xsd:simpleType>
               <xsd:restriction base="xsd:string">
                  <xsd:length value="0"/>
               </xsd:restriction>
            </xsd:simpleType>
         </xsd:restriction>
      </xsd:simpleContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="InlineType" mixed="true">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The inline type is an extension of the base content type to allow 
            text content or other inline elements.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="BaseContentType">
            <xsd:choice minOccurs="0" maxOccurs="unbounded">
               <xsd:element ref="text"/>
               <xsd:element ref="marker"/>
               <xsd:element ref="inline"/>
               <xsd:element ref="note"/>
            </xsd:choice>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="BlockType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The block type is a extension of the base type to content
            consisting of only elements.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="BaseBlockType">
            <xsd:sequence>
               <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##targetNamespace"/>
            </xsd:sequence>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="ContentType" mixed="true">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The content type is a broad base type allowing any content.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="BaseContentType">
            <xsd:choice maxOccurs="unbounded" minOccurs="0">
               <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##targetNamespace"
                  processContents="strict"/>
               <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
                  processContents="lax"/>
            </xsd:choice>
            <xsd:attribute name="orientation" type="OrientationEnum" use="optional"
               default="portrait">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[
                  The @orientation attribute is used to specify a "landscape" 
                  orientation for the published form. This is primarily used
                  for schedules or for tables.                  
                  ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <!--                  Types for tables of content and indices             -->
   <!-- ==================================================================== -->
   <xsd:complexType name="ToCIndexType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The TOCIndexType is a base type for indices and tables of content.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="BaseBlockType">
            <xsd:sequence>
               <xsd:sequence minOccurs="0">
                  <xsd:element ref="heading" minOccurs="1" maxOccurs="unbounded"/>
                  <xsd:element ref="subheading" minOccurs="0" maxOccurs="unbounded"/>
               </xsd:sequence>
               <xsd:choice maxOccurs="unbounded">
               <xsd:element ref="referenceItem" minOccurs="1" maxOccurs="unbounded">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        The <referenceItem> element, <headingItem>, and <groupItem>
                        elements are allowed in the ToC or index 1 or more times.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="note" minOccurs="0" maxOccurs="unbounded">
                  <xsd:annotation>
                        <xsd:documentation><![CDATA[
                        A ToC or index may have a notes.  These can be used for
                        page breaks or to put a horizontal rule below the ToC.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element></xsd:choice>
            </xsd:sequence>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <!-- Primitive Declarations                                               -->
   <!-- ==================================================================== -->
   <xsd:element name="marker" type="MarkerType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            The <marker> element is a primitive element to be used to mark or
            denote a spot in the text. It can be used in the <content> areas or
            anywhere else where an <inline> element is expected. The <marker>
            element contains no text.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="inline" type="InlineType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            The <inline> element is a primitive element to be used within
            <content> areas or within any other areas which can accept 
            inline content.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="block" type="BlockType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <block> element is a primitive element to be used anywhere 
            where <block> elements are permitted including within <content> 
            elements or anywhere where <block> elements have been explicitly 
            permitted.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="content" type="ContentType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <content> element is a primitive element to be used anywhere 
            where a very general content model is desired, including within
            other <content> elements.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>

   <!-- ==================================================================== -->
   <!-- Core Definitions                                                     -->
   <!-- ==================================================================== -->
   <xsd:annotation>
      <xsd:documentation><![CDATA[ 
         
         Key: 
         
         *  <tag> ... </tag> is the enclosing tag
         *  <child> is a required child
         *  [<child>] is an optional child
         *  [<child>]? is a sequence of zero or one child
         *  [<child>]* is a sequence of zero or more children
         *  <child1>|<child2> is either child1 or child2
         *  [<child1>|<child2>] is either child1 or child2 or neither
         *  [<child1>|</child2>]* is a sequence of zero or more child1s or 
            child2s in no particular pattern
           
         Basic Model:
         
         * <doc>[<meta>][<preface>][<main>][<backMatter>][<endMarker>][<appendix>]*</doc>
         * <meta>[<set>|<property>]*</meta>
         * <toc>[<referenceItem>|<groupItem>|<headingItem>]+
         * <referenceItem>[<designator>? <label>? <target>?]|<referenceItem>?] 
         * <main>[<property>|<toc>|<preamble>|<statement>|<note>|
           <enactingFormula>|<resolvingClause>|<level>|<crossHeading>|<collection>]*<main>
         * <statement>[{text}|<content>|<inline>|<ref>|<marker>|<p>|
           <notes>]*</statement>
         * <level><num>?<heading>?<subheading>?<notes>?[<instruction><notes>?|
           <content><notes>?|<toc>?[<text>|<level>|
           <crossheading>|note]*]]</level>
         * <num>{text}</num>
         * <heading> can contain text, inline, ref, marker
         * <appendix> can contain page, preface, main, content, notes
         * <notes> can contain text, note, inline, marker
         * <note> can contain text, inline, ref, marker. Rendered inline.
         * <positionedNote> can contain text, inline, ref, marker. Rendered out of line.
         * <instruction> can contain text, amendingAction, quotedText, quotedContent
         * <amendingAction> can contain text, ref
         * <quotedContent> can contain text, statement, main, level, num, 
           heading, ref, date, attachments, attachment, notes, note
         * <ref>[{test}|<inline>|<marker>]*</ref>
         * <date>[{text}|<inline>|<ref>|<marker>]*</date>

      ]]></xsd:documentation>
   </xsd:annotation>
   <xsd:complexType name="LawDocType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The law doc type is the core root element type for all document that
            contain law - either proposed or enacted.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="BaseBlockType">
            <xsd:sequence>
               <xsd:element ref="meta">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                     All documents start with a meta area containing properties about
                     the document. The information contained within this area is not
                     official text in the document and should not be published other
                     than as editorial notes.                        
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="page" minOccurs="0">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                     An document may optionally begin with a page number.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="preface" minOccurs="0">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                     Documents may optionally have a preface before the main body of 
                     the document.  Some information in the preface may be duplicated
                     in the meta section. The content in the meta section would be
                     normalized, whereas the content in the preface would contain the 
                     text as it is rendered for the user.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="main" minOccurs="0">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                     The primary part of the document is the main area. This contains
                     the bulk of the document including any hierarchical levels, 
                     sections, table of contents, etc.                        
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:choice minOccurs="0" maxOccurs="unbounded">
                  <xsd:element ref="block">
                     <xsd:annotation>
                        <xsd:documentation><![CDATA[
                           A block container, usually for signatures and signing dates.
                        ]]></xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="notes">
                     <xsd:annotation>
                        <xsd:documentation><![CDATA[
                           For notes at the end of a document.
                        ]]></xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="backMatter">
                     <xsd:annotation>
                        <xsd:documentation><![CDATA[
                           For notes at the end of a document.
                        ]]></xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="endMarker" maxOccurs="1">
                     <xsd:annotation>
                        <xsd:documentation><![CDATA[
                           For the endMarker at the end of a public law.
                        ]]></xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="appendix">
                     <xsd:annotation>
                        <xsd:documentation><![CDATA[
                        In addition to the main part of the document, a document
                        may have one or more appendices such as schedules or 
                        explanatory memorandums/notes. These appendices can 
                        either be inline documents or the can be external 
                        referenced documents.                        
                     ]]></xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
               </xsd:choice>
            </xsd:sequence>
            <xsd:attribute name="schemaVersion" type="xsd:string" use="optional"/>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="GenericDocType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The generic doc type is the core type for generic loosely structured
            documents.
            
            Documents using legislative structures and subject to amending,
            either locally or by an external jurisdiction, should not use this
            format.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="BaseBlockType">
            <xsd:sequence>
               <xsd:element ref="meta">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        All documents start with a meta area containing properties about
                        the document. The information contained within this area is not
                        official text in the document and should not be published other
                        than as editorial notes.                        
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="content">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        The primary part of the document is the content area. This
                        can contain a basic generic document structure.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="appendix" minOccurs="0" maxOccurs="unbounded">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        In addition to the content part of the document, a document may have
                        one or more appendices.                        
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
            </xsd:sequence>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="MetaType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The meta type is a core level container for metadata relating to the
            document. The metadata is not part of the official text of the
            document and should not be displayed in the printed text, other
            than in editorial comments.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="BaseBlockType">
            <xsd:choice minOccurs="0" maxOccurs="unbounded">
               <xsd:any namespace="http://purl.org/dc/elements/1.1/" processContents="lax">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        Core elements defined by the Dublin Core may be used.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:any>
               <xsd:any namespace="http://purl.org/dc/terms/" processContents="lax">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        Terms defined by the Dublin Core may be used.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:any>
               <xsd:element ref="property">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        Properties are added to the metadata to record varying
                        aspects of the document. In addition to generic 
                        properties, there are defined derivatives of the 
                        property type that can also be used, for things like
                        the document type and document number.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="set">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        Properties can be grouped into sets. These sets can 
                        be used to represent something like a series of events,
                        a person, or another other object related to the 
                        document.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="action">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        The <action> contains information about the actions associated 
                        with the document.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
            </xsd:choice>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="PrefaceType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            The PrefaceType is used for preface elements. It allows all the elements
            of the MetaType, and others that are rendered.
            ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent >
         <xsd:extension base="BaseBlockType">
            <xsd:choice minOccurs="0" maxOccurs="unbounded">
               <xsd:any namespace="http://purl.org/dc/elements/1.1/" processContents="lax">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        Core elements defined by the Dublin Core may be used.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:any>
               <xsd:any namespace="http://purl.org/dc/terms/" processContents="lax">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        Terms defined by the Dublin Core may be used.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:any>
               <xsd:element ref="property">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        Properties are added to the metadata to record varying
                        aspects of the document. In addition to generic 
                        properties, there are defined derivatives of the 
                        property type that can also be used, for things like
                        the document type and document number.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="set">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        Properties can be grouped into sets. These sets can 
                        be used to represent something like a series of events,
                        a person, or another other object related to the 
                        document.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="action">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        The <action> contains information about the actions associated 
                        with the document.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="note">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        A document may contain page numbering information or
                        other notes in the preface.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="content">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[ 
                           Used for content interspersed between items in a
                           preface. 
                        ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="toc">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[ 
                           Sometimes the table of contents is in the preface. 
                        ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
            </xsd:choice>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="PropertyType" mixed="true">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The property core type is used to record metadata about a document.
            Properties usually are found in the meta or preface area of the 
            document. Properties can also be found in the text of the document
            if they are allowed, expressly or by substitution group. The text
            content of a property other than in the meta section is the official 
            text in the document and a normalized date, value, or reference 
            attribute might also be defined.
            
            In some cases, specific elements are derived from the property type
            with more descriptive names. In that case, the descriptive name is
            the equivalent of the @name attribute on a core property element.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="InlineType">
            <xsd:attributeGroup ref="DateGroup">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[
                  A property can represent a date or a date range.
                  ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attributeGroup>
            <xsd:attributeGroup ref="ValueGroup">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[
                  A property can represent a value or a value range.
                  ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attributeGroup>
            <xsd:attributeGroup ref="ReferenceGroup">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[
                  A property can represent a pointer to either an external 
                  document or an element within the document.
                  
                  A ref can be used to create a pointer to an endnote or a 
                  footnote. In that case, the ref text will be the endnote or 
                  footnote indicator as seen in "<ref idref="fn000001">†</ref>"
                  where the dagger is the indicator. An endnote or footnote 
                  reference should always use the @idref attribute to point to 
                  an endnote or a footnote within the document.
                  ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attributeGroup>
            <xsd:attribute name="type" type="PropertyTypeEnum" use="optional" default="string">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[
                  By default, a property is a string. The @type attribute is used to define
                  an alternate property type. The attributes of the Reference Group are used
                  when the @type is set to "url". The attributes of the Value Group are used
                  when the @type is set to "string", "number", "token", or "boolean" or the
                  @type is not set. The attributes of the Date Group are used when the @type 
                  is set to "date".
                  ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="SetType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The set type is the core type for a group of properties. Property
            sets are found within the meta area only. Sets can contain other
            sets as well as properties.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="BaseBlockType">
            <xsd:choice minOccurs="0" maxOccurs="unbounded">
               <xsd:any namespace="http://purl.org/dc/elements/1.1/" processContents="lax">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        Properties defined by the Dublin Core may be used.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:any>
               <xsd:element ref="property">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                     A set can contain 0 or more properties.
                  ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="set">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                     A set can contain 0 or more sets.
                  ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
            </xsd:choice>
            <xsd:attribute name="type" type="SetTypeEnum" use="optional" default="bag">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[
                  By default, the properties in a set are a simple "bag" of 
                  properties, known as an unordered set. However, a set of 
                  properties can also be typed using the @type attribute, 
                  choosing values from the set type enumeration. 
                  ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="ItemType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The item core type is an item in a table of contents or index. Items
            can be nested to create a hierarchy. 
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="BaseBlockType">
            <xsd:sequence>
               <xsd:choice minOccurs="0" maxOccurs="unbounded">
                  <xsd:element ref="designator">
                     <xsd:annotation>
                        <xsd:documentation><![CDATA[ 
            A <designator> contains the alpha-numeric part of an item in a table of
            contents or index. It is typically the number of the item (e.g. "Part 1").
         ]]></xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="label">
                     <xsd:annotation>
                        <xsd:documentation><![CDATA[ 
            A <label> contains the textual part of an item in a table of contents 
            or index. It is typically the heading of the item (e.g. "Definitions").
         ]]></xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="target">
                     <xsd:annotation>
                        <xsd:documentation><![CDATA[ 
            A <target> is a reference to the target in a table of contents or index.
            It is typically found in the last column and may contain like the page
            number or beginning section number. It has the usual attributes for references.
         ]]></xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="note">
                     <xsd:annotation>
                        <xsd:documentation><![CDATA[ 
            An element of type note is allowed for items such as footnotes, or the ear element
            in an FR document.
         ]]></xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="referenceItem">
                     <xsd:annotation>
                        <xsd:documentation><![CDATA[ 
            referenceItems are also allowed to be nested in a referenceItem.
         ]]></xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
               </xsd:choice>
            </xsd:sequence>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="MainType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The main core type is the container for the main part of the
            document. The content model defines the various aspects in a very
            flexible model allowing arbitrary ordering. The general model allows
            for properties, table of contents, preface and statements to be at the
            top of the document, the preamble or enacting formula in the middle,
            the levels and cross-heading or collections below that, backmatter at
            the end, and notes interspersed anywhere.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:restriction base="BlockType">
            <xsd:sequence>
               <xsd:choice minOccurs="0" maxOccurs="unbounded">
                  <xsd:element ref="property">
                     <xsd:annotation>
                        <xsd:documentation><![CDATA[
                           In addition to placing properties in the <meta> area,
                           properties can also be found in the main container.
                           Elements derived from the core <property> and defined
                           within the property substitution group can also be
                           used.
                        ]]></xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="block">
                     <xsd:annotation>
                        <xsd:documentation><![CDATA[
                           Blocks derived from the core <block> property and 
                           included in the block substitution group, such as 
                           approval signatures, can be placed in the main 
                           container.
                        ]]></xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="statement">
                     <xsd:annotation>
                        <xsd:documentation><![CDATA[
                           Statements or elements derived from the core 
                           <statement> property and included in the statement 
                           substitution group can be placed in the main 
                           container.
                        ]]></xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="toc" maxOccurs="unbounded">
                     <xsd:annotation>
                        <xsd:documentation><![CDATA[
                           The <main> body of the document may have a table of
                           contents. This may be authored or generated. The
                           model permits multiple <toc> elements.
                        ]]></xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
                  <xsd:group ref="NoteStructure"/>
               </xsd:choice>
               <xsd:group ref="PreambleStructure" minOccurs="0">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        The preamble structure, which includes the simple
                        enacting formula, is optional to allow for its removal in
                        enacted law.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:group>
               <xsd:choice minOccurs="0">
                  <xsd:group ref="LevelStructure">
                     <xsd:annotation>
                        <xsd:documentation><![CDATA[
                           The document is permitted to be empty to allow for the
                           case when the document is newly created and still in a
                           drafting state.
                        ]]></xsd:documentation>
                     </xsd:annotation>
                  </xsd:group>
                  <xsd:element ref="collection" maxOccurs="unbounded">
                     <xsd:annotation>
                        <xsd:documentation><![CDATA[
                           The document may contain various collections of components,
                           such as proclamations in the Statutes at Large.
                        ]]></xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
               </xsd:choice>
               <xsd:element ref="action" minOccurs="0" maxOccurs="1">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        The <action> contains information about the actions associated 
                        with the document.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
            </xsd:sequence>
         </xsd:restriction>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="StatementType" mixed="true">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The statement core type is used for most of the provisions that
            begin a legislative document. Preambles, enactment formulas, and 
            other starting provisions are all derivations of statements.            
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="BaseContentType">
            <xsd:choice minOccurs="0" maxOccurs="unbounded">
               <xsd:element ref="marker">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                     A statement can contain markers.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="inline">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                     A statement can contain inline elements.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="note">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                     A statement can contain note elements.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="block">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                     A statement can contain blocks.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="text">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[ 
                        Text context such as an opening <chapeau>, closing <continuation>,
                        or a <proviso> may be interspersed between levels in a hierarchical 
                        structure.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="heading">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                     A statement can contain heading elements.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="content">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                     A statement can contain content elements.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="level">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                     A statement can be composed of hierarchy.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="statement">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                     A statement can be composed of statements.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
            </xsd:choice>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="PreambleType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The preamble core type is the optional container for recitals and
            the enacting formula. In most modern Bills, the preamble is omitted
            and a single standalone enacting formula is used instead.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="BaseBlockType">
            <xsd:sequence>
               <xsd:group ref="HeadingStructure" minOccurs="0">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        A <preamble> can, in some cases, begin with a heading.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:group>
               <xsd:group ref="RecitalStructure" minOccurs="0" maxOccurs="unbounded">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        A <preamble> can be made up of a series of recitals. 
                        Recitals typically begin "Whereas,".
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:group>
               <xsd:choice>
                  <xsd:element ref="enactingFormula" minOccurs="0">
                     <xsd:annotation>
                        <xsd:documentation><![CDATA[
                        When the <preamble> is present, the enacting formula 
                        ends the preamble in a Bill. 
                     ]]></xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="resolvingClause" minOccurs="0">
                     <xsd:annotation>
                        <xsd:documentation><![CDATA[
                        When the <preamble> is present, the resolving clause 
                        ends the preamble in a Resolution. 
                     ]]></xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
               </xsd:choice>
            </xsd:sequence>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="RulePreambleType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The RulePreambleType is the container for statements, signature 
            blocks, and the words of issuance for a Federal Register entry.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="BaseBlockType">
            <xsd:choice maxOccurs="unbounded">
               <xsd:group ref="StatementStructure" minOccurs="0" maxOccurs="unbounded">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        A <rulePreamble> is contains a series of statements, 
                        typically before the words-of-issuance.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:group>
               <xsd:element ref="signatures" minOccurs="0">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        A <rulePreamble> may contain signatures, usually before
                        the words-of-issuance.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="wordsOfIssuance" minOccurs="0">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        The words-of-issuance usually ends the rulePreamble. 
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
            </xsd:choice>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="LevelType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The level core type is the basic element in the primary document
            hierarchy. Levels are used to represent items ranging from Title,
            Subtitle, etc, down to subsubclauses. Typically, a derived synonym 
            which more closely describes the level type will be used rather 
            than the abstract.
            
            There are some level types found in U.S. Code which
            do not have a defined name or number.  For example, see the
            undesignated heading levels in Title 12, Chapter 7. 
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="BaseBlockType">
            <xsd:sequence>
               <xsd:choice minOccurs="0" maxOccurs="unbounded">
                  <xsd:group ref="NumStructure" minOccurs="0" maxOccurs="1">
                     <xsd:annotation>
                        <xsd:documentation><![CDATA[
                        A <level> is usually numbered. However, in a few cases,
                        typically preliminary sections or with item lists, this 
                        may not be the case.
                     ]]></xsd:documentation>
                     </xsd:annotation>
                  </xsd:group>
                  <xsd:group ref="HeadingStructure" minOccurs="0" maxOccurs="1">
                     <xsd:annotation>
                        <xsd:documentation><![CDATA[
                        A <level> may have a heading, but this is not required.
                     ]]></xsd:documentation>
                     </xsd:annotation>
                  </xsd:group>
               </xsd:choice>
               <xsd:element ref="marker" minOccurs="0"/>
               <xsd:group ref="TocStructure" minOccurs="0" maxOccurs="unbounded">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        A table of contents is sometimes found within the level 
                        hierarchy. Typically, this <toc> will be manually defined
                        rather than generated. 
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:group>
               <xsd:element ref="statement" minOccurs="0"/> <!-- for long titles within divisions or other big levels. Used in Consolidated Appropriations bills -->
               <xsd:group ref="LevelStructure" minOccurs="0">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        The primary part of a <level>. This may not exist in 
                        cases where the level has been repealed, omitted, spent,
                        or otherwise removed and a simple note has been left 
                        behind.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:group>
               <xsd:element ref="appendix" minOccurs="0" maxOccurs="unbounded">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        A level may have one or more appendices. 
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
            </xsd:sequence>
         </xsd:extension>
      </xsd:complexContent>

   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="AppropriationsType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            Appropriations are similar to levels, with additional attributes related
            to the appropriation.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="BaseBlockType">
            <xsd:sequence>
               <xsd:group ref="HeadingStructure" minOccurs="0" maxOccurs="unbounded">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        An <appropriations> element can have multiple headings and sub-headings.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:group>
               <xsd:group ref="LevelStructure" minOccurs="0">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        The primary part of an appropriation is a level structure.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:group>
            </xsd:sequence>
            <xsd:attribute name="level">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[
                        The level attribute specifies which level the appropriations
                        element is. This corresponds to major, intermediate, and small
                        in the BillDTD. 
                     ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="forType">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[
                        The forType attribute defines which type of budget grouping the 
                        appropriation is for (for example, agency, bureau, or account).
                     ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attribute name="forValue">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[
                        The forValue attribute defines which budget grouping the 
                        appropriation is for. This could be a URI that points to a 
                        web page giving details of the agency or account, for example.
                     ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:extension>
      </xsd:complexContent>

   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="NumType" mixed="true">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The numType is used to surround the numeric designation given
            to a hierarchical level and other items in a document. The
            <num> element should surround the complete text of the number
            including any preceding prefix and any decoration and punctuation.
            This is to allow the complete text to be properly displayed in
            the published form.
            
            Numbers can be used for either single values or for number ranges.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="InlineType">
            <xsd:attributeGroup ref="ValueGroup">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[
                     Use the @value attribute to record a normalized value of
                     the <num> content. When the text content represents a 
                     range of values, use the @beginValue and @endValue 
                     attributes to record the range.
                  ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attributeGroup>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="HeadingType" mixed="true">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The heading type is used to define heading and subheadings for
            levels and other structured items. Often a heading will follow 
            a number.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="ContentType"> </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="AmendingActionType" mixed="true">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            An amending action type is used to describe an amendment action in terms that
            a computer program can explain. It surrounds the human readable text
            of the amendment action and adds @href, @pos, and @action attributes
            to describe the same information for programmatic evaluation.
            
            When an amendment contains multiple amending actions, they are to be executed
            sequentially in the order in which they appear.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="InlineType">
            <xsd:attributeGroup ref="ReferenceGroup">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[
                     Use the @href and @idref attributes along with the 
                     Amending Group attributes to describe what is being
                     affected.
                  ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attributeGroup>
            <xsd:attributeGroup ref="AmendingGroup">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[
                     Use the @pos and other attributes to describe what is being
                     affected.
                     
                     The attributes in the amending group should only be used
                     for references or amending actions within an amending instruction.
                  ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attributeGroup>
            <xsd:attributeGroup ref="AmendingActionGroup">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[ 
                     Use the @action attribute to describe the amending action being taken.
                  ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attributeGroup>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="NotesType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            Notes are a continguous set of notes, like the US Code notes below
            a section.  
          ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="BaseBlockType">
            <xsd:choice>
               <xsd:sequence>
                  <xsd:element ref="heading" minOccurs="0"/>
                  <xsd:element ref="subheading" minOccurs="0" maxOccurs="unbounded"/>
                  <xsd:element ref="note" maxOccurs="unbounded">
                     <xsd:annotation>
                        <xsd:documentation><![CDATA[ 
                        A <notes> element is a set of note elements. 
                        Typically, rather than using the abstract <note>
                        element, the note will be a more specific elements
                        like <footnote>, etc.
                     ]]></xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
               </xsd:sequence>
               <xsd:element ref="layout"/>
            </xsd:choice>
            <xsd:attributeGroup ref="NoteGroup">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[ 
                     The @type attribute is used to position the notes and the 
                     @topic attribute to categorize the notes.
                  ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attributeGroup>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="NoteType" mixed="true">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A note is an annotation recording important information about the
            document or it's content. The note may be rendered inline, or, in the
            case of a positionedNote, it may be rendered out-of-line.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="ContentType">
            <xsd:attributeGroup ref="NoteGroup">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[ 
                     The @type attribute is used to position the note and the 
                     @topic attribute to categorize the note.
                  ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attributeGroup>
            <xsd:attributeGroup ref="DateGroup">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[ 
                     The @date attribute is used to associate dates with a note.
                     This can be used to generate alerts.
                  ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attributeGroup>
            <xsd:attributeGroup ref="ReferenceGroup">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[ 
                     The @href attribute can used to associate external content
                     with a note.
                  ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attributeGroup>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="PositionedNoteType" mixed="true">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The content model of a PositionedNoteType element is the same as
            NoteType, with additional attributes to specify where the note is
            to be rendered. 
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="NoteType"> 
            <xsd:attributeGroup ref="RenderingPositionGroup">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[ 
                        The RenderingPositionGroup attribute can used to
                        specify where the note is to be rendered.
                     ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attributeGroup>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="ElidedType" mixed="true">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The content of the <elided> element is the text that is rendered in 
            place of the elided material. This content may be determined by 
            organizational conventions, such as the three- five- and seven- stars 
            found in the Federal Register. The content might also be authored to 
            indicate where the elided content can be found. 
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:restriction base="NoteType"> </xsd:restriction>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="AppendixType" mixed="true">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The appendix type is used to attach associated documents to the main
            document. Typically, appendices are schedules or explanations, but
            can also be documents that are incorporated by reference.
            
            Appendices can be either included within (as is usually the case) 
            or they can be referenced via a URL.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="BaseBlockType">
            <xsd:sequence>
               <xsd:element ref="page" minOccurs="0">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                     An appendix may optionally begin with a page number.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="preface" minOccurs="0">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                     Appendices may optionally have a preface before the main body of 
                     the appendix.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="main" minOccurs="0">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                     For a structured appendix the body is in a main element.
                     This can include any hierarchical levels, sections, table of
                     contents, etc.                        
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="content" minOccurs="0">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                     For an unstructured appendix, the body is in a content element.
                     This can include paragraphs, headings, tables, lists, images, etc.
                    ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="notes" minOccurs="0">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                     For notes at the end.
                    ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
            </xsd:sequence>
            <xsd:attributeGroup ref="LinkGroup">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[ 
                     If an <appendix> is to be included by reference, use the
                     @src attribute with a normal URL to point to the document
                     to be included.
                  ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attributeGroup>
            <xsd:attribute name="orientation" type="OrientationEnum" use="optional"
               default="portrait">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[ 
                     Use the @orientation attribute to specify a "landscape" 
                     orientation for the entire schedule. The orientation of
                     individual elements within the schedule can also be 
                     defined.
                  ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="BackMatterType" mixed="true">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The back matter type is used to contain multiple components at the
            end of a document.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="BaseBlockType">
            <xsd:choice maxOccurs="unbounded">
               <xsd:element ref="content">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                     For unstructured content within back matter.
                     This can include paragraphs, headings, tables, lists, images, etc.
                    ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="index">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                     For indices within back matter.
                    ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:group ref="NoteStructure">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                     For notes, page numbers, etc.
                    ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:group>
            </xsd:choice>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="SignaturesType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            Defines a block for a set of signatures. An opening paragraph
            is permitted as well as an ending date. In some cases, the date may
            appear within the opening paragraph.
            
            The signatures may either be specified serially or in a grid-like
            layout. The <notation> element allows for text such as 'Attest:'
            to be placed once per <signatures> block, or for each <signature>.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:restriction base="BlockType">
            <xsd:sequence>
               <xsd:element ref="notation" minOccurs="0">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[ 
            Defines a notation for the signatures or signature, such as 'Attest:'.
         ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:choice>
                  <xsd:element ref="signature" maxOccurs="unbounded"/>
                  <xsd:element ref="layout"/>
               </xsd:choice>
               <xsd:element ref="signatureDate" minOccurs="0"/>
            </xsd:sequence>
         </xsd:restriction>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="SignatureType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            Defines a basic signature element comprising a name and optionally 
            the person's role, their affiliation, and a date. All fields can be
            defined to include either an @href or an @idref to point to an 
            identifying resource that describes the person, their role, and
            their affiliation.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:restriction base="BlockType">
            <xsd:sequence>
               <xsd:element ref="notation" minOccurs="0"/>
               <xsd:choice maxOccurs="unbounded">
                  <xsd:element ref="autograph" minOccurs="0"/>
                  <xsd:element ref="name" minOccurs="0"/>
                  <xsd:element ref="role" minOccurs="0" maxOccurs="unbounded"/>
                  <xsd:element ref="affiliation" minOccurs="0"/>
                  <xsd:element ref="signatureDate" minOccurs="0">
                     <xsd:annotation>
                        <xsd:documentation><![CDATA[
                           A date can be associated with a group of signatures,
                           or using this element with a single signature.
                        ]]></xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
               </xsd:choice>
            </xsd:sequence>
         </xsd:restriction>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="RefType" mixed="true">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The ref type is used to denote references within the text of a
            document. The text of the element is the human-friendly 
            representation while the text in the @href of @idref attribute
            is the computer-friendly representation built in accordance with
            the referencing model described above.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="PropertyType">
            <xsd:attributeGroup ref="AmendingGroup">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[
                     Use the @pos and other attributes to describe
                     what or where is being affected.
                     
                     The attributes in the amending group should only be used
                     for references or amending actions within an amending instruction.
                  ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attributeGroup>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="DateType" mixed="true">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The date type is used to denote dates within the text of a
            document. The text of the element is the human-friendly 
            representation while the text in the @date attribute is the
            computer-friendly normalized representation. 
            
            For dates at the top of a bill, this is the date or dates on which a
            particular floor action occurred. There may be two dates associated with
            an action, the regular calendar date and the legislative day. Sometimes
            the textual descriptions of these dates do not divide neatly into two parts,
            for example, the full date may be written as “February 3 (legislative day,
            January 30), 1995”. Therefore, the date is just data characters, to be
            entered in any fashion necessary.
            
            Dates can be specified as either dates or as date times when the 
            document might not coincide with the local time zone.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:restriction base="PropertyType">
            <xsd:attributeGroup ref="DateGroup">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[ 
                     Use the @date attribute to record a normalized value of the
                     date according to ISO 8601.
                  ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attributeGroup>
         </xsd:restriction>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="QuotedTextType" mixed="true">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A quoted text type is an extraction of simple text from another 
            source or origin. If the quoted text is to have literal quotes 
            surrounding it, then those characters must be included in the text
            surrounding the quoted text and not within it.
            
            Quoted text is seen in amendments or modifications.
            
            Use the @identifier attribute to establish the referencing context
            of the quoted text.            
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="InlineType">
            <xsd:attribute name="origin" type="xsd:anyURI" use="optional">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[
                     The @origin attribute is used to refer to the origin of
                     quoted text. The value must always be specified as a 
                     relative URL conforming to the reference specification.
                     
                     The @origin attribute is optional.
                  ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="QuotedContentType" mixed="true">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A quotedContentType is used for an extraction of potentially structured
            text (text with XML elements) from another source or origin.
            
            Quoted content is seen in USC Notes, amendments, and modifications. 

            Use the @identifier attribute to establish the referencing context
            of the quoted structure
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="ContentType">
            <xsd:attribute name="origin" type="xsd:anyURI" use="optional">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[            
                     The @origin attribute is used to refer to the origin of
                     quoted text. The value must always be specified as a 
                     relative URL conforming to the reference specification.
                     
                     The @origin attribute is optional.
                  ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="CollectionType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The collection core type is the basic element in a document that is
            a collection of items, potentially from external sources. Collections
            may contain individual items and/or other collections.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="BaseBlockType">
            <xsd:sequence>
               <xsd:choice maxOccurs="unbounded">
                  <xsd:element ref="preface" minOccurs="0" maxOccurs="1">
                     <xsd:annotation>
                        <xsd:documentation><![CDATA[
                           A collection may have a preface. 
                        ]]></xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="toc" minOccurs="0" maxOccurs="unbounded">
                     <xsd:annotation>
                        <xsd:documentation><![CDATA[
                           A table of contents may be found within a collection. 
                        ]]></xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="content">
                     <xsd:annotation>
                        <xsd:documentation><![CDATA[ 
                           Used for content interspersed between items in a
                           collection. 
                        ]]></xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="collection">
                     <xsd:annotation>
                        <xsd:documentation><![CDATA[
                           A <collection> may contain other collections.
                        ]]></xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="component">
                     <xsd:annotation>
                        <xsd:documentation><![CDATA[
                           A <component> contains an individual item
                           of a collection.
                        ]]></xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="note">
                     <xsd:annotation>
                        <xsd:documentation><![CDATA[
                           A <note> may come between items in a collection.
                           This allows page breaks.
                        ]]></xsd:documentation>
                     </xsd:annotation>
                  </xsd:element>
               </xsd:choice>
            </xsd:sequence>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <xsd:complexType name="ComponentType" mixed="true">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <ComponentType> is a generic container for an individual item.  The
            content may be contained in the item, or the content may be included
            by reference.
            
            Components are typically used in collections, but may exist in other
            parts of the document.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="ContentType">
            <xsd:attribute name="origin" type="xsd:anyURI" use="optional">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[            
                     The @origin attribute is used to refer to the origin of
                     the item. The value must always be specified as a 
                     relative URL conforming to the reference specification.
                     
                     The @origin attribute is optional.
                  ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attributeGroup ref="ReferenceGroup">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[
                  The content of a component can be included by reference, 
                  identified by the ReferencGroup attibutes.
                  ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attributeGroup>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <!-- Structural Building Blocks                                           -->
   <!-- ==================================================================== -->
   <xsd:group name="NoteStructure">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            Notes can be defined in a variety of ways and tend to occur in many
            different places throughout legislation.
            
            This structure allows for either individual notes or groups of 
            notes.
            
            The number of times the notes might appear should be specified with
            each use of this group.            
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:choice>
         <xsd:element ref="note"/>
         <xsd:element ref="notes"/>
      </xsd:choice>
   </xsd:group>
   <!-- ==================================================================== -->
   <xsd:group name="NumStructure">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The num structure allows for an unlimited number of occurrences in
            a simple sequence. This is to allow an item to be renumbered without
            creating a whole new parent item, typically a level or appendix structure.
            Each <num> element should apply to a different temporal period.
            
            Notes will typically only follow a <num> when found in a repealed,
            omitted, spent, or otherwise removed section or level that is being
            noted.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:sequence>
         <xsd:element ref="num" maxOccurs="unbounded"/>
         <xsd:group ref="NoteStructure" minOccurs="0" maxOccurs="unbounded"/>
      </xsd:sequence>
   </xsd:group>
   <!-- ==================================================================== -->
   <xsd:group name="HeadingStructure">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            The primary structure of headings.
            
            A <heading> should exist only once for a single temporal period.
            Multiple headings are permitted to support versioning without having
            to create a whole new parent level or appendix. This is
            important in hierarchical upper levels where it is not desirable to
            generate a whole new level should part of the heading change.
            
            Use the optional <subheadings> in cases where there is one or more
            subheadings to the parent item. Like the <heading> element,
            different <subheading> elements can be added to apply to different 
            temporal periods. 
            
            Notes may follow the heading. Often this is a source note.
            ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:sequence>
         <xsd:choice maxOccurs="unbounded">
            <xsd:element ref="heading"/>
         </xsd:choice>
         <xsd:sequence>
            <xsd:element ref="subheading" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:group ref="NoteStructure" minOccurs="0" maxOccurs="unbounded"/>
         </xsd:sequence>
      </xsd:sequence>
   </xsd:group>
   <!-- ==================================================================== -->
   <xsd:group name="TocStructure">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            The table of contents structure defines the simple case of a <toc>
            followed by optional notes.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:sequence>
         <xsd:element ref="toc"/>
         <xsd:group ref="NoteStructure" minOccurs="0" maxOccurs="unbounded"/>
      </xsd:sequence>
   </xsd:group>
   <!-- ==================================================================== -->
   <xsd:group name="StatementStructure">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            The statement structure defines the simple case of a <statement>
            (such as a <docTitle> or <longTitle>) followed by optional notes.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:sequence>
         <xsd:element ref="statement"/>
         <xsd:group ref="NoteStructure" minOccurs="0" maxOccurs="unbounded"/>
      </xsd:sequence>
   </xsd:group>
   <!-- ==================================================================== -->
   <xsd:group name="RecitalStructure">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            The recital structure defines the simple case, found in a preamble,
            of a recital followed by optional notes. Recitals usually start with
            "Whereas,".
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:sequence>
         <xsd:element ref="recital"/>
         <xsd:group ref="NoteStructure" minOccurs="0" maxOccurs="unbounded"/>
      </xsd:sequence>
   </xsd:group>
   <!-- ==================================================================== -->
   <xsd:group name="PreambleStructure">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            The preamble structure defines the case where a <preamble>, an 
            <enactingFormula>, or a <resolvingClause> can exist within the 
            <main> part of a <lawDoc>. When a <preamble> is used, the 
            <enactingFormula> or <resolvingClause> is found within the
            <preamble>, at the bottom.
            
            Notes may be defined after the <preamble>, <enactingFormula>,
            or <resolvingClause>.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:sequence>
         <xsd:choice>
            <xsd:element ref="preamble"/>
            <xsd:element ref="rulePreamble"/>
            <xsd:element ref="enactingFormula"/>
            <xsd:element ref="resolvingClause"/>
         </xsd:choice>
         <xsd:group ref="NoteStructure" minOccurs="0" maxOccurs="unbounded"/>
      </xsd:sequence>
   </xsd:group>
   <!-- ==================================================================== -->
   <xsd:group name="LevelStructure">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            The level structure is the primary structure of hierarchy. A level
            is structured either as an instruction, loosely structured content, 
            or as a hierarchy.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:choice>
         <xsd:sequence>
            <xsd:annotation>
               <xsd:documentation><![CDATA[
                  Multiple <content> elements should only be used for cases
                  where the content has been versioned and it is not desirable
                  to create a whole new version of the parent level. This use
                  case should be very rare.
               ]]></xsd:documentation>
            </xsd:annotation>
            <xsd:element ref="content" maxOccurs="unbounded"/>
            <xsd:group ref="NoteStructure" minOccurs="0" maxOccurs="unbounded"/>
         </xsd:sequence>
         <xsd:sequence maxOccurs="unbounded">
            <xsd:choice>
               <xsd:element ref="text">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[ 
                     Used for content interspersed between levels in a hierarchical 
                     structure, such as an opening <chapeau>, an interstitial or
                     closing <continuation>, or a <proviso>. 
                  ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="level">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        When a <level> is not the lowest level of a hierarchy, it
                        will primarily be made up of child levels.
                        
                        It is generally desirable to push all versioning down to
                        lower elements to avoid replicating large portions of 
                        the document to support version changes. This means that
                        the <num>, <heading>, and <subheading> elements should
                        be defined across different temporal periods rather than
                        defining <level> elements across temporal periods. 
                        However, <level> elements can be defined with the
                        temporal attributes and this applies to the lower levels,
                        such as the <section> level, where practical 
                        considerations necessitate versioning at the <level>
                        element.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="crossHeading">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        A cross heading is an interstitial heading appearing
                        between level items, but is not part of the hierarchy.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="appropriations">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        Appropriations elements are used in bills.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
            </xsd:choice>
            <xsd:group ref="NoteStructure" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element ref="signature" minOccurs="0" maxOccurs="unbounded"/> <!-- Federal Register Rule have signatures at the end of levels when switching agencies -->
         </xsd:sequence>
      </xsd:choice>
   </xsd:group>
   <!-- ==================================================================== -->
   <!-- Core Declarations                                                    -->
   <!-- ==================================================================== -->
   <xsd:element name="lawDoc" type="LawDocType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <lawDoc> is a base level element representing all types of 
            legislative documents. 
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="document" type="GenericDocType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <document> is a base level element for loosely structured
            documents. 
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="meta" type="MetaType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <meta> block contains properties and sets of properties recording
            metadata about the document. The information contained within the
            meta block is not part of the official law and should not be printed
            as such. Ordinarily, all text content in a document is intended for
            publication in textual representations of the document. However,
            this is not the case for textual content in the <meta> block. If, 
            for instance, a property in the meta block has text content, it
            does not automatically become text to be included in a published 
            form. However, in some case this may be desirable and can be done.
            However, the meaning is not implicit.
            
            The <meta> block may contain elements from the Dublin Core.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="property" type="PropertyType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <property> is a simple value recorded with the document. Typically
            properties are stored in the <meta> and/or <preface> blocks of the document.
            
            If a property in the <meta> block has textual content, then this 
            text is not intended for publication. However, if a property in the <preface> 
            block has textual content, then this text is intended for publication.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="set" type="SetType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <set> is a grouping of properties in the <meta> block. Sets 
            themselves can contain other sets. Sets can be typed using the 
            @type attribute with the SetTypeEnum enumeration. By default, sets
            are simply unordered bags of properties.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="preface" type="PrefaceType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            Documents may optionally have a preface before the main body of 
            the document.  Some information in the preface may be duplicated
            in the meta section. The content in the meta section would be
            normalized, whereas the content in the preface would contain the 
            text as it is rendered for the user.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="toc" type="ToCIndexType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <toc> is a table of contents. A table of contents can appear in a 
            number of locations in document. A table of contents can appear in
            three different locations:
            
            - It can appear anywhere within the top of the <main> element, 
              before the levels.
            - It can appear in any level following the <heading>, <subheading>,
              and any notes.
            - It can appear in an <appendix>.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="index" type="ToCIndexType" substitutionGroup="toc">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <toc> is a table of contents. A table of contents can appear in a 
            number of locations in document. A table of contents can appear in
            three different locations:
            
            - It can appear anywhere within the top of the <main> element, 
              before the levels.
            - It can appear in any level following the <heading>, <subheading>,
              and any notes.
            - It can appear in an <appendix>.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="tableOfTitlesAndChapters" type="ToCIndexType" substitutionGroup="index">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <tableOfTitlesAndChapters> is a table of titles and chapters.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="listOfAgencies" type="ToCIndexType" substitutionGroup="index">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <listOfAgencies> is a list of agencies. It is found for example in the back
            matter of the CFR.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="listOfSectionsAffected" type="ToCIndexType" substitutionGroup="index">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <listOfSectionsAffected> is a list of sections that are affected. It is found
            for example in the back matter of the CFR.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="listOfBillsEnacted" type="ToCIndexType" substitutionGroup="index">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <listOfBillsEnacted> is a list of bills enacted into law; either public law or 
            private law. It is found for example in the front of the Statutes at Large.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="listOfPublicLaws" type="ToCIndexType" substitutionGroup="index">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <listOfPublicLaws> is a list of public laws. It is found for example in the
            front of the Statutes at Large.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="listOfPrivateLaws" type="ToCIndexType" substitutionGroup="index">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <listOfPrivateLaws> is a list of private laws. It is found for example in the
            front of the Statutes at Large.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="listOfConcurrentResolutions" type="ToCIndexType" substitutionGroup="index">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <listOfConcurrentResolutions> is list of concurrent resolutions. It is found
            for example in the front of the Statutes at Large.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="listOfProclamations" type="ToCIndexType" substitutionGroup="index">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <listOfProclamations> is a list of bills presidential proclamations. It is
            found for example in the front of the Statutes at Large.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="popularNameIndex" type="ToCIndexType" substitutionGroup="index">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <popularNameIndex> is a list of popular names. It is found for example in the
            back of the Statutes at Large.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="subjectIndex" type="ToCIndexType" substitutionGroup="index">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <subjectIndex> list is an index of subjects. It is found for example in the
            back of the Statutes at Large.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>

   <xsd:element name="referenceItem" type="ItemType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <referenceItem> is an item in a ToCIndex that refers to specific content
            in the document (versus a concept or a grouping). The referenceItem may also
            contain lower level referenceItems if the content being referred to contains
            lower level content. 
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="headingItem" type="ItemType" substitutionGroup="referenceItem">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <headingItem> is an item in a ToCIndex that is a columnar-type heading for
            the items below it. e.g. “Sec.” or “Page”. This is commonly repeated on
            following pages.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="groupItem" type="ItemType" substitutionGroup="referenceItem">
      <xsd:annotation>
         <xsd:documentation>
            <![CDATA[ 
            A <groupItem> is an item in a ToCIndex that collects a number of referenceItems 
            or other groupItems under a heading. The groupItem may or may not refer to a
            specific place in the document. groupItems may also contain nested groupItems.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="designator">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <designator> is a reference to a numbered item in a table of contents or index. 
            It has attributes for leaders.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexType mixed="true">
         <xsd:complexContent>
            <xsd:extension base="RefType">
               <xsd:attributeGroup ref="LeaderGroup"/>
            </xsd:extension>
         </xsd:complexContent>
      </xsd:complexType>
   </xsd:element>
   <xsd:element name="label">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <label> is a textual reference in a table of contents or index.
            It has attributes for leaders.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexType mixed="true">
         <xsd:complexContent>
            <xsd:extension base="RefType">
               <xsd:attributeGroup ref="LeaderGroup"/>
            </xsd:extension>
         </xsd:complexContent>
      </xsd:complexType>
   </xsd:element>
   <xsd:element name="target">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <target> is a reference to the target in a table of contents. This is 
            used to provide various items in the last column of the multiple column table of 
            contents entry. It has the usual attributes for references.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexType mixed="true">
         <xsd:complexContent mixed="true">
            <xsd:extension base="RefType">
               <xsd:attributeGroup ref="LeaderGroup"/>
            </xsd:extension>
         </xsd:complexContent>
      </xsd:complexType>
   </xsd:element>
   <xsd:element name="main" type="MainType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <main> is the primary container for the body of a legislative
            document.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="statement" type="StatementType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <statement> is the general container for the provisions at the
            beginning of legislation and for heading sections in FR rulePreambles.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="preamble" type="PreambleType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <preamble> is a container for the "Whereas" clauses and the 
            enacting formula. Modern practice is to not use the preamble, 
            but to use a standalone enacting formula. However, for the rare
            cases where a preamble is desired, the tags are made available.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="recital" type="StatementType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <recital> is a preliminary statement in a bill stating the reasons
            for the Bill. Modern legislation seldom uses a recital although it
            can still occur.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="resolvingClause" type="StatementType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <resolvingClause> is a special type of statement that begins with "resolved",
            that is specified just before the main content of the resolution. The 
            <resolvingClause> can appear as either the last statement in a preamble or, 
            when a preamble is not present, standalone within the main element just prior 
            to the main provisions.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="enactingFormula" type="StatementType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <enactingFormula> is specified just before the main provisions of
            a bill. The <enactingFormula> can appear as either the last statement
            in a preamble or, when a preamble is not present, standalone within
            the main element just prior to the main provisions. 
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="rulePreamble" type="RulePreambleType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <rulePreamble> is a container for the statements, signature blocks, and words-of-issuance
            within a Rule or Proposed Rule in the Federal Register.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="wordsOfIssuance" type="StatementType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <wordsOfIssuance> is a special type of statement that introduces the content
            of a regulation rule or proposed rule. The <wordsOfIssuance> is the last
            statement in a rule preamble.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="level" type="LevelType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <level> is the general container for the main provisions of
            legislation, often organized as a hierarchy. 
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="appropriations" type="AppropriationsType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
           The <appropriations> element is used for nesting
      the various levels of appropriation agencies, bureaus, and
      departments, as well as the various budget areas within those
      agencies, bureaus, and departments. 
      
      The level attribute is used to distinguish major, intermediate,
      and small levels of nesting.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="num" type="NumType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <num> surrounds the numeric designation assigned to a level
            in legislation. Numbering is not always present. The number should
            always include the surrounding decoration including descriptive 
            text and parenthesis and grammar. This number should never be 
            auto-generated. A normalized value based on the text content of the 
            <num> element should be stored in the @value attribute.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="text" type="ContentType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            The <text> element is a base class for <chapeau>, <continuation>, 
            <proviso>, <def> and any other type of text that can be interspersed 
            in the hierarchy of a document. It is similar to the <content> tag, 
            but has more limited applicability. In general, use the <content>
            tag when a hierarchical level is made up largely of general content 
            and use one of the derivatives of the text tag when limited text 
            is found interstitially between levels or other tags. 
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="heading" type="HeadingType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <heading> is an optional part of a level element and various other
            elements. The heading is based on the content primitive and can contain
            various elements including definitions.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="subheading" type="HeadingType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <subheading> is an optional part of a level element and various
            other elements. Like the heading, the subheading is based on the 
            content primitive and can contain various elements including 
            definitions. A subheading should only be created if a heading 
            already exists.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="crossHeading" type="HeadingType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <crossHeading> is a non-hierarchical heading construct which can
            be placed within and amongst heading levels. A <crossHeading> acts
            as a divider, separating items within a level. 
            
            Cross headings are typically shown as center-aligned headings 
            without any level identification or level numbering.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="amendingAction" type="AmendingActionType" substitutionGroup="inline">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            An <amendingAction> is an atomic-level amendment instruction. The amending action
            contains the text related to that action and the type of amending action to be
            performed as well as optional attributes that old more information.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="appendix" type="AppendixType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            An <appendix> is a generic element appended to the main part of a
            document. Appendices can either be inline or included via a @src
            reference. 
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="schedule" type="AppendixType" substitutionGroup="appendix">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <schedule> is a type of appendix.
            It can contain a wide variety of content and the containment model is 
            consequently relatively loose. A <schedule> is often a list of numbered items,
            sometimes arranged in columns. Sometimes a schedule is a list of 
            consequential amendments. Schedules can also be tables or documents
            defined externally such as extradition treaties or trade agreements.
            Schedules are sometimes printed in a landscape rather that portrait
            orientation.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="backMatter" type="BackMatterType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <backMatter> is a container for the back matter at the end of a
            document.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="signatures" type="SignaturesType" substitutionGroup="block">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            Some documents conclude with one or more signatures indicating sponsorship,
            attestation, or approval. These signatures are placed within this container.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="signature" type="SignatureType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            A <signature> consists of a name and, any of the optional elements role,
            affiliation, and date. Both the name and the role may be hyperlinked to something
            which identifies the person or role.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <!-- Substitution groups allow the elements below to appear in 
        numerous places. -->
   <xsd:element name="ref" type="RefType" substitutionGroup="inline">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <ref> element is a reference or link to another document, a 
            location within another document, or a location with the same
            document.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="date" type="DateType" substitutionGroup="inline">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <date> element is a wrapper around dates. A normalized value
            of the date text can be stored in the @date attribute or in the
            @startDate and @endDate attributes in the case of a date range.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="quotedText" type="QuotedTextType" substitutionGroup="inline">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <quotedText> element is used for an extraction of simple text from 
            another source or origin. If the quoted text is to have literal 
            quotes surrounding it, then those characters must be included in the
            text surrounding the quoted text. The <quotedText> element does not
            generate those characters.
            
            Quoted text is seen in amendments or modifications. The <quotedText>
            element is not used for other cases where quote characters may appear,
            such as place name or titles.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="quotedContent" type="QuotedContentType" substitutionGroup="content">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <quotedContent> element is used for an extraction of structured
            text (text with XML elements) from another source or origin or destined
            for another document. Quoted content is used in USC Notes, amendments,
            and modifications. If the quoted content is to have literal quotes
            within it, then those characters must be included in the text. The
            <quotedContent> element does not generate those characters.           
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="collection" type="CollectionType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <collection> is the container for a collection of items or components. 
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="component" type="ComponentType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <component> is an item or a reference to an item within a collection.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="fragment" type="BlockType" substitutionGroup="block">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <fragment> element is used to contain an arbitrary fragment of 
            a USLM document. It may be used to transport a portion of a document 
            between subsystems, such as retrieving a section from a repository.
            Having a fragment wrapper would allow, for instance, two sibling
            elements to be transported, or allow an element to be moved with
            processing instructions around it.            
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <!-- ==================================================================== -->
   <!-- Generic Definitions                                                  -->
   <!-- ==================================================================== -->

   <xsd:element name="elided" type="ElidedType" substitutionGroup="note">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            An <elided> element is a replacement for text content that has 
            been elided or omitted from this document.  The optional ref
            attribute may point to the text that was elided.
            The <elided> element may only contain text content (typically 
            asterisks, called 'stars').
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <!-- ==================================================================== -->
   <!-- Generic Definitions                                                  -->
   <!-- ==================================================================== -->
   <xsd:complexType name="LayoutType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A layout type is used to denote an area of text intended to
            be displayed in a column-oriented layout similar to a table. Use
            the <header>, <row>, and <column> elements to denote the rows and
            columns of the structure. A <layout> can be either row oriented or
            column oriented.
            
            Use layout types when describing legislative structure in a column
            oriented fashion. For regular tables as shown in forms, use HTML
            tables.            
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="BaseBlockType">
            <xsd:choice minOccurs="0" maxOccurs="unbounded">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[
                     A <layout> type can contain various types of elements
                     as rows including headers, rows, TOC items, blocks,
                     and contents. All elements, aside from <column> elements,
                     are treated as rows when found directly within a layout 
                     structure.
                  ]]></xsd:documentation>
               </xsd:annotation>
               <xsd:element ref="header"/>
               <xsd:element ref="row"/>
               <xsd:element ref="block"/>
               <xsd:element ref="content"/>
               <xsd:group ref="NoteStructure"/>
            </xsd:choice>
            <xsd:attribute name="orientation" type="OrientationEnum" use="optional"
               default="portrait">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[
                     The @orientation attribute is used to specify a landscape 
                     orientation for the published form. This is primarily used
                     for schedules or tables.                            
                  ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="RowType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A row type denotes a row entry within a layout structure. In 
            addition to the formal <row> element, any child element directly in
            a <layout> element, aside from a <column> element, is regarded as a row.            
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="BaseBlockType">
            <xsd:sequence>
               <xsd:element ref="column" minOccurs="1" maxOccurs="unbounded">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                        A row contains one or more column cells.
                     ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
            </xsd:sequence>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="ColumnType" mixed="true">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A column type is a cell in a layout structure. As a <content>
            element, it can contain a wide range of text and elements.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent mixed="true">
         <xsd:extension base="ContentType">
            <xsd:attributeGroup ref="CellGroup">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[
                     Use the elements of the cell group to specify
                     the row and column spans.
                  ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attributeGroup>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="PType" mixed="true">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A "P" type is a simple unnumbered paragraph. As a <content>
            element, it can contain a wide range of text and elements.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="ContentType"/>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="BrType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A break type is simple marker element denoting a line break.            
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:simpleContent>
         <xsd:extension base="MarkerType">
            <xsd:attribute name="verticalSpace" type="MediumStringSimpleType" use="optional">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[
                  The @verticalSpace attribute defines the amount of vertical space associated
                  with the line break. If the attribute is not present, no extra space between lines
                  is added. If the attribute is present, the value is the amount of space
                  to add to the position of the next line.  The value may specify units, using CSS
                  syntax (e.g. "4em" or "12pt"). If no units are given, the units are assumed to be
                  points.  The values "nextPage" and "nextColumn" are used to force a page break or
                  column break.
                  ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attribute>
         </xsd:extension>
      </xsd:simpleContent>
   </xsd:complexType>
   <xsd:complexType name="ImgType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            An image type is a simple marker element denoting where a graphic image is to be
            inserted. This is commonly used within the <figure> element.          
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:simpleContent>
         <xsd:extension base="MarkerType">
            <xsd:attribute name="orientation" type="OrientationEnum" use="optional"
               default="portrait">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[
                     The @orientation attribute is used to specify a landscape
                     orientation for the published form. If the @orientation attribute
                     is not set, the default orientation for all elements is portrait.                  
                  ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attribute>
            <xsd:attributeGroup ref="LinkGroup">
               <xsd:annotation>
                  <xsd:documentation><![CDATA[
                     Use the @src attribute to point to the image with a normal URL. 
                  ]]></xsd:documentation>
               </xsd:annotation>
            </xsd:attributeGroup>
         </xsd:extension>
      </xsd:simpleContent>
   </xsd:complexType>
   <!-- ==================================================================== -->
   <!-- Generic Declarations                                                 -->
   <!-- ==================================================================== -->
   <xsd:element name="layout" type="LayoutType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <layout> element is used to denote an area of text intended to
            be displayed in a columns-oriented format similar to table. Use
            the <header>, <row>, and <column> elements to denote the rows and
            columns of the structure.
            
            Use <layout> when describing legislative structure in a column-
            oriented fashion. For regular tables as shown for forms, use HTML
            tables.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="header" type="RowType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <header> denotes a header row within a column-based structure.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="row" type="RowType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <row> denotes a row entry within a column-based structure.
            In addition to the formal <row> element, any child element
            in a <layout> element, aside from a <column> element, is regarded as 
            a row. There should always be a <layout> element as an 
            ancestor of a <row>. Both column and row spans may be defined for
            <row> entries.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="column" type="ColumnType" substitutionGroup="content">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            A <column> denotes a column when specified directly under a <layout>
            or a cell when specified within a <row> (or equivalent) in a 
            <layout> structure. There should always be a <layout> element as an 
            ancestor of a <column>. Both column and row spans may be defined for
            <column> entries.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="p" type="PType" substitutionGroup="content">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <p> is a simple paragraph. This is different from the
            more complex numbered <paragraph> element used for
            the formal paragraph level of legislative documents.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="br" type="BrType" substitutionGroup="marker">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <br> is simple marker element denoting a line break.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="img" type="ImgType" substitutionGroup="marker">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            An <img> is a simple marker element denoting where a graphic
            image is to be inserted. Use the @src attribute to point to the
            image with a normal URL.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="figure" type="ContentType" substitutionGroup="content">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <figure> is a unit of content, optionally with a caption, that 
            is self-contained, that is typically referenced as a single unit from 
            the main flow of the document, and that can be moved away from the
            main flow of the document without affecting the document’s meaning.
            A figure usually contains an <img> element, but may instead contain 
            mathematical or chemical markup. This element is modelled after the
            HTML5 <figure> element.
          ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="figCaption" type="ContentType" substitutionGroup="content">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <figCaption> represents a caption or legend for a figure. It can
            appear before or after the content within the figure. This element is 
            modelled after the HTML5 <figCaption> element, although in HTML5, 
            only one figCaption is allowed per figure element.
          ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="center" type="ContentType" substitutionGroup="content">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <center> element contains content text that is to be centered on the page.
          ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="fillIn" type="ContentType" substitutionGroup="content">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <fillIn> is an inline spacer which denotes an area to be filled 
            in a form designed to be printed. Usually, a <fillIn> is rendered
            as dotted lines with the text content within the <fillIn> tags shown
            just below. If parentheses are to surround the text shown below the line,
            then those parentheses should be included in the text content. 
          ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="checkBox" type="ContentType" substitutionGroup="content">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <checkBox> is an inline tick box which denotes a box to be filled 
            in on an form.  
          ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="b" type="InlineType" substitutionGroup="inline">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
         A <b> is a simple inline element for text that is to be rendered in bold text.
        ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="i" type="InlineType" substitutionGroup="inline">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
         An <i> is a simple inline element for text that is to be rendered in italic text.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="sub" type="InlineType" substitutionGroup="inline">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
         A <sub> is a simple inline element for text that is to be rendered in subscript text.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="sup" type="InlineType" substitutionGroup="inline">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
         A <sup> is a simple inline element for text that is to be rendered in superscript text.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="del" type="InlineType" substitutionGroup="inline">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <del> is a simple inline element for text that is to be rendered as deleted text
            within a modification.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="ins" type="InlineType" substitutionGroup="inline">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            An <ins> is a simple inline element for text that is to be rendered inserted text
            within a modification.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="headingText" type="InlineType" substitutionGroup="inline">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <headingText> element is for text that bears some relationship to a <heading> 
            element. It may be a reference to a heading, or an amendment to a heading, 
            or a quoted heading. The @role attribute is used to indicate the role and 
            thereby styling of the typeset text.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="span" type="InlineType" substitutionGroup="inline">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <span> element is general purpose wrapper for text similar to an
            html span. The @role attribute can be used to specify the type
            of span.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element> 
   <xsd:element name="committee" type="InlineType" substitutionGroup="inline">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <committee> element is used to tag references to committees in text. It is 
            used, for example, in the legislative history section of a Public Laws.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="coverTitle" type="PropertyType" substitutionGroup="property">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <coverTitle> is the version of the title that is rendered on the
            cover page. This is, for example, found on some Public Laws.
          ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="coverText" type="ContentType" substitutionGroup="content">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <coverText> is content on the cover page that is in addition to, or
            instead of, the coverTitle.
          ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <!-- ==================================================================== -->
   <!-- Lists                                                                -->
   <!-- ==================================================================== -->
   <xsd:complexType name="ListType" mixed="true">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            ListType is for simple lists.  It differs from the XHTML <ol> and <ul> by 
            allowing numbering elements to be included explicitly, instead of 
            generating them automatically. This allows more control over the numbering.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="BaseContentType">
            <xsd:sequence>
               <xsd:element ref="listItem" maxOccurs="unbounded" minOccurs="1"/>
            </xsd:sequence>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:complexType name="ListItemType" mixed="true">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            ListItemType supports simple one-level lists, with or without numbering.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexContent>
         <xsd:extension base="BaseContentType">
            <xsd:sequence>
               <xsd:element ref="num" minOccurs="0" maxOccurs="1"/>
               <xsd:element ref="listContent" minOccurs="0" maxOccurs="1"/>
               <xsd:element ref="list" minOccurs="0" maxOccurs="1"/>
            </xsd:sequence>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>
   <xsd:element name="list" type="ListType">
      <xsd:annotation>
         <xsd:documentation>
            <![CDATA[
            A list contains list items for ordered or unordered lists.
         ]]>
         </xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="listItem" type="ListItemType">
      <xsd:annotation>
         <xsd:documentation>
            <![CDATA[
            A listItem is an item in a list. It contains an optional 
            character to indicate an ordered or unordered list, 
            followed by the text of the item in a listContent element.
         ]]>
         </xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="listContent" type="InlineType">
      <xsd:annotation>
         <xsd:documentation>
            <![CDATA[
            The listContent contains list item content, including text,
            phrase-level (inline), content markers and notes.
            ]]>
         </xsd:documentation>
      </xsd:annotation>
   </xsd:element>

   <!-- ==================================================================== -->
   <!-- Synonyms                                                             -->
   <!-- ==================================================================== -->
   <xsd:element name="bill" type="LawDocType" substitutionGroup="lawDoc">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <bill> is a document containing proposed law. When enacted, a
            <bill> becomes a <plaw>.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="pLaw" type="LawDocType" substitutionGroup="lawDoc">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <pLaw> (public or private law) is a document containing an approved bill,
            whether public or private.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="statute" type="LawDocType" substitutionGroup="lawDoc">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <statute> is a document containing an enacted bill.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="statutesAtLarge" type="LawDocType" substitutionGroup="lawDoc">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <statutesAtLarge> volume is a compilation of statutes, public and private laws, 
            proclamations, and concurrent resolutions.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="resolution" type="LawDocType" substitutionGroup="lawDoc">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <resolution> is a simple resolution, joint resolution, or concurrent
            resolution, as those terms are defined by the U.S. Congress.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="amendment" type="LawDocType" substitutionGroup="lawDoc">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            An <amendment> is a document containing a pre-enactment stage amendment.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="uscDoc" type="LawDocType" substitutionGroup="lawDoc">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <uscDoc> is a document containing a title or appendix of the
            U.S. Code.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="frDoc" type="LawDocType" substitutionGroup="lawDoc">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            An <frDoc> is a document containing a Federal Register issue or 
            part of a Federal Register Issue.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="rule" type="LawDocType" substitutionGroup="lawDoc">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <rule> is a document containing a regulatory rule, as found in
            the Federal Register.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="notice" type="LawDocType" substitutionGroup="lawDoc">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <notice> is a document containing a regulatory notice, as found in
            the Federal Register.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="presidentialDoc" type="LawDocType" substitutionGroup="lawDoc">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <presidentialDoc> is a document containing a presidential document,
            such as a proclamation or an executive order.  The Federal Register
            contains presidential documents, as does a Statutes at Large volume.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="cfrDoc" type="LawDocType" substitutionGroup="lawDoc">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <cfrDoc> is a document containing a title of the Code of
            Federal Regulations.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   
   
   <!-- ==================================================================== -->
   <!-- PropertyType                                                         -->
   <!--                                                                      -->
   <!-- Properties are used in the <meta> and <preface> elements to capture  -->
   <!--   metadata, which can be machine-processable (meta) or designed to   -->
   <!--   be rendered in print or on the screen (preface).                   -->
   <!-- ==================================================================== -->
   
   <xsd:element name="docNumber" type="PropertyType" substitutionGroup="property">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <docNumber> is a property that contains a numeric designation
            assigned to this document. The document number should not contain
            any document prefix. Use the <docType> for the prefix.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="docPublicationName" type="PropertyType" substitutionGroup="property">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <docPublicationName> is a property used to record the name of 
            the publication that this document is part of. The values of the
            <docPublicationName> are not defined.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="docReleasePoint" type="PropertyType" substitutionGroup="property">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <docReleasePoint> is a property used to record the point the document
            was released. The values of the doc status are not defined.  For a USC title,
            this may be the Public Law number that the title is updated through.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="docStage" type="PropertyType" substitutionGroup="property">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <docStage> is a property used to hold the stage of the document, such
            as Enrolled. The attribute @value holds the normalized stage, from the list
            at https://www.gpo.gov/help/index.html#about_congressional_bills.htm, capitalized.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="docPart" type="PropertyType" substitutionGroup="property">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <docPart> is a property used to identify the part of the document, such
            as "Part 2 of 3". The attribute @role holds the type of part, such as "book",
            "part", etc.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="publicPrivate" type="PropertyType" substitutionGroup="property">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <publicPrivate> is a property that documents whether the bill, public law, or other
            document is public or private. Two values are allowed: 'public' (the default value) and
            'private'. 
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="congress" type="PropertyType" substitutionGroup="property">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <congress> is a property used to identify the congress number that the 
            document was created in. When in the <meta> element, the content is the normalized
            form (e.g., 115). When in the <preface> element, the content is the form that
            is rendered (e.g., One Hundred Fifteenth Congress of the United States of America).
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="session" type="PropertyType" substitutionGroup="property">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <session> is a property used to identify the session within a congress
            that the document was created in. When in the <meta> element, the content is the 
            normalized form (e.g., 1). When in the <preface> element, the content is the form 
            that is rendered (e.g., AT THE FIRST SESSION).
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="citableAs" type="PropertyType" substitutionGroup="property">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <citableAs> is a property that specifies how this document may be cited.
            There may be more than one form of citation for a document, such as a public law
            that may also be cited by its Statute volume and page number.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="enrolledDateline" type="PropertyType" substitutionGroup="property">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <enrolledDateline> is a property used to hold the date and location
            of the start of the session, which is printed on enrolled bills.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="starPrint" substitutionGroup="property">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A reprint of a bill, resolution, amendment, or committee report correcting
            technical or substantive errors in a previous printing; so called because of the
            small black star that appears on the front page or cover. Within the <meta>
            section, the content is the star print number; 0 is the default (no star print).
            The maximum is 4 stars printed. Within the <preface> section, the content is 
            the actual star characters to be printed.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexType>
         <xsd:complexContent>
            <xsd:extension base="PropertyType">
               <xsd:attribute name="number" use="optional">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                     The @number attribute defines the reprint number.
                  ]]></xsd:documentation>
                  </xsd:annotation>
                  <xsd:simpleType>
                     <xsd:restriction base="xsd:nonNegativeInteger">
                        <xsd:maxInclusive value="4"/>
                     </xsd:restriction>
                  </xsd:simpleType>
               </xsd:attribute>
            </xsd:extension>
         </xsd:complexContent>
      </xsd:complexType>
   </xsd:element>
   <xsd:element name="processedBy" type="PropertyType" substitutionGroup="property">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <processedBy> property identifies a system that has processed the document.
            It can be used to identify a converter or editing tool that was used to make the
            document. There may be more than one <processedBy> element.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="processedDate" type="PropertyType" substitutionGroup="property">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <processedDate> property is the date on which the processing system
            created this version of the document.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <!-- Action elements for the preface -->
   <xsd:element name="actionDescription" type="PropertyType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <actionDescription> is the description of the floor action taking place.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="actionInstruction" type="PropertyType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <actionInstruction> is the instruction related to the action.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="organization" type="PropertyType" substitutionGroup="property">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <organization> is a property used to identify the organization associated
            with the document.  The role attribute may be used to identify the type
            of organization, e.g. @role="agency".
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="volume" type="PropertyType" substitutionGroup="property">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <volume> is a property used to identify volume of the document.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="issue" type="PropertyType" substitutionGroup="property">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <issue> is a property used to identify the issue of the document.
            Sometimes used in conjunction with the volume.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="startingPage" type="PropertyType" substitutionGroup="property">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <startingPage> is a property used to identify the starting page of the
            document. Sometimes used in conjunction with the volume.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="endingPage" type="PropertyType" substitutionGroup="property">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <endingPage> is a property used to identify the enduing page of the
            document. Sometimes used in conjunction with the volume.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="startingProvision" type="PropertyType" substitutionGroup="property">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <startingProvision> is a property used to identify the starting provision
            of the document. This is used for example for part ranges for a volume of the CFR.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="endingProvision" type="PropertyType" substitutionGroup="property">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <endingProvision> is a property used to identify the ending provision
            of the document. This is used for example for part ranges for a volume of the CFR.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="provisionRange" type="PropertyType" substitutionGroup="property">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <provisionRange> property gives the starting and ending provision that 
            is covered by the document.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="subject" type="PropertyType" substitutionGroup="property">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <subject> is a property used to identify the subject associated
            with the document.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="affected" type="PropertyType" substitutionGroup="property">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <affected> is a property used to identify a provision or document
            that is affected by this document.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   
   <!-- ==================================================================== -->
   <!-- Elements for use in the signature.                                   -->
   <!--                                                                      -->
   <!-- ==================================================================== -->
   <xsd:element name="notation">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <notation> is the label for a signature or group of signatures. 
            It contains simple text, such as the word "Attest:". 
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexType>
         <xsd:complexContent>
            <xsd:extension base="BaseContentType">
               <xsd:attribute name="type" type="xsd:string" use="optional">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[
                     The @type attribute defines the type of notation. Currently
                     only 'attestation' is used.
                  ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:attribute>
            </xsd:extension>
         </xsd:complexContent>
      </xsd:complexType>
   </xsd:element>
   <xsd:element name="autograph" type="PropertyType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <autograph> is the representation of the "wet signature".  It
            is often a reference to an image, or a special character. 
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="name" type="PropertyType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <name> is the name of a person attesting to this document. 
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="role" type="PropertyType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <role> is the role of the person named in <name>.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="affiliation" type="PropertyType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <affiliation> is the affiliation of the <name> in the signature.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="signatureDate" type="NoteType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <signatureDate> is a line of text containing the date of the
            signature. It may contain a <date> element, footnotes, inline tagging,
            or other content. It may have a @date attribute.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   
   <!-- ==================================================================== -->
   <!-- The action set and its properties                                    -->
   <!--                                                                      -->
   <!-- ==================================================================== -->
   
   <xsd:element name="action">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <action> is the set of information pertaining to a floor action 
            for a measure or amendment, i.e., the actual description of the floor 
            action and the date on which the action occurred.
         ]]></xsd:documentation>
      </xsd:annotation>
      <xsd:complexType>
         <xsd:sequence>
            <xsd:choice minOccurs="0" maxOccurs="unbounded">
               <xsd:element ref="date" minOccurs="0" maxOccurs="1">
                  <xsd:annotation>
                     <xsd:documentation><![CDATA[ 
            The <date> in an <action> is the date or dates on which a particular action occurred.
            There may be two dates associated with an action, the regular calendar date and the 
            legislative day. Sometimes the textual descriptions of these dates do not divide 
            neatly into two parts, for example, the full date may be written as 
            “February 3 (legislative day, January 30), 1995”. Therefore, the ACTION DATE 
            is just data characters, to be entered in any fashion necessary.
         ]]></xsd:documentation>
                  </xsd:annotation>
               </xsd:element>
               <xsd:element ref="actionDescription" minOccurs="0"/>
               <xsd:element ref="actionInstruction" minOccurs="0"/>
            </xsd:choice>
         </xsd:sequence>
      </xsd:complexType>
   </xsd:element>
   
   <!-- ==================================================================== -->
   <!-- StatementType                                                        -->
   <!--                                                                      -->
   <!-- ==================================================================== -->
   
   <xsd:element name="longTitle" type="StatementType" substitutionGroup="statement">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <longTitle> is a statement that sets out the purposes of the bill
            in general terms.  Typically, it includes a <docTitle> followed by an
            <officialTitle>.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="docTitle" type="StatementType" substitutionGroup="statement">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <docTitle> is a statement, such as "An Act", that precedes the long title
            in legislation.  The short title is typically declared in the 
            first clause of a bill and is tagged in that location using the 
            <shortTitle> tag. 
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="officialTitle" type="StatementType" substitutionGroup="statement">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <officialTitle> is the portion of the long title after the <docTitle>. 
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   
   <!-- ==================================================================== -->
   <!-- InlineType                                                           -->
   <!--                                                                      -->
   <!-- ==================================================================== -->
   
   <xsd:element name="shortTitle" type="InlineType" substitutionGroup="inline">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <shortTitle> element is used to surround the short title when it
            is first defined, usually in the first clause of the bill. Note
            that the <shortTitle> element is to be used in this case rather than
            the <docTitle> element.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="term" type="InlineType" substitutionGroup="inline">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <term> is a word or phrase that is being defined. The <term> element
            surrounds the words for the term being defined. It is possible 
            for multiple <term> elements to be specified within a definition. 
            When a <term> is the words in an alternate language, then the
            xml:lang attribute must be used. <term> elements can also be used
            for synonyms or near-synonyms which are also specified within the
            definition. The containing element (such as a section) has a
            @role="definitions" to indicate that definitions are contained within it.
            
            The <term> element does not define rendering or add quote characters.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="entity" type="InlineType" substitutionGroup="inline">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            An <entity> is a generic inline element to identify a text fragment
            introducing or referring to an ontological concept. This is modelled after
            the Akoma Ntoso <entity> element. The @role attribute can be used to
            distinguish the concept. For example, a NAICS code or SEC code would be
            <entity @role="NAICS"> or <entity @role="SEC">.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   
   <!-- ==================================================================== -->
   <!-- LevelType                                                            -->
   <!--                                                                      -->
   <!-- ==================================================================== -->
   
   <xsd:element name="preliminary" type="LevelType" substitutionGroup="level">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <preliminary> level is used to create a hierarchical region
            of the main document consisting of preliminary clauses that
            are outside of the main document hierarchy.
        ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   
   <!-- ==================================================================== -->
   <!-- Levels above the Section                                             -->
   <!--                                                                      -->
   <!-- ==================================================================== -->
   
   <xsd:element name="title" type="LevelType" substitutionGroup="level">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <title> is the top hierarchical level of a legislative document.
            
            When naming a title, use the case-sensitive prefix "t".
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="subtitle" type="LevelType" substitutionGroup="level">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <subtitle> is a hierarchical level of a legislative document.
            
            When naming a subtitle, use the case-sensitive prefix "st".
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="part" type="LevelType" substitutionGroup="level">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <part> is a hierarchical level of a legislative document.
            
            When naming a part, use the case-sensitive prefix "p".
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="subpart" type="LevelType" substitutionGroup="level">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <subpart> is a hierarchical level of a legislative document.
            
            When naming a subpart, use the case-sensitive prefix "sp".
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="division" type="LevelType" substitutionGroup="level">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <division> is a hierarchical level of a legislative document.
            
            When naming a Division, use the case-sensitive prefix "d".
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="subdivision" type="LevelType" substitutionGroup="level">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <subdivision> is a hierarchical level of a legislative document. 
            
            When naming a subdivision, use the case-sensitive prefix "sd".
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="chapter" type="LevelType" substitutionGroup="level">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <chapter> is a hierarchical of a legislative document. 
            
            When naming a chapter, use the case-sensitive prefix "ch".
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="subchapter" type="LevelType" substitutionGroup="level">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <subchapter> is a hierarchical level of a legislative document. 
            
            When naming a subchapter, use the case-sensitive prefix "sch".
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="article" type="LevelType" substitutionGroup="level">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            An <article> is a used in bills. 
            
            When naming an article, use the case-sensitive prefix "a".
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="subarticle" type="LevelType" substitutionGroup="level">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <subarticle> is used in bills. 
            
            When naming a subarticle, use the case-sensitive prefix "sa".
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   
   <!-- ==================================================================== -->
   <!-- Appendices                                                           -->
   <!--                                                                      -->
   <!-- ==================================================================== -->
   
   <xsd:element name="compiledAct" type="LevelType" substitutionGroup="level">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            An <compiledAct> is used in title appendices. 
            
            When naming a compiledAct, use the case-sensitive prefix "cact".
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="courtRules" type="LevelType" substitutionGroup="level">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            <courtRules> is used in title appendices. 
            
            courtRules is a containment level that is not named.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="courtRule" type="LevelType" substitutionGroup="level">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <courtRule> is used in appendices. 
            
            When naming a courtRule, use the case-sensitive prefix "crule".
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="reorganizationPlans" type="LevelType" substitutionGroup="level">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            <reorganizationPlans> are used in title appendices. 
            
            reorganizationPlans is a containment level that is not named.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="reorganizationPlan" type="LevelType" substitutionGroup="level">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <reorganizationPlan> is used in title appendices. 
            
            When naming a reorganizationPlan, use the case-sensitive prefix "rplan".
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   
   <!-- ==================================================================== -->
   <!-- Section Level                                                        -->
   <!--                                                                      -->
   <!-- ==================================================================== -->

   <xsd:element name="section" type="LevelType" substitutionGroup="level">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <section> is the primary hierarchical level in a USC Title, bill
            or other formally structured document.
            
            When naming a section, use the case-sensitive prefix "s".
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   
   <!-- ==================================================================== -->
   <!-- Levels below the Section                                             -->
   <!--                                                                      -->
   <!-- ==================================================================== -->

   <xsd:element name="subsection" type="LevelType" substitutionGroup="level">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <subsection> is an optional hierarchical level below a section.
            Subsections are usually numbered with lower-case letters.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="paragraph" type="LevelType" substitutionGroup="level">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <paragraph> is a numbered level usually found below a
            subsection in the document hierarchy. Paragraphs are
            usually numbered with Arabic numbers.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="subparagraph" type="LevelType" substitutionGroup="level">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <subparagraph> is a level below a paragraph in the document
            hierarchy. Subparagraphs are usually numbered with upper-case
            letters.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="clause" type="LevelType" substitutionGroup="level">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            A <clause> is an optional below-section hierarchical level.
            Clauses are usually numbered with lower-case Roman numerals.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="subclause" type="LevelType" substitutionGroup="level">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <subclause> is an optional hierarchical level below a clause.
            Subclauses are usually numbered with upper-case Roman numerals.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="item" type="LevelType" substitutionGroup="level">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            An <item> is a level usually below a subclause in the document
            hierarchy. Items are usually numbered with double lower-case
            letters.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="subitem" type="LevelType" substitutionGroup="level">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            A <subitem> is a level below an item in the document
            hierarchy. Subitems are usually numbered with double upper-case
            letters.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="subsubitem" type="LevelType" substitutionGroup="level">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <subsubitem> is a level below a subitem in the document
            hierarchy. Subsubitems are usually numbered with triple lower-case
            letters.           
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   
   <!-- ==================================================================== -->
   <!-- Collections                                                          -->
   <!--                                                                      -->
   <!-- ==================================================================== -->

   <xsd:element name="notices" type="CollectionType" substitutionGroup="collection">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <notices> is a collection of notices.  These are typically found in the
            Federal Register.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="rules" type="CollectionType" substitutionGroup="collection">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <rules> is a collection of rules. These are typically found in the
            Federal Register.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="proposedRules" type="CollectionType" substitutionGroup="collection">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <proposedRules> is a collection of proposed rules. These are typically
            found in the Federal Register.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="presidentialDocs" type="CollectionType" substitutionGroup="collection">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <presidentialDocs> is a collection of Presidential Documents.
            These are typically found in the Federal Register and Statutes at Large volumes.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="agencyGroup" type="CollectionType" substitutionGroup="collection">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            An <agencyGroup> is a collection related to a specific agency. It is, for
            example, used in the Federal Register to group together a set of rules,
            proposed rules, or notices.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="publicLaws" type="CollectionType" substitutionGroup="collection">
         <xsd:annotation>
            <xsd:documentation><![CDATA[ 
            <publicLaws> is a collection of public laws. It is found, for example, in a Statutes
            at Large volume.
         ]]></xsd:documentation>
         </xsd:annotation>
   </xsd:element>
   <xsd:element name="privateLaws" type="CollectionType" substitutionGroup="collection">
            <xsd:annotation>
               <xsd:documentation><![CDATA[ 
            <privateLaws> is a collection of private laws. It may be found, for example, in a
            Statutes at Large volume.
         ]]></xsd:documentation>
            </xsd:annotation>
   </xsd:element>
   <xsd:element name="concurrentResolutions" type="CollectionType" substitutionGroup="collection">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            An <concurrentResolutions> is a collection of concurrent resolutions. It is found, for 
            example in a Statutes at Large volume.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   
   <!-- ==================================================================== -->
   <!-- TextType                                                             -->
   <!--                                                                      -->
   <!-- ==================================================================== -->
   
   <xsd:element name="chapeau" type="ContentType" substitutionGroup="text">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            Use a <chapeau> whenever there is introductory text that comes
            before lower levels in a level hierarchy and the text alone is not
            permitted by the content model. 
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="continuation" type="ContentType" substitutionGroup="text">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            Use a <continuation> for interstitial text or whenever there is
            final text that comes after lower levels in a level hierarchy and
            the text alone is not permitted by the content model. 
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="proviso" type="ContentType" substitutionGroup="text">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <proviso> is a sentence, clause, or paragraph that states conditions
            relating to the law it is related to. A proviso generally begins with
            "Provided that" or "Provided", or "Provided further". Proviso can contain
            their own complex structure including sandwich structures. 
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   
   <!-- ==================================================================== -->
   <!-- Notes                                                                -->
   <!--                                                                      -->
   <!-- ==================================================================== -->

   <xsd:element name="notes" type="NotesType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            The <notes> is a container for sets of individual notes.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="note" type="NoteType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <note> is a generic element for notes associated with items in the
            document. 
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   
   <!-- ==================================================================== -->
   <!-- In-flow Notes                                                        -->
   <!--                                                                      -->
   <!-- ==================================================================== -->

   <xsd:element name="sourceCredit" type="NoteType" substitutionGroup="note">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <sourceCredit> is a note included to indicate the source of a
            provision. It usually will contain a reference to the source of the
            provision and the Statute(s) that have affected it. Source credits are 
            usually set out in parenthesis. The surrounding parentheses are shown
            in the text - they are not automatically added.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="uscNote" type="NoteType" substitutionGroup="note">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <uscNote> is a note below sections and big-level headings in the U.S.
            Code.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="legislativeHistory" type="NotesType" substitutionGroup="notes">
      <xsd:annotation>
         <xsd:documentation><![CDATA[
            A <legislativeHistory> contains a set of notes about a piece of legislation.
            It is typically found at the end of a Public Law.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="statutoryNote" type="NoteType" substitutionGroup="note">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            An <statutoryNote> is a note that becomes part of the law.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="editorialNote" type="NoteType" substitutionGroup="note">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            An <editorialNote> is a note included for editorial purposes only. While
            present in the text of the document as printed, it is not a part of 
            the law. Editorial notes are often used to record where provisions
            have been omitted or other changes have been made, or in a preface of the CFR.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="changeNote" type="NoteType" substitutionGroup="note">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <changeNote> is a note that records a non-substantive change that
            has been made to the document. Usually change notes are set out in
            square brackets and these must be set out in the text and must not
            be automatically added.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="authority" type="NoteType" substitutionGroup="note">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            An <authority> is a note included to indicate the authority behind
            a provision.  In the CFR and statutes at large, the <authority> is
            the law which authorizes the regulation.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="source" type="NoteType" substitutionGroup="note">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <source> is a note included to indicate the source of a provision.
            In the CFR, the <source> is a citation to an entry in the Federal
            Register where the provision is sourced.  <source> is similar to 
            <sourceCredit> in the U.S. Code, but is specifically called "Source"
            in the CFR.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="effectiveDateNote" type="NoteType" substitutionGroup="note">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            An <effectiveDateNote> is a note to indicate the effectivity of a
            provision. In the CFR, the <effectiveDateNote> contains a heading, 
            explanatory text, and sometimes the text of the provision that will
            become effective on that date.  Some of this new text may be elided.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="frDocId" type="NoteType" substitutionGroup="note">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            An <frDocId> is a note identifying the Document ID of an entry 
            in the Federal Register.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="billingCode" type="NoteType" substitutionGroup="note">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <billingCode> is a note containing the billing code of an item. It is
            used, for example, in the Federal Register.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="editionNote" type="NoteType" substitutionGroup="note">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            An <editionNote> is a note that describes the edition of the
            document.  It is used, for example, in the preface of the CFR for the
            "Official Edition Notice".
          ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="organizationNote" type="NoteType" substitutionGroup="note">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            An <organizationNote> is a note that identifies an organization 
            associated with the document. It is used, for example, in the preface of
            the CFR and the statutes at large to identify the organization that
            publishes the document.
          ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="citationNote" type="NoteType" substitutionGroup="note">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <citationNote> is a note that gives information about how to cite 
            this document and/or about citations within the document. It is used,
            for example, in the preface of the CFR.
          ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="explanationNote" type="NoteType" substitutionGroup="note">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            An <explanation> is a note that gives an explanation. It is used, for example.
            in the preface in the CFR and statutes at large to explain the document.
          ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="findingAidsNote" type="NoteType" substitutionGroup="note">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <findingAids> element is one or more finding aids, typically found in the
            back matter of a publication. It is used, for example, in the back matter of the CFR.
          ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="foreign" type="NoteType" substitutionGroup="note">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <foreign> element is a wrapper for content comes from an external
            namespace.
          ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   
   <!-- ==================================================================== -->
   <!-- Positioned Notes                                                     -->
   <!--                                                                      -->
   <!-- ==================================================================== -->
   
   <xsd:element name="footnote" type="PositionedNoteType" substitutionGroup="note">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <footnote> is a note that is to be rendered at the bottom of a page
            or column or table. It typically has a corresponding <ref idref="xxx">
            element, where the @idref matches the @id of the <footnote>.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="sidenote" type="PositionedNoteType" substitutionGroup="note">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <sidenote> is a note that is to be rendered in the side margins of a
            page. It may have a corresponding <ref idref="xxx"> element, where the
            @idref matches the @id of the <sidenote>.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="endnote" type="PositionedNoteType" substitutionGroup="note">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            An <endnote> is a note that is to be rendered at the bottom logical 
            unit of content. The logical unit can be specified in the @relativeTo
            attribute.  It typically has a corresponding <ref idref="xxx"> element,
            where the @idref matches the @id of the <endnote>.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="leftRunningHead" type="PositionedNoteType" substitutionGroup="note">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <leftRunningHead> contains the text to be printed in the left hand
            running header.  It is used, for example, in the CFR.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="rightRunningHead" type="PositionedNoteType" substitutionGroup="note">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <rightRunningHead> contains the text to be printed in the right hand
            running header.  It is used, for example, in the CFR.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="ear" type="PositionedNoteType" substitutionGroup="note">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            An <ear> contains the text to be printed in the outside margin. It is
            used, for example, in the CFR.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="endMarker" type="PositionedNoteType">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            An <endMarker> element is used at the end of a document and usually contains
            the &#x25CB; (&all;) character. It is used, for example, in a public law. 
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <!-- Page and line markers are often handled with processing instructions so that they
      do not interfere with the content model of the document. In some cases, such as
      a public law's stat page number and the Federal Register issue, the page number is
      considered part of the document content and is used in citations. The elements below 
      support this and can be considered alternatives to processing instructions. -->
   <xsd:element name="page" type="PositionedNoteType" substitutionGroup="note">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <page> is a note indicating where a page boundary occurred.  The 
            content will typically be the page number.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
   <xsd:element name="line" type="PositionedNoteType" substitutionGroup="note">
      <xsd:annotation>
         <xsd:documentation><![CDATA[ 
            A <line> is a note indicating where a line boundary occurred.
            The content will typically be the line number, and possibly also
            the page number.
         ]]></xsd:documentation>
      </xsd:annotation>
   </xsd:element>
 
</xsd:schema>
