<!-- ============================================================= -->
<!-- MODULE:    Mulberry Technologies Tag Library 8 Definition DTD -->
<!-- VERSION:   1                                                 -->
<!-- DATE:      August 21,  2014                                   -->
<!-- ============================================================= -->

<!-- =============================================================
     Formal Public Identifier:
"-//Mulberry//DTD Mulberry Technologies Tag Library 8 XML 2014010505//EN"
     ============================================================= -->

<!-- ============================================================= -->
<!-- SYSTEM:    Mulberry Tag Library 8                             -->
<!--                                                               -->
<!-- PURPOSE:   DTD for Mulberry Tag Libraries                     -->
<!--                                                               -->
<!--                                                               -->
<!-- MODULES REQUIRED:                                             -->
<!--            1) XHTML Table Model                               -->
<!--            2) ISO Character Entity Sets                       -->
<!--                                                               -->
<!-- CREATED FOR:                                                  -->
<!--            Mulberry Technologies, Inc.                        -->
<!--                                                               -->
<!-- ORIGINAL CREATION DATE:                                       -->
<!--            August 2014                                     -->
<!--                                                               -->
<!-- CREATED BY:                                                   -->
<!--            Mulberry Technologies, Inc. (BTU)                  -->
<!--            17 West Jefferson Street, Suite 207                -->
<!--            Rockville, MD  20850  USA                          -->
<!--            Phone:  +1 301-315-9631                            -->
<!--            Fax:    +1 301-315-8285                            -->
<!--            e-mail: info@mulberrytech.com                      -->
<!--            WWW:    http://www.mulberrytech.com                -->
<!-- ============================================================= -->



<!-- ============================================================= -->
<!--                   DESIGN CONSIDERATIONS                       -->
<!-- ============================================================= -->

<!-- A few element declarations here are used (by copying) in the
     DTD for validating English (narrative) content models. If you
     change this DTD, check that one and update if necessary.
     Eventually this should be handled by modularization.          -->


<!-- ============================================================= -->
<!--                   CHANGE HISTORY                              -->
<!-- ============================================================= -->

