<!-- ============================================================= -->
<!--  MODULE:    Formatting Element Classes                        -->
<!--  VERSION:   2.3                                               -->
<!--  DATE:      February 2007                                     -->
<!--                                                               -->
<!-- ============================================================= -->

<!-- ============================================================= -->
<!--                    PUBLIC DOCUMENT TYPE DEFINITION            -->
<!--                        TYPICAL INVOCATION                     -->
<!--
 "-//NLM//DTD Archiving and Interchange DTD Suite Formatting Element Classes v2.3 20070202//EN"
  Delivered as file "format.ent"                                   -->
<!-- ============================================================= -->

<!-- ============================================================= -->
<!-- SYSTEM:     Archiving and Interchange DTD Suite               -->
<!--                                                               -->
<!--                                                               -->
<!-- PURPOSE:    Elements concerned with rendition of output, for  -->
<!--             example printing on a page or display on a screen -->
<!--                                                               -->
<!-- CONTAINS:   1) Default definitions of format classes          -->
<!--             2) Appearance class elements                      -->
<!--             3) Break class elements                           -->
<!--             4) Typographic emphasis elements                  -->
<!--             5) Advanced overline and underline elements       -->
<!--                                                               -->
<!-- CREATED FOR:                                                  -->
<!--             Digital archives and publishers who wish to       -->
<!--             create a custom XML DTD for original markup of    -->
<!--             journal literature, books, and related material,  -->
<!--             or for archiving and transferring such material   -->
<!--             between archives.                                 -->
<!--                                                               -->
<!--             This DTD is in the public domain. An organization -->
<!--             that wishes to create its own DTD from the suite  -->
<!--             may do so without permission from NLM.            -->
<!--                                                               -->
<!--             The suite has been set up to be extended using a  -->
<!--             new DTD file and a new DTD-specific customization -->
<!--             module to redefine the many Parameter Entities.   -->
<!--             Do not modify the suite directly or redistribute  -->
<!--             modified versions of the suite.                   -->
<!--                                                               -->
<!--             In the interest of maintaining consistency and    -->
<!--             clarity for potential users, NLM requests:        -->
<!--                                                               -->
<!--             1. If you create a DTD from the Archiving and     -->
<!--                Interchange DTD Suite and intend to stay       -->
<!--                compatible with the suite, then please include -->
<!--                the following statement as a comment in all of -->
<!--                your DTD modules:                              -->
<!--                   "Created from, and fully compatible with,   -->
<!--                    the Archiving and Interchange DTD Suite."  -->
<!--                                                               -->
<!--             2. If you alter one or more modules of the suite, -->
<!--                then please rename your version and all its    -->
<!--                modules to avoid any confusion with the        -->
<!--                original suite. Also, please include the       -->
<!--                following statement as a comment in all your   -->
<!--                DTD modules:                                   -->
<!--                   "Based in part on, but not fully compatible -->
<!--                    with, the Archiving and Interchange DTD    --> 
<!--                    Suite."                                    -->
<!--                                                               -->
<!--             Suggestions for refinements and enhancements to   -->
<!--             the DTD suite should be sent in email to:         -->
<!--                 archive-dtd@ncbi.nlm.nih.gov                  -->
<!--                                                               -->
<!-- ORIGINAL CREATION DATE:                                       -->
<!--             December 2002                                     -->
<!--                                                               -->
<!-- CREATED BY: Jeff Beck       (NCBI)                            -->
<!--             Deborah Lapeyre (Mulberry Technologies, Inc.)     -->
<!--             Bruce Rosenblum (Inera Inc.)                      -->
<!--                                                               -->
<!--             NLM thanks the Harvard University Libraries, both -->
<!--             for proposing that a draft archiving NLM DTD for  --> 
<!--             life sciences journals be extended to accommodate -->
<!--             journals in all disciplines and for sponsoring    -->
<!--             Bruce Rosenblum's collaboration with other DTD    -->
<!--             authors in completing Version 1.0. The Andrew W.  --> 
<!--             Mellon Foundation provided support for these      --> 
<!--             important contributions.                          -->
<!--                                                               -->
<!-- ============================================================= -->