<!--

 59. added @NISO attribute to designate which        2015-01-15  (cmg)
      sections to be included in Standards documents                

 58. Converted to Taglib 8
                                                     cmg 2014-01-8

 57. TWEAKS TO SUPPORT 'COLLECTIVE' DEVELOPMENT
 
                                                     wap 2011-03-16
                                                     
     Added optional id (type ID) to elem.sec and attr.sec

                                                     wap 2011-03-15
     Added linebrk to %paracon;, allowing it in tables (by way
     of %Flow.mix;)
     
                                                     wap 2010-06-15
 
     Parameterized models for elem.info.content, attr.info.content
     and pe.info.content, allowing them to be overridden by a
     calling DTD.

     Loosened models of pe.sec and dtd.sec so all contents are
     optional (except dtd.sec/title); this is more flexible and
     conforms to elem.sec and attr.sec.
     
 56. TWEAKS ADDRESSING USER REQUESTS                 wap 2010-06-11
 
     Added codeblock to related.elem and to attr.usage
     
 55. GENERAL RATIONALIZATION                         wap 2010-06-11

     As part of the general fixing and cleaning of filenames
     and references, renamed Taglib7.dtd.
     
     New FPI is
     
     "-//Mulberry//DTD Mulberry Technologies Tag Library 7 XML 20100611//EN"

     Restored #FIXED attribute value for xmlns:mtl
     at the top level ('http://www.mulberrytech.com/taglib')
     
 54. Added newer ToC support elements:
       insert.ContextTable
       insert.Index
       insert.TagElementIndex
       insert.ElementTagIndex
     These act as placeholders for the merge routines, which then
     replace them with the appropriate structures.   wap 2008-09-22

 53. Added new toc.listing element to the top level. (We decided
     to wait before adding it to intro, chapter and section.)
                                                     wap 2008-09-18

 52. Altered top-level content model from

     mtl:taglibdefs (metadata, intro?, chapter*, elem.sec?,
                     attr.sec?, pe.sec?, context.info?, chapter*,
                     dtd.sec?, index.sec?)
     to
                    (metadata, (intro | chapter | elem.sec |
                     attr.sec | pe.sec | context.info | dtd.sec |
                     index.sec)*

     Reasons: the old model is non-deterministic; also we want
     to be able to add top-level elements to the model (see 53).
                                                     wap 2008-09-18

 51. Change 'content.model?' to 'content.model*' in 'pe.info' to
     reflect current usage of both unexpanded and expanded content
     models for PEs in some tag libraries.           tkg 2008-06-10

 50. Added 'chapter*' before 'elem.sec' in mtl:taglibdefs.
                                                     tkg 2008-04-14

 49. Removed <examp.desc> since  unused.  Added <index.sec>.  Added
     'index' attributes.  Renamed <synonym> to <index>.
                                                     tkg 2008-01-28

 48. Added <format.examp> and <tagged.examp> to %para.level;.
     Made <title> optional in <intro>.               tkg 2007-09-24

 47. Removed <focus> since comment 33, below, deprecates <focus>.
     Added <mtl:mksafe> as replacement for mksafe PIs.  Added
     <title> on <intro>.                             tkg 2007-09-18

 46. Changed PUBLIC identifiers of Taglib DTD components to SYSTEM,
     as this DTD needs to be entirely self-contained (so that
     catalogs can be relied on freely for DTDs it processes without
     fear of interference).                          wap 2007-09-04

 45. Renamed 'expandPEs' attribute to 'expandedOrUnexpanded'.
                                                     tkg 2007-08-31

 44. Added 'synonym' to element, attribute, and PE definitions and
     to chapter.  Added pe.tag.ref to content.model content model.
     Added 'expandPEs' attribute to content.model for when content
     models extracted from schema as part of processing.  Added
     examp.group to group related formatted and tagged examples.
     Allowed sections inside remarks.                tkg 2007-08-17

 43. Added 'sortAs' attributes so sorting can be independent of
     how any particular downstream processor feels about sorting
     '.', '-', and ':'.                              tkg 2007-05-30

 42. Added code and quoted as inline elements, per user requests
                                                     wap 2006-06-09

                                                      kh 2006-03-27
 41. Added a "scale" attribute to accompany the "picfile"
     attribute on its three elements: graphic, inline.graphic,
     and tagged,examp.
     The need to scale a graphic arises from print production.
     The scale attribute is NOT CURRENTLY USED (2006-03-27) in
     HTML production.
     It was decided not to rev the DTD, which remains at v0.15.


      CHANGES                   (BTU)                v0.15 20040707

 40.  Added suggested.values to model for elem.value.group inside
      attribute descriptions: allows separation of remarks on an
      attribute from remarks on suggested values for them
      (especially on CDATA attributes).

      CHANGES                   (BTU)                v0.14 20030323

 39.  Added <linebreak> to model of sponsor.

      CHANGES                   (WAP)                v0.14 20030225

 38.  Added optional id attribute to <intro> so it can be targetted
      by a cross-reference directly (without using a <target>).

 37.  Changed <section> to <chapter> at the top level (inside
      mtl:taglibdefs); restored a declaration for <chapter> ...
      their semantics are different (chapters must break out
      new HTML pages, sections will be controllable).

 36.  Added 'keep' attribute to <section> so user may control
      whether it will generate a file (the default) or be kept
      with its parent (keep='yes')

 35.  Changed ext.ref attribute on ext.cross.ref to make #REQUIRED

      CHANGES                   (KAH)                v0.13 20021004

 34.  Added codeblock to remarks.

 33.  Changed focus to mtl:focus throughout. Now that we're
      validating tagged samples, this is necessary!

      And, temporarily, allowed both focus and mtl:focus,
      because the display process is (a) producing focus,
      and (b) not displaying mtl:focus correctly.

      Fix for that is: find the places that still use focus,
      and reform them to use mtl:focus. Then remove all mention
      of focus.

 32.  Changes to ensure and reveal that taglib processing is picking
      up the taglib DTD and entity sets from the TaglibDTD directory,
      and that no client DTD is picking up these entity sets or
      liable to do so:

      a) Changed DTD PUBLIC and SYSTEM identifiers

      from TagLibDefsV0.13.DTD
        to TLDv0-13.dtd

      from
         -//Mulberry//DTD Mulberry Technologies Tag Library 2 Definition DTD v1.0 20010909//EN//XML
        to
         -//Mulberry//DTD Mulberry Technologies Tag Library 2 v0.13 XML 20010909//EN

      b) Changed ISO charset pe names and PUBLIC and SYSTEM identifiers,
         by adding "TLD" on the following model:

      pe name     TLD-isolat1
      SYSTEM ID   TLD-isolat1.pen
      PUBLIC ID   ISO 8879-1986//ENTITIES Added Latin 1 for TLD//EN

      Changed Mulberry entity.map accordingly.
      Changed taglib script "mkskel11.xsl" accordingly.

      Added "euro" declaration so we can keep this at v13.


      CHANGES FOR REVISION 0.13 (PMR)                v0.13 20020601

 31.  Added <codeblock> element for general use and specifically
      for tagged examples that are not children of <elem.info>

 30.  Added attribute 'autolink' to elem.name.ref, elem.tag.ref,
      attr.name.ref, attr.tag.ref, pe.name.ref, and pe.tag.ref
      with possible values of (yes | no), with yes the default.
      Used to suppress generation of a link in html output when
      autolink="no"

      CHANGES FOR REVISION 0.12 (PMR)                v0.12 20020521

 29.  Added attribute 'type' to element 'emphasis', with possible
      values of (mono | ital | bold), with ital the default.

      CHANGES FOR REVISION 0.11 (TRG)                v0.11 20020516

 28.  Added declarations/invocations for the XML version of ISO
      character entity sets:  %isolat1; %isonum; %isopub; %isotech;

 27.  Deleted specific character entity invocations for &amp;,
      &percnt;, &lt;, &gt;, &rdquo;, and &ldquo;

      CHANGES FOR REVISION 0.10 (PMR)                v0.10 20020411

 26.  added new elements to metadata: shortname, headname, type
      to help in process control.
        shortname is used in generating filenames
        headname is used to generate running heads and such
        type tells us whether this is an xml or sgml dtd
      added root-element as an attr to context.info to help in
        generating the context table. (PMR)
      linebrk added as allowed element in developer
      working.notes removed because replaced by note.to.reviewer.


      CHANGES FOR REVISION 0.92 (PMR)                v0.92 20020320

 25.  changed all three picfile attributes from ENTITY to CDATA
      because of inability of XSLT to copy an internal subset when
      doing a transform. Therefore, the indirection mechanism for
      pointing to files fails unless you manually copy the internal
      subset back in after each transform.  Rather than do this, we
      will hard code the file locations in the picfile attr.
      As a consequence, dropped entities added in change 22.  (PMR)


      CHANGES FOR REVISION 0.91 (PMR)                v0.91 20020219

 24.  made behavior optional in value.cluster (PMR)

 23.  added basic metadata elements (PMR)

 22.  added external entities for the near and far key (PMR)

      CHANGES FOR REVISION 0.9 (PMR)                  v0.9 20020204

 21.  paracon entity removed from the the dtd because it was needed
      only for the OPEN/CALS table model, which is no longer
      being used. (PMR)

 20.  sgml.model removed from the two content models that use it
      because it is not defined as an element. Comments have
      been left indicating where it was used.(PMR)

      CHANGES FOR REVISION 0.8 (PMR)                 v0.8 20020122

 19.  #PCDATA removed from paracon entity declaration to avoid
      conflict with html table model - paracon is not used anywhere
      else in this dtd (PMR)

 18.  NOTE: sgml.model is referenced in content models for dtd.info
      and figure, but is never defined as an element (PMR)

 17.  commented out unused internal pe 'schemaAttrs' and
      'attributeAttrs' (PMR)

 16.  replaced SGML OPEN/CALS EXCHANGE table module with XHTML
      table module (PMR)

 15.  removed attr 'elem.refs' from element attr.info because
      elem names stored there were repeated in elem.name.ref+ (PMR)

 14.  changed 'SGML.model' to 'sgml.model' in content model for
      element 'figure' to correct case problem (PMR)

 13.  completed change (10) by moving attr.value.group to a more
      logical place (after elem.name.group), and changed comment
      on elem.value.group to be clearer. (PMR)

 12.  changed the name of 'id' attr (of type ID) on pe.info to
      'name' to be consistent with usage on elements elem.info
      and attr.info (PMR)

 11.  added content.model to the content model for pe.info (PMR)

      CHANGES FOR REVISION 0.7 (PMR)                 v0.7 20020111

 10.  Changed <attr.value.info> content model to remove
      <attr.value.group> (leaving only <elem.value.group>)
      so that every <attr.value.group> will be contained by an
      <elem.value.group>. (PMR)

      CHANGES FOR REVISION 0.6 (BTU)                 v0.6 20011227

  9.  Added <intro> to taglib model. It was already available inside
      named sections, but not for whole tag library. (BTU)

  8.  Added <section> as generic titled structure. Specifically to
      hold Near & Far diagrams, but also for other uses if needed.
      (BTU)

  7.  Added DTD section <dtd.sec> (BTU)

  6.  Removed element to tag and tag to element index elements
      because these indexes can be generated on display and don't
      belong in the edited file. (BTU)

      CHANGES FOR REVISION 0.5 (BTU)                 v0.5 20011220

  5.  Reversed change 3, below. attr.value.group model back to:
      (value.cluster+, default.value?)
      because it makes no sense to have a default if there is no
      value (BTU)

  4.  Add examp.desc to tagged.examp (BTU)

      CHANGES FOR REVISION 0.4 (BTU)                 v0.4 20011017
      CHANGES FOR REVISION 0.4 (PMR)                 v0.4 20011017

  3.  Allowed value.cluster to occur * rather than ? (PMR)

  2.  Added model for model.desc (BTU)

  1.  Added model.desc to elem.info (BTU)

                                                                   -->