<!-- ============================================================= -->
<!--                    DTD VERSION/CHANGE HISTORY                 -->
<!-- ============================================================= -->
<!--
     =============================================================

Version  Reason/Occasion                   (who) vx.x (yyyy-mm-dd)

     =============================================================
     Version 2.3                       (DAL/BTU) v2.3 (2007-02-02)
     
     Enhancement Release (2.3) following the Working Group meetings 
     of Oct-Nov/2006-Jan/2007. No backward-incompatible changes.
     Archiving loosened even more. New structures for all the DTDs. 
     
  7. NEW elements - Added the following new emphasis elements:
     - <sans-serif>
     
  6. NEW PARAMETER ENTITIES - Added parameter entities for the
     attribute lists of:
     - font
     
  5. Updated public identifier to "v2.3 20070202//EN"          

     =============================================================
     Version 2.0                       (DAL/BTU) v2.0 (2004-08-30)
 
     Major requirement changes led to the new release, producing
     DTD version "2.0":
       a) The splitting of the Archival and Interchange Tag Set 
          DTDs into three DTDs from two: an authoring DTD, an
          archive regularization and interchange DTD (the
          current Blue Publishing DTD), and a preservationist 
          archive DTD (the current Green Archiving and Interchange 
          DTD).
       b) AIT Working Group suggestions from the June 04 meeting 
          and June/July 2004 followup discussions
       c) Suite remodularization to meet new (and newly articulated)
          modularization requirements
       d) New or renamed classes and mixes to make modifications
          easier and more consistent

  4. NEW MIXES - To correct potential classing problems, new 
     Parameter Entities were created. The following content 
     models were changed to use these new entities.
       - <font>    %font-elements;

  3. INLINE PARAMETER MIXES
     ### Customization Alert ###
     a. Changed the inline-mix Parameter Entities to use the 
        OR-bar-first mechanism. This requires changing not
        only the Parameter Entity, but all content models that
        use the entity.
        - %emphasized-text; (used in most of the elements below)

  2. DEFAULT CLASSES - Were moved from this module to 
     %default-classes.ent;
  
  1. Updated public identifier to "v2.3 20070202"       
                                                                   -->


<!-- ============================================================= -->
<!--                    PARAMETER ENTITY DEPENDENCIES             
                        Requires the following parameter entities
                        be defined before calling this module, 
                        usually accomplished in the Customization
                        Module for the specific DTD:

                        -%emphasized-text; - what elements can be 
                                             inside an emphasis 
                                             element
                        -%rendition-plus;                          -->
<!-- ============================================================= -->


<!-- ============================================================= -->
<!--                    PARAMETER ENTITIES FOR ATTRIBUTE LISTS     -->
<!-- ============================================================= -->


<!--                    FONT ATTRIBUTES                            -->
<!--                    Attributes for the <font> element          -->
<!ENTITY % font-atts
            "color      CDATA                             #IMPLIED"  >


<!--                    UNDERLINE ATTRIBUTES                       -->
<!--                    Attributes for the <underline> element     -->
<!ENTITY % underline-atts 
            "underline-style   
                        CDATA                             #IMPLIED"  >


<!-- ============================================================= -->
<!--                    APPEARANCE CLASS ELEMENTS                  -->
<!-- ============================================================= -->


<!--                    FONT ELEMENTS                              -->
<!--                    The elements that can be included along with
                        data characters inside the content model of
                        the <font> element.
                        Design Note: This inline mix begins with an
                        OR bar, since -%rendition-plus begins with
                        one.                                       -->
<!ENTITY % font-elements 
                        "%rendition-plus;"                           >


<!--                    FONT                                       -->
<!--                    Defined to allow the user to specify an
                        explicit (non stylesheet-generated) font.
                        This element was originally restricted to 
                        use inside table cells <td> and <th> and was 
                        inherited from the XHTML table DTD.
                        Authoring Note: Usage is discouraged.      -->