<!-- ============================================================= -->
<!--                   ISO STANDARD SPECIAL CHARACTER SETS         -->
<!-- ============================================================= -->

<!ENTITY % tld-isolat1   SYSTEM "TLD-ISOlat1.pen"                    >

<!ENTITY % tld-isonum    SYSTEM "TLD-ISOnum.pen"                     >

<!ENTITY % tld-isopub    SYSTEM "TLD-ISOpub.pen"                     >

<!ENTITY % tld-isotech   SYSTEM "TLD-ISOtech.pen"                    >

%tld-isolat1; %tld-isonum; %tld-isopub; %tld-isotech;

<!--                    EURO CURRENCY                              -->
<!ENTITY  euro          "&#x20AC;"                                   >


<!-- ============================================================= -->
<!--                   NOTATION DECLARATIONS                       -->
<!-- ============================================================= -->

<!--                    BITMAPPED GRAPHICS                         -->
<!NOTATION bmp          PUBLIC
"+//ISBN 0-7923-9432-1::Graphic Notation//NOTATION Microsoft Windows
Bitmap//EN"  " " >

<!--                    EPS (ENCAPSULATED POSTSCRIPT)              -->
<!NOTATION eps          PUBLIC
"+//ISBN 0-201-18127-4::Adobe//NOTATION PostScript Language Ref.
Manual//EN"   " "
                                                                     >


<!--                    PRESENTATION OF SGML/TAGGED DATA           -->
<!NOTATION linespecific SYSTEM
"line ends and leading white space must be preserved in output"
                                                                     >

<!-- ============================================================= -->
<!--                    INTERNAL PARAMETER ENTITIES                -->
<!-- ============================================================= -->

<!--                    ELEMENT INFO MODEL                         -->
<!ENTITY % elem.info.model
                       "(elem.tag, elem.name, index*,
                         definition, remarks?, related.elem?,
                         content.model+, model.desc?, present.info?,
                         examp.group*, source?,
                         module.defined?, rev.history)"              >

<!--                    ATTRIBUTE INFO MODEL                       -->
<!ENTITY % attr.info.model
                       "(attr.tag, attr.name, index*,
                         definition, attr.usage?, remarks?,
                         present.info?, attr.value.info, examp.group*,
                         source?, rev.history)"                      >


<!--                    PE INFO MODEL                              -->
<!ENTITY % pe.info.model
                        "(pe.tag, pe.name,  index*, definition,
                         remarks?, content.model*, source?,
                         module.defined?, rev.history)"              >


<!--                    LISTS                                      -->
<!ENTITY % toc-placeholders
                        "toc.listing | insert.ContextTable |
                         insert.Index | insert.ElementTagIndex |
                         insert.TagElementIndex"                        >

<!--                    LISTS                                      -->
<!ENTITY % lists        "bul.list | def.list | num.list"             >


<!--                    PARAGRAPH-LEVEL STRUCTURES                 -->
<!ENTITY % para.level   "codeblock | figure | format.examp |
                         graphic | note.to.reviewer | para |
                         table | tagged.examp | %lists;"             >


<!--                    SIMPLE PARAGRAPH-LEVEL STRUCTURES          -->
<!ENTITY % paras        "para | note.to.reviewer"                    >


<!--                    REFERENCE ELEMENTS                         -->
<!ENTITY % refs         "attr.name.ref | attr.tag.ref |
                         elem.name.ref | elem.tag.ref |
                         pe.name.ref | pe.tag.ref |
                         ext.cross.ref | int.cross.ref |
                         target"                                     >


<!--                    ELEMENTS OCCURRING INSIDE TEXT             -->
<!ENTITY % text         "citetitle | emphasis | mtl:focus |
                         gen.text | code | quoted |
                         inline.graphic | keep | %refs;"             >


<!--                    ELEMENTS OCCURRING INSIDE TABLE CELLS      -->
<!--                    Used to redefine entity in the SGML Open
                        Exchange Table Model
                        Note: #PCDATA removed to avoid conflict
                        with html table model - paracon is not
                        used anywhere else in this dtd             -->
<!ENTITY % paracon      "para | %lists; | %text; | linebrk"          >


<!-- ============================================================= -->
<!--                    SET UP FOR THE XHTML 1.1 TABLE MODULE      -->
<!--                    OVER-RIDES FOR STANDARD PARAMETER ENTITIES -->
<!-- ============================================================= -->

<!--                    DATATYPES                                  -->
<!ENTITY % Text.datatype
                        "CDATA"                                      >
<!ENTITY % Number.datatype
                        "CDATA"                                      >
<!ENTITY % MultiLength.datatype
                        "CDATA"                                      >
<!ENTITY % Length.datatype
                        "CDATA"                                      >
<!ENTITY % Pixels.datatype
                        "CDATA"                                      >
<!ENTITY % Character.datatype
                        "CDATA"                                      >

<!--                    COMMON ATTRIBUTES                          -->
<!ENTITY % Common.attrib
                        ""                                           >
<!--                   INLINE ELEMENTS                             -->
<!--                   Modification of the standard XMTL model     -->
<!ENTITY % Inline.mix  "%text;"                                      >


<!--                   CONTENTS OF A TABLE CELL                    -->
<!--                   Modification of the standard XMTL model     -->
<!ENTITY % Flow.mix    "%paracon;"                                   >

<!-- ============================================================= -->
<!--                    THE XML TABLE INVOCATION                   -->
<!-- ============================================================= -->

<!--                    XHTML TABLE MODEL                          -->
<!--                    This module declares element types and
                        attributes used to provide table markup
                        similar to HTML 4, including features that
                        enable better accessibility for non-visual
                        user agents. This is the XHTML reformulation
                        of HTML as a modular XML application.
                        Copyright 1998-2001 W3C (MIT, INRIA, Keio),
                        All Rights Reserved.
                        Revision: $Id: xhtml-table-1.mod,v 4.1
                        2001/04/10 09:42:30 altheim Exp $ SMI,using
                        SYSTEM identifier:
"http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-table-1.mod"
                                                                   -->
<!ENTITY % TLD-htmltable.dtd SYSTEM "TLD-htmltable.dtd"              >
%TLD-htmltable.dtd;


<!-- ============================================================= -->
<!--                    DEFINITION DOC TOP LEVEL                   -->
<!-- ============================================================= -->

<!--                    Tag Library Definitions Document           -->
<!ELEMENT  mtl:taglibdefs
                        (metadata, (intro | chapter | elem.sec |
                         attr.sec | pe.sec | context.info |
                         dtd.sec | index.sec |
                         %toc-placeholders;)* )          >
<!--         xmlns:mtl namespace declaration for elements
             in the Mulberry schema extension namespace.           -->
<!ATTLIST  mtl:taglibdefs
             xmlns:mtl  CDATA #FIXED
                                'http://www.mulberrytech.com/taglib' >

<!-- ============================================================= -->
<!--                    TAG LIBRARY METADATA                       -->
<!-- ============================================================= -->


<!--                    TAG LIBRARY METADATA                       -->
<!ELEMENT  metadata     (title, shortname, headname?, type?,
                         pub.date, sponsor, developer, copyright?,
                         vers.history, del.history?)                 >