<!ELEMENT  font         (#PCDATA %font-elements;)*                   >
<!ATTLIST  font
             %font-atts;                                             >


<!--                    HORIZONTAL RULE                            -->
<!--                    Defined to allow the user to specify an
                        explicit (non machine-generated) rule.
                        This element is restricted to use inside
                        table cells <td> and <th> and was inherited
                        from the XHTML table DTD.
                        Authoring Note: Usage is discouraged.      -->
<!ELEMENT  hr           EMPTY                                        >


<!-- ============================================================= -->
<!--                    BREAK CLASS ELEMENTS                       -->
<!-- ============================================================= -->


<!--                    LINE BREAK                                 -->
<!--                    Defined to allow the user to specify an
                        explicit (non machine-generated) linebreak.
                        This element is restricted to a very few
                        contexts, for example inside <title>s
                        and inside table cells <td> and <th>.
                        Authoring Note: Usage is discouraged.      -->
<!ELEMENT  break        EMPTY                                        >


<!-- ============================================================= -->
<!--                    EMPHASIS/RENDITION CLASS ELEMENTS          -->
<!-- ============================================================= -->


<!--                    BOLD                                       -->
<!--                    Used to mark text that should appear in bold 
                        face type for print or display             -->
<!ELEMENT  bold         (#PCDATA %emphasized-text;)*                 >


<!--                    ITALIC                                     -->
<!--                    Used to mark text that should appear in 
                        italic type on output.                     -->
<!ELEMENT  italic       (#PCDATA %emphasized-text;)*                 >


<!--                    MONOSPACE TEXT (TYPEWRITER TEXT)           -->
<!--                    Used to mark text that should appear in 
                        a non-proportional font, such as courier
                        for display or print.  This is common for
                        computer code examples, man-machine
                        dialogues, etc.                            -->
<!ELEMENT  monospace    (#PCDATA %emphasized-text;)*                 >



<!--                    SANS SERIF                                 -->
<!--                    Used to mark text that should appear in a 
                        special sans-serif font, typically used in
                        math or chemistry                          -->
<!ELEMENT  sans-serif   (#PCDATA %emphasized-text;)*                 >


<!--                    SMALL CAPS                                 -->
<!--                    Used to mark text that should appear in a 
                        font which creates smaller capital letters
                        on output.                                 -->
<!ELEMENT  sc           (#PCDATA %emphasized-text;)*                 >


<!--                    OVERLINE                                   -->
<!--                    Used to mark text that should appear with a 
                        horizontal line above each character in
                        display or print                           -->
<!ELEMENT  overline     (#PCDATA %emphasized-text;)*                 >


<!--                    STRIKE THROUGH                             -->
<!--                    Used to mark text that should appear with 
                        a line through it so as to appear "struck out" 
                        on display or print                        -->
<!ELEMENT  strike       (#PCDATA %emphasized-text;)*                 >


<!--                    SUBSCRIPT                                  -->
<!--                    A number or expression that is set lower
                        than the baseline and slightly smaller,
                        to act as an inferior or subscript         -->
<!ELEMENT  sub          (#PCDATA %emphasized-text;)*                 >

<!--         arrange    Used to indicate whether multiple subscripts
                        or superscripts that apply to the same
                        character should stack, i.e., be placed
                        one above the other, or stagger, i.e., be
                        stretched out in a line.                   -->
<!ATTLIST  sub 
             arrange    (stack | stagger)                  #IMPLIED  >


<!--                    SUPERSCRIPT                                -->
<!--                    A number or expression that is set higher
                        than the baseline and slightly smaller,
                        to act as a superior or superscript        -->
<!ELEMENT  sup          (#PCDATA %emphasized-text;)*                 >

                        
<!--         arrange    Used to indicate whether multiple subscripts
                        or superscripts that apply to the same
                        character should stack, i.e., be placed
                        one above the other as compactly as
                        possible, or stagger, i.e., be stretched
                        out in a line.                             -->
<!ATTLIST  sup 
             arrange    (stack | stagger)                  #IMPLIED  >


<!--                    UNDERLINE                                  -->
<!--                    Used to mark text that should appear with 
                        a horizontal line beneath it for display
                        or print                                   -->
<!ELEMENT  underline    (#PCDATA %emphasized-text;)*                 >
<!ATTLIST  underline 
             %underline-atts;                                        >


<!-- ============================================================= -->
<!--                    ADVANCED UNDERLINE AND OVERLINE ELEMENTS
                        (From the Elsevier DTD, used mostly within    
                        mathematics, when ordinary MathML underline   
                        and overline functions are inadequate. The
                        elements act as milestone tags marking the
                        start and end of over or underlining that
                        may extend across element boundaries.)     -->
<!-- ============================================================= -->


<!--                    OVERLINE START                             -->
<!--                    The start of a milestone-created overline, the
                        end of ornament will be marked by an
                        Overline End element.
                        Remarks:
                        The <overline-start> and <overline-end> 
                        elements enable creation of overlines in 
                        content, most commonly in mathematical 
                        content, where an normal overline tag 
                        <overline> would break the XML 
                        well-formedness rule that no two elements
                        may overlap.  The overline created using
                        these two elements can have arbitrary start 
                        and end points because the start and end 
                        elements are paired through the use of the
                        unique IDs, not as the start and end of a 
                        single element.
                        For example, in the text "ABCD", if the text
                        "ABC" is the be overlined and the text "CD" 
                        is to be underlined, ordinary overlining with
                        <overline> would create invalid tag overlap. 
                        The text could be correctly tagged, using the 
                        Overline Start and Overline End elements
                        as:
                          <overline-start id="ovl4"/>AB
                          <underline-start id="ul1"/>C
                          </overline-end rid="ov14"/>D
                          <underline-end rid="ul1"/>
                                                                   -->
<!ELEMENT  overline-start     
                        EMPTY                                        >
<!--         id         Unique identifier so the element may be
                        referenced                                 -->
<!ATTLIST  overline-start
             id         ID                                 #REQUIRED >


<!--                    OVERLINE END                               -->
<!--                    The end of a milestone-created overline, the
                        start of ornament will be marked by an
                        Overline Start element.                    -->
<!ELEMENT  overline-end EMPTY                                        >
<!--         rid        Points to the identifier of an Overline 
                        Start, so that the two may be linked       -->
<!ATTLIST  overline-end
             rid        IDREF                              #REQUIRED >


<!--                    UNDERLINE START                            -->
<!--                    The start of a milestone-created underline,
                        the end of ornament will be marked by an
                        Underline End element. 
                        Remarks: The <underline-start> and 
                        <underline-end> elements enable creation of 
                        underlines in content, most commonly in 
                        mathematical content, where an normal 
                        underline tag <underline> would break the
                        XML well-formedness rule that no two elements
                        may overlap.  The underline created using
                        these two elements can have arbitrary start 
                        and end points because the start and end 
                        elements are paired through the use of the
                        unique IDs, not as the start and end of a 
                        single element.
                        For example, in the text "ABCD", if the text
                        "ABC" is the be overlined and the text "CD" 
                        is to be underlined, ordinary overlining with
                        <overline> would create invalid tag overlap. 
                        The text could be correctly tagged, using the 
                        Overline Start and Overline End elements
                        as:
                          <overline-start id="ovl"/>AB
                          <underline-start id="ul1"/>C
                          </overline-end rid="ov1"/>D
                          <underline-end rid="ul1"/>
                                                                   -->
<!ELEMENT  underline-start      
                        EMPTY                                        >
<!--         id         Unique identifier so the element may be
                        referenced                                 -->
<!ATTLIST  underline-start
             id         ID                                 #REQUIRED >


<!--                    UNDERLINE END                              -->
<!--                    The end of a milestone-created underline, the
                        start of ornament will be marked by an
                        Underline Start element.                    -->
<!ELEMENT  underline-end        
                        EMPTY                                         >
<!--         rid        Points to the identifier of an Underline 
                        Start, so that the two may be linked        -->
<!ATTLIST  underline-end
             rid        IDREF                               #REQUIRED >


<!-- ================== End Format Class Module =================== -->