<!--                    SHORT NAME OF LIBRARY                      -->
<!--                    Keep it short and simple.                  -->
<!--                    Avoid punctuation (such as a colon)        -->
<!--                    not legal in file names on your system.    -->
<!ELEMENT  shortname    (#PCDATA)                                    >


<!--                    HEADING NAME OF LIBRARY                    -->
<!--                    Tag library name suitable for use in
                        document headers                           -->
<!ELEMENT  headname     (#PCDATA)                                    >


<!--                    LIBRARY TYPE                               -->
<!--                    xml or sgml?                               -->
<!ELEMENT  type         (#PCDATA)                                    >


<!--                    PUBLICATION DATE                           -->
<!ELEMENT  pub.date     (#PCDATA)                                    >
<!--         date       Numeric value of date; suggested format
                        is YYYYMMDD (example: 19961204)            -->
<!ATTLIST  pub.date
             date      NMTOKEN                             #REQUIRED >


<!--                    DOCUMENT SPONSOR(S)                        -->
<!--                    Usually client organization                -->
<!ELEMENT  sponsor      (#PCDATA| linebrk)*                          >


<!--                    DOCUMENT DEVELOPER(S)                      -->
<!--                    Usually Mulberry staff members             -->
<!ELEMENT  developer    (#PCDATA | linebrk)*                         >


<!--                    COPYRIGHT HOLDER INFORMATION               -->
<!ELEMENT  copyright    (para+)                                      >


<!--                    DOCUMENT VERSION HISTORY                   -->
<!ELEMENT  vers.history
                        (release+)                                   >


<!--                    DOCUMENT RELEASE INFORMATION               -->
<!ELEMENT  release      (vers.number, date, mod+)                    >


<!--                    VERSION NUMBER                             -->
<!ELEMENT  vers.number  (#PCDATA)                                    >


<!--                    DOCUMENT DELIVERY HISTORY                  -->
<!ELEMENT  del.history  (mod+)                                       >


<!-- ============================================================= -->
<!--                    TOC LISTINGS                               -->
<!-- ============================================================= -->

<!--                    GENERIC TOC LISTING                        -->
<!ELEMENT  toc.listing  (#PCDATA | %text;)*                          >


<!--                    CONTEXT TABLE TOC LISTING                  -->
<!ELEMENT  insert.ContextTable
                        EMPTY                                        >


<!--                    GENERAL INDEX TOC LISTING                  -->
<!ELEMENT  insert.Index    EMPTY                                        >


<!--                    TAGS-TO-ELEMENTS INDEX TOC LISTING         -->
<!ELEMENT  insert.TagElementIndex
                        EMPTY                                        >


<!--                    ELEMENTS-TO-TAGS INDEX TOC LISTING         -->
<!ELEMENT  insert.ElementTagIndex
                        EMPTY                                        >



<!-- ============================================================= -->
<!--                    ELEMENT DEFINITIONS                        -->
<!--                     Definitions and descriptions of elements  -->
<!-- ============================================================= -->

<!--                    ELEMENT DEFINITIONS SECTION                -->
<!ELEMENT  elem.sec     (intro?, elem.info*)                         >
<!ATTLIST  elem.sec  
             id         ID                                  #IMPLIED >


<!--                    ELEMENT INFORMATION                        -->
<!ELEMENT  elem.info    %elem.info.model;                            >
<!--                    ID matches "name" attribute on xsd:element -->
<!ATTLIST  elem.info
             name       ID                                 #REQUIRED
             sortAs     CDATA                              #REQUIRED >


<!--                    ELEMENT NAME                               -->
<!--                    The text name for an element               -->
<!ELEMENT  elem.name    (#PCDATA | linebrk)*                         >
<!--         index      Whether or not to index this name.          -->
<!ATTLIST  elem.name
             index      (no | yes)                         "yes"     >


<!--                    ELEMENT TAG NAME                           -->
<!--                    Typically, and by default, the same as the
                        "name" attribute on elem.info. The tag
                        that identifies this element in the data   -->
<!ELEMENT  elem.tag     (#PCDATA)                                    >
<!--         index      Whether or not to index this tag.          -->
<!ATTLIST  elem.tag
             index      (no | yes)                         "yes"     >


<!--                    DEFINITION                                 -->
<!ELEMENT  definition   ((%paras;)+)                                 >


<!--                    REMARKS                                    -->
<!--                    Additional relevant information            -->
<!ELEMENT  remarks      ((%paras; | codeblock)+, section*)           >


<!--                    RELATED ELEMENTS                           -->
<!ELEMENT  related.elem
                        ((%paras; | codeblock)+)                     >

<!--                    ELEMENT CONTENT MODEL                      -->
<!--                    Contains just the content model (or the
                        declared content) of the element as it
                        appears in the element declaration.  Any
                        parameter entity references are not
                        expanded by default.  Does not include "<!",
                        the element name, the omitted tag
                        minimization, or ">".                      -->
<!ELEMENT  content.model
                        (#PCDATA | pe.tag.ref)*                      >
<!--         format     Indicates the use of linespecific
                        notation to preserve line endings and
                        spacing in the data.
             expandedOrUnexpanded
                        What views of the content model to include
                        in formatted output.
                          none       Do not include the content
                                     model
                          unexpanded Include content model without
                                     expanding parameter entity
                                     references in the content
                                     models
                          expanded   Include content model and
                                     expand parameter entity
                                     references in the content
                                     model
                          both       Include two forms of the
                                     content model: one with and
                                     one without parameter entities
                                     expanded                      -->
<!ATTLIST  content.model
             format     NOTATION       (linespecific) "linespecific"
             expandedOrUnexpanded
                        (none | unexpanded | expanded | both)
                                                           #REQUIRED >


<!--                    NARRATIVE OF THE ELEMENT'S CONTENT MODEL   -->
<!--                    What does it contain?                      -->
<!ELEMENT  model.desc   ((%paras;)+)                                 >


<!--                    PRESENTATION INFORMATION                   -->
<!--                    Output presentations of the element        -->
<!ELEMENT  present.info ((%paras;)+)                                 >


<!--                    EXAMPLE GROUP                              -->
<!--                    Either or both of a tagged example and a
                        formatted example plus any explanatory
                        text.                                      -->
<!ELEMENT  examp.group  ((tagged.examp | format.examp | para)+)      >


<!--                    FORMATTED EXAMPLE                          -->
<!ELEMENT  format.examp EMPTY                                        >
<!--         picfile    gives the file location
             scale      gives the scale factor, e.g., 50%.         -->
<!ATTLIST  format.examp
             picfile    CDATA                              #REQUIRED
             scale      CDATA                               #IMPLIED >


<!--                    TAGGED EXAMPLE                             -->
<!ELEMENT  tagged.examp (#PCDATA | mtl:focus | mtl:mksafe)*          >
<!--         format     Indicates the use of linespecific
                        notation to preserve line endings and spacing
                        in the data.                               -->
<!ATTLIST  tagged.examp
             format     NOTATION       (linespecific) "linespecific" >


<!--                    PLACEHOLDER FOR ENSAFENED TEXT FROM FILE   -->
<!--                    Element is expected to be replaced by an
                        external process.                          -->
<!ELEMENT  mtl:mksafe   EMPTY                                        >
<!--         empty      Names of empty elements to which to add focus
                        highlighting.
             element    Names of non-empty elements to which to add
                        focus highlighting.
             attribute  Names of attributes to which to add focus 
                        highlighting
             doctype    Whether or not to include the DOCTYPE, if it
                        is present.
             file       File to include at this point.             -->
<!ATTLIST  mtl:mksafe
             empty      NMTOKENS                           #IMPLIED
             element    NMTOKENS                           #IMPLIED
             attribute  NMTOKENS                           #IMPLIED
             doctype    (yes | no)                         "yes"
             file       CDATA                              #REQUIRED >


<!--                    SOURCE OF THE MODEL                        -->
<!--                    Example: Adapted from MAJOUR Header        -->
<!ELEMENT  source       ((%paras;)+)                                 >


<!--                    MODULE IN WHICH THE ELEMENT IS DEFINED     -->
<!ELEMENT  module.defined
                        (#PCDATA)                                    >


<!--                    REVISION HISTORY                           -->
<!ELEMENT  rev.history  (mod+)                                       >

<!--                    MODIFICATION INFORMATION                   -->
<!ELEMENT  mod          (date, modifier, mod.desc)                   >


<!--                    DATE                                       -->
<!ELEMENT  date         (#PCDATA)                                    >
<!--         date       Numeric value of date; suggested format
                        is YYYYMMDD (example: 19961204)            -->
<!ATTLIST  date
             date       NMTOKEN                            #REQUIRED >


<!--                    PERSON(S) MODIFYING THE DOCUMENT           -->
<!ELEMENT  modifier     (#PCDATA)                                    >


<!--                    DESCRIPTION OF THE MODIFICATION            -->
<!ELEMENT  mod.desc     (para+)                                      >



<!-- ============================================================= -->
<!--                    ATTRIBUTE DEFINITIONS                      -->
<!--                    Definitions and descriptions of            -->
<!--                    attributes                                 -->
<!-- ============================================================= -->

<!--                    ATTRIBUTE DEFINITIONS SECTION              -->
<!ELEMENT  attr.sec     (intro?, attr.info*)                         >
<!ATTLIST  attr.sec  
             id         ID                                  #IMPLIED >

<!--                    ATTRIBUTE INFORMATION                      -->
<!--                    Information about a single attribute.      -->
<!ELEMENT  attr.info    %attr.info.model;                            >
<!--         name       contains the unique ID of the attribute    -->
<!ATTLIST  attr.info
             name       ID                                 #REQUIRED
             sortAs     CDATA                              #REQUIRED >


<!--                    ATTRIBUTE TAG NAME                         -->
<!--                    The one used in an ATTLIST, e.g., "rend"   -->
<!ELEMENT  attr.tag     (#PCDATA)                                    >
<!--         index      Whether or not to index this tag.          -->
<!ATTLIST  attr.tag
             index      (no | yes)                         "yes"     >


<!--                    ATTRIBUTE NAME                             -->
<!--                    Longer, human readable "Rendition or Style
                        of Presentation"                           -->
<!ELEMENT  attr.name    (#PCDATA | linebrk)*                         >
<!--         index      Whether or not to index this name.         -->
<!ATTLIST  attr.name
             index      (no | yes)                         "yes"     >


<!--                    ATTRIBUTE USAGE                            -->
<!--                    Additional information about how to best use
                        the attribute.                             -->
<!ELEMENT  attr.usage   ((%paras; | codeblock)+)                     >


<!--                    ATTRIBUTE VALUE INFORMATION                -->
<!--                    The possible values of the attribute (which
                        may be different for different elements).  -->
<!ELEMENT  attr.value.info
                        (elem.value.group+)                          >


<!--                    CONTAINER ELEMENT FOR SETS OF
                        ATTRIBUTE VALUE GROUPS                     -->
<!--                    Names the elements that share a unique set
                        of declared and/or default values, and states
                        the values.                                -->
<!ELEMENT  elem.value.group
                        (elem.name.group, attr.value.group,
                         suggested.values?)                          >


<!--                    ELEMENT NAME REFERENCE GROUP               -->
<!--                    Container element for a set of element name
                        references.                                -->
<!ELEMENT  elem.name.group
                        (elem.name.ref+)                             >

<!--                    ATTRIBUTE VALUE GROUPING
                        ELEMENT FOR SETS OF ELEMENTS                -->
<!--                    Each unique set of declared and/or default
                        values for an element or group of elements
                        has its own attr.value.group               -->
<!ELEMENT  attr.value.group
                        (value.cluster+, default.value?)             >

<!--        declared.value
                       Used to indicate the types of declared
                       values defined by the ATTLIST declaration
            default    What is the default value for the
                       attribute?                                  -->
<!ATTLIST  attr.value.group
             declared.value
                        CDATA                              #IMPLIED
             default    CDATA                              #IMPLIED >

<!--                    SUGGESTED VALUES                           -->
<!--                    Suggested values for attributes whose
                        values may not be provided in an
                        attribute value list, with descriptions
                        of their expected usage.                   -->
<!ELEMENT  suggested.values
                        ((%paras; | codeblock)+)                     >

<!--                    ATTRIBUTE VALUE CLUSTER                    -->
<!ELEMENT  value.cluster
                        (value, meaning, behavior?)                  >


<!--                    ATTRIBUTE VALUE                            -->
<!ELEMENT  value        (#PCDATA)                                    >


<!--                    ATTRIBUTE VALUE MEANING                    -->
<!ELEMENT  meaning      (#PCDATA | %text;)*                         >


<!--                    ATTRIBUTE VALUE BEHAVIOR                   -->
<!--                    What the application may do                -->
<!ELEMENT  behavior     (#PCDATA | %text;)*                          >


<!--                    ATTRIBUTE DEFAULT VALUE                    -->
<!--                    Used to explain defaults, particularly
                        keywords and specific CDATA values         -->
<!ELEMENT  default.value
                        (#PCDATA | %text;)*                          >


<!-- ============================================================= -->
<!--                    PARAMETER ENTITY INFORMATION SECTION       -->
<!-- ============================================================= -->


<!--                    PARAMETER ENTITY INFORMATION SECTION       -->
<!ELEMENT  pe.sec       (intro?, pe.info*)                           >


<!--                    PARAMETER ENTITY INFORMATION               -->
<!ELEMENT  pe.info      %pe.info.model;                              >
<!ATTLIST  pe.info
             name       ID                                 #REQUIRED
             sortAs     CDATA                              #REQUIRED >


<!--                    PARAMETER ENTITY NAME                      -->
<!ELEMENT  pe.name      (#PCDATA | linebrk)*                         >
<!--         index      Whether or not to index this name.         -->
<!ATTLIST  pe.name
             index      (no | yes)                         "yes"     >


<!--                    PARAMETER ENTITY TAG NAME                  -->
<!ELEMENT  pe.tag       (#PCDATA)                                    >
<!--         index      Whether or not to index this tag.          -->
<!ATTLIST  pe.tag
             index      (no | yes)                         "yes"     >


<!-- ============================================================= -->
<!--                 CONTEXT INFORMATION SECTION                   -->
<!-- ============================================================= -->


<!--                    CONTEXT INFORMATION                        -->
<!--                    All of the contexts in which an element may
                        appear. Usually displayed in the form of
                        a table.                                   -->
<!ELEMENT  context.info (context.entry+)                             >
<!ATTLIST  context.info
             root-element
                        NMTOKEN                             #IMPLIED >


<!--                    CONTEXT ENTRY                              -->
<!--                    An element and the contexts in which it may
                        appear                                     -->
<!ELEMENT  context.entry
                        (contained.elem, containing.elem*)           >

<!--                    CONTAINED ELEMENT                          -->
<!--                    The element for which the context is to
                        be displayed.                              -->
<!ELEMENT  contained.elem
                        (elem.tag.ref, elem.name.ref)                >


<!--                    CONTAINING ELEMENT                         -->
<!--                    One of the element(s) in which the contained
                        element may occur.                         -->
<!ELEMENT  containing.elem
                        (elem.tag.ref, elem.name.ref)                >

<!-- ============================================================= -->
<!--                    DTD SECTION                                -->
<!-- ============================================================= -->

<!--                    DTD SECTION                                -->
<!ELEMENT  dtd.sec      (title, (%para.level;)*, dtd.info*)          >
<!ATTLIST  dtd.sec
             id         ID                                 #IMPLIED >

<!--                    DTD or MODULE                              -->
<!--                    The DTD or DTD module is named in the title,
                        any comments or explanations are in the
                        para.level stuff, and the DTD, module (with
                        markup converted to entities) or a
                        processing instruction calling the DTD or
                        module appears in the sgml.model.          -->
<!ELEMENT  dtd.info     (title, (%para.level;)*)                     >

<!-- was: !ELEMENT  dtd.info (title, (%para.level;)*, sgml.model)  -->

<!-- ============================================================= -->
<!--                    GENERAL TEXT ELEMENTS                      -->
<!-- ============================================================= -->


<!--                    CHAPTER                                    -->
<!ELEMENT  chapter      (title, index*, (%para.level;)*, intro?,
                         section*)                                   >
<!ATTLIST  chapter
             NISO       (no|yes)                            #IMPLIED
             id         ID                                  #IMPLIED >

<!--                    INTRODUCTION                               -->
<!ELEMENT  intro        (title?, index*, (%para.level;)*, section*)  >
<!ATTLIST  intro
             NISO       (no|yes)                            #IMPLIED
             id         ID                                  #IMPLIED >

<!--                    SECTION                                    -->
<!ELEMENT  section      (title, index*, (%para.level;)*, intro?,
                         section*)                                   >
<!ATTLIST  section
             keep       (no | yes)                          "no"
             NISO       (no|yes)                            #IMPLIED
             id         ID                                  #IMPLIED >

<!--                    TITLE                                      -->
<!ELEMENT  title        (#PCDATA | %text; | linebrk)*                >
<!--         index      Whether or not to index this title.        -->
<!ATTLIST  title
             index      (no | yes)                         "yes"     >


<!-- ============================================================= -->
<!--                    ELEMENTS AT THE PARAGRAPH LEVEL            -->
<!-- ============================================================= -->


<!--                    PARAGRAPH                                  -->
<!ELEMENT  para         (#PCDATA | graphic | %text; | %lists;)*      >



<!--                    CODEBLOCK                                  -->
<!--                    Used for monofont code examples, and such
                        things as tagged examples that are not
                        children of elem.info                      -->
<!ELEMENT  codeblock    (#PCDATA | mtl:focus | mtl:mksafe)*          >
<!--         format     Indicates the use of linespecific
                        notation to preserve line endings and spacing
                        in the data.                               -->
<!ATTLIST  codeblock
             format     NOTATION       (linespecific) "linespecific" >


<!--                    NOTE TO REVIEWERS                          -->
<!--                    Prints in italic or shadow or something
                        obnoxious to attract attention, prefaced by
                        bold word "NOTE: ".  On display,
                        three options will be allowed: print no
                        comments at all, print only external
                        (to client) comments, print both internal and
                        external comments.  Default is to print no
                        comments.                                  -->
<!ELEMENT  note.to.reviewer
                        (#PCDATA | %text; | %lists;)*                >
<!--         for.whom   Are the comments intended for internal
                        (Mulberry) or client readers?              -->

<!ATTLIST  note.to.reviewer
             for.whom   (internal | client)                #REQUIRED >

<!-- ============================================================= -->
<!--                    FIGURE (ELEMENTS AT THE PARAGRAPH LEVEL)   -->
<!-- ============================================================= -->

<!-- was: !ELEMENT  figure   (title?, (graphic | sgml.model |
                             table)+)                              -->


<!--                    FIGURE                                     -->
<!ELEMENT  figure       (title?, (graphic | table)+)                 >
<!ATTLIST  figure
             id         ID                                 #IMPLIED  >


<!--                    GRAPHIC                                    -->
<!ELEMENT  graphic      EMPTY                                        >
<!--         picfile    gives the file location.
             scale      gives the scale factor,e.g., 50%.          -->
<!ATTLIST  graphic
             picfile    CDATA                              #REQUIRED
             scale      CDATA                              #IMPLIED  >


<!-- ============================================================= -->
<!--                    LISTS (ELEMENTS AT THE PARAGRAPH LEVEL)    -->
<!-- ============================================================= -->


<!--                    BULLETED LIST                              -->
<!ELEMENT  bul.list     (title?, item+)                              >


<!--                    LIST ITEM                                  -->
<!ELEMENT  item         ((%para.level;)+)                            >


<!--                    NUMBERED LIST                              -->
<!ELEMENT  num.list     (title?, item+)                              >


<!--                    DEFINITION LIST                            -->
<!ELEMENT  def.list     (title?, term.head?, def.head?,
                             def.item+)                              >


<!--                    DEFINITION LIST TERM HEADING               -->
<!ELEMENT  term.head    (#PCDATA | %text;)*                          >


<!--                    DEFINITION LIST DEFINITION HEADING         -->
<!ELEMENT  def.head     (#PCDATA | %text;)*                          >


<!--                    DEFINITION LIST ITEM                       -->
<!ELEMENT  def.item     (term, def+)                                 >
<!ATTLIST  def.item
             id         ID                                 #IMPLIED  >


<!--                    DEFINITION LIST TERM                       -->
<!ELEMENT  term         (#PCDATA | %text;)*                          >


<!--                    DEFINITION LIST DEFINITION                 -->
<!ELEMENT  def          ((%para.level;)+)                            >


<!-- ============================================================= -->
<!--                    ELEMENTS OCCURRING INSIDE TEXT             -->
<!-- ============================================================= -->


<!--                    CITATION                                   -->
<!ELEMENT  citetitle    (#PCDATA | %text;)*                          >
<!ATTLIST  citetitle
             extref     CDATA                              #IMPLIED  >


<!--                    EMPHASIS                                   -->
<!ELEMENT  emphasis     (#PCDATA)                                    >
<!--         type       Optional attribute which indicates display
                        specs. Note: For backwards compatibility,
                        the default is 'ital'.                     -->
<!ATTLIST  emphasis
             type       (mono | ital | bold )              "ital"    >


<!--                    QUOTED TEXT                                -->
<!--                    Any snippet of quoted text in line
                        (in lieu of wrapping with ldquo and rdquo) -->
<!ELEMENT  quoted       (#PCDATA | %text;)*                          >


<!--                    INLINE CODE                                -->
<!--                    Any kind of inline code
                        (syntax sugar for emph[@type='mono'])      -->
<!ELEMENT  code         (#PCDATA)                                    >

<!--                    FOCUS                                      -->
<!--                    Used for tagged examples to emphasize one
                        or more pieces of the example              -->
<!ELEMENT  mtl:focus    (#PCDATA | mtl:focus)*                       >


<!--                    GENERATED TEXT                             -->
<!ELEMENT  gen.text     (#PCDATA)                                    >


<!--                    INLINE GRAPHIC                             -->
<!ELEMENT  inline.graphic
                        EMPTY                                        >
<!--         picfile    gives the file location.
             scale      gives the scale factor,e.g., 50%.          -->
<!ATTLIST  inline.graphic
             picfile    CDATA                              #REQUIRED
             scale      CDATA                               #IMPLIED >


<!--                    KEEP TOGETHER                              -->
<!--                    Formatting element meaning do not break this
                        content across a page or column.  Should be
                        used instead of the non-breaking-space
                        character reference or entity              -->
<!ELEMENT  keep         (#PCDATA | %text;)*                          >


<!--                    LINE BREAK                                 -->
<!--                    Formatting element meaning break the line at
                        this point.  Restricted usage.             -->
<!ELEMENT  linebrk      EMPTY                                        >


<!-- ============================================================= -->
<!--                    REFERENCE ELEMENTS                         -->
<!-- ============================================================= -->


<!-- Note: The Attribute and Element Name Tag References are used to
           link a name or tag occurring in the text with the
           information set that describes it.                      -->


<!--                    ATTRIBUTE NAME REFERENCE                   -->
<!--                    The full (long) name of the attribute will be
                        generated.                                 -->
<!ELEMENT  attr.name.ref
                        EMPTY                                        >
<!--         autolink   flag to control generation of links in html.
             attr.ref   Contains the unique identifier of the
                        appropriate Attribute Information element  -->
<!ATTLIST  attr.name.ref
             attr.ref   IDREF                              #REQUIRED
             autolink   (yes | no)                         "yes"     >


<!--                    ATTRIBUTE TAG REFERENCE                    -->
<!--                    The name of the attribute, as defined in the
                        ATTLIST will be generated.                 -->
<!ELEMENT  attr.tag.ref
                        EMPTY                                        >
<!--         autolink   flag to control generation of links in html.
             attr.ref   Contains the unique identifier of the
                        appropriate Attribute Information element  -->
<!ATTLIST  attr.tag.ref
             attr.ref   IDREF                              #REQUIRED
             autolink   (yes | no)                         "yes"     >


<!--                    ELEMENT NAME REFERENCE                     -->
<!--                    The full (long) name of the element will be
                        generated.                                 -->
<!ELEMENT  elem.name.ref
                        EMPTY                                        >
<!--         autolink   flag to control generation of links in html.
             elem.ref   Contains the unique identifier of the
                        appropriate Element Information element    -->
<!ATTLIST  elem.name.ref
             autolink   (yes | no)                         "yes"
             elem.ref   IDREF                              #REQUIRED >


<!--                    ELEMENT TAG REFERENCE                      -->
<!--                    The tag name as defined in the ELEMENT
                        declaration will be generated.             -->
<!ELEMENT  elem.tag.ref
                        EMPTY                                        >
<!--         autolink   flag to control generation of links in html.
             elem.ref   Contains the unique identifier of the
                        appropriate Element Information element    -->
<!ATTLIST  elem.tag.ref
             autolink   (yes | no)                         "yes"
             elem.ref   IDREF                              #REQUIRED >


<!--                    PARAMETER ENTITY NAME REFERENCE            -->
<!--                    The full (long) name of the entity will be
                        generated.                                 -->
<!ELEMENT  pe.name.ref  EMPTY                                        >
<!--         autolink   flag to control generation of links in html.
             pe.ref     Contains the unique identifier of the
                        appropriate Parameter Entity Information
                        element                                    -->
<!ATTLIST  pe.name.ref
             autolink   (yes | no)                         "yes"
             pe.ref     IDREF                              #REQUIRED >


<!--                    PARAMETER ENTITY TAG REFERENCE             -->
<!--                    The tag name as defined in the ENTITY
                        declaration will be generated.             -->
<!ELEMENT  pe.tag.ref   EMPTY                                        >
<!--         autolink   flag to control generation of links in html.
             pe.ref     Contains the unique identifier of the
                        appropriate Parameter Entity Information
                        element                                    -->
<!ATTLIST  pe.tag.ref
             autolink   (yes | no)                         "yes"
             pe.ref     IDREF                              #REQUIRED >


<!--                    REFERENCE TO AN EXTERNAL DOCUMENT          -->
<!ELEMENT  ext.cross.ref
                        (#PCDATA | %text;)*                          >
<!ATTLIST  ext.cross.ref
             ext.ref    CDATA                              #REQUIRED >


<!--                    INTERNAL CROSS REFERENCE                   -->
<!ELEMENT  int.cross.ref
                        (#PCDATA | %text;)*                          >
<!ATTLIST  int.cross.ref
             int.ref    IDREF                              #REQUIRED >


<!--                    GENERIC LINK TARGET                        -->
<!ELEMENT  target       EMPTY                                        >
<!ATTLIST  target
             id         ID                                 #REQUIRED >


<!-- ============================================================= -->
<!--                    INDEX ELEMENTS                             -->
<!-- ============================================================= -->

<!--                    INDEX SECTION                              -->
<!ELEMENT  index.sec    (title, index.entry+)                        >


<!--                    INDEX ENTRY                                -->
<!ELEMENT  index.entry  (index.term, index.alternative*)             >


<!--                    INDEX TERM                                 -->
<!ELEMENT  index.term   (#PCDATA | %refs;)*                          >


<!--                    INDEX ALTERNATIVE                          -->
<!ELEMENT  index.alternative
                        (#PCDATA | %refs;)*                          >
<!--         type       Type of the index term                     -->
<!ATTLIST  index.alternative
             type       (see | use)                        #REQUIRED >

<!--                    INDEX HIT                                  -->
<!--                    Index term to be collated into the index
                        section.                                   -->
<!ELEMENT  index        (#PCDATA)                                    >
<!--         type       Type of the index term                     -->
<!ATTLIST  index
             type       (see | use)                        "see"     >




<!-- ================== END OF TAG LIBRARY DEFINITION DTD ======== -->
