Essay.dtd

  <!ELEMENT Essay (head, intro*, body, tail*) >
    <!ATTLIST Essay xml:lang NMTOKEN "en-US">

    <!ELEMENT head (title, subtitle, author) >

      <!ELEMENT title (alphanum) >
        <!ATTLIST title DatePub CDATA #REQUIRED >

      <!ELEMENT subtitle (alphanum) >

      <!ELEMENT author (#PCDATA) >
        <!ATTLIST author name CDATA #IMPLIED
                         email CDATA #IMPLIED
                         phone CDATA #IMPLIED
                         address CDATA #IMPLIED
        >

    <!ELEMENT intro (paragraph+, graphic*)*>

    <!ELEMENT body (section+) >

      <!ELEMENT section (heading*, (paragraph+, pre*, list*, graphic*)*) >

        <!ELEMENT heading (text) >
          <!ATTLIST heading level (one|two|three) "one">

        <!ELEMENT paragraph (text) >

          <!ELEMENT text (alphanum | footnote | citation | crossref
                                   | formula)* >
             <!ATTLIST text
                xmlns:xlink   CDATA #FIXED "http://www.w3.org/1999/xlink"
                xlink:type    CDATA #IMPLIED
                xlink:href    CDATA #IMPLIED
                xlink:role    CDATA #IMPLIED
                xlink:title   CDATA #IMPLIED
                xlink:show    (new|embed|replace) "replace"
                xlink:actuate (onRequest|auto)    "onRequest"
             >

            <!ELEMENT alphanum (#PCDATA | emph | code | bold | footnote 
                                        | citation | formula | crossref)*>
              <!ATTLIST alphanum
                 xmlns:xlink   CDATA #FIXED "http://www.w3.org/1999/xlink"
                 xlink:type    CDATA #IMPLIED
                 xlink:href    CDATA #IMPLIED
                 xlink:role    CDATA #IMPLIED
                 xlink:title   CDATA #IMPLIED
                 xlink:show    (new|embed|replace) "replace"
                 xlink:actuate (onRequest|auto)    "onRequest"
              >

            <!ELEMENT emph (#PCDATA | code | bold)*>
              <!ATTLIST emph
                 xmlns:xlink   CDATA #FIXED "http://www.w3.org/1999/xlink"
                 xlink:type    CDATA #IMPLIED
                 xlink:href    CDATA #IMPLIED
                 xlink:role    CDATA #IMPLIED
                 xlink:title   CDATA #IMPLIED
                 xlink:show    (new|embed|replace) "replace"
                 xlink:actuate (onRequest|auto)    "onRequest"
              >

<!-- breaking the rules of good XML DTD construction? I could argue both 
sides. The fact is, I need bold and pre. -->

            <!ELEMENT bold (#PCDATA | code | emph | formula)*>
              <!ATTLIST emph
                 xmlns:xlink   CDATA #FIXED "http://www.w3.org/1999/xlink"
                 xlink:type    CDATA #IMPLIED
                 xlink:href    CDATA #IMPLIED
                 xlink:role    CDATA #IMPLIED
                 xlink:title   CDATA #IMPLIED
                 xlink:show    (new|embed|replace) "replace"
                 xlink:actuate (onRequest|auto)    "onRequest"
              >

            <!ELEMENT code (#PCDATA | emph | bold)*>
              <!ATTLIST code
                 xmlns:xlink   CDATA #FIXED "http://www.w3.org/1999/xlink"
                 xlink:type    CDATA #IMPLIED
                 xlink:href    CDATA #IMPLIED
                 xlink:role    CDATA #IMPLIED
                 xlink:title   CDATA #IMPLIED
                 xlink:show    (new|embed|replace) "replace"
                 xlink:actuate (onRequest|auto)    "onRequest"
              >

            <!ELEMENT footnote (#PCDATA | emph | code | citation 
                                        |formula | crossref)*>
             <!ATTLIST footnote
                xmlns:xlink   CDATA #FIXED "http://www.w3.org/1999/xlink"
                xlink:type    CDATA #IMPLIED
                xlink:href    CDATA #IMPLIED
                xlink:role    CDATA #IMPLIED
                xlink:title   CDATA #IMPLIED
                xlink:show    (new|embed|replace) "replace"
                xlink:actuate (onRequest|auto)    "onRequest"
             >

            <!ELEMENT citation (#PCDATA | emph | code | footnote 
                                        | formula | crossref)* >
             <!ATTLIST citation
                xmlns:xlink   CDATA #FIXED "http://www.w3.org/1999/xlink"
                xlink:type    CDATA #IMPLIED
                xlink:href    CDATA #IMPLIED
                xlink:role    CDATA #IMPLIED
                xlink:title   CDATA #IMPLIED
                xlink:show    (new|embed|replace) "replace"
                xlink:actuate (onRequest|auto)    "onRequest"
             >

            <!ELEMENT crossref (#PCDATA | emph | code | footnote 
                                        |formula | crossref)*>
              <!ATTLIST crossref
                 xmlns:xlink   CDATA #FIXED "http://www.w3.org/1999/xlink"
                 xlink:type    CDATA #IMPLIED
                 xlink:href    CDATA #IMPLIED
                 xlink:role    CDATA #IMPLIED
                 xlink:title   CDATA #IMPLIED
                 xlink:show    (new|embed|replace) "replace"
                 xlink:actuate (onRequest|auto)    "onRequest"
              >

            <!ELEMENT formula (#PCDATA | subscript)*>
              <!ATTLIST crossref
                 xmlns:xlink   CDATA #FIXED "http://www.w3.org/1999/xlink"
                 xlink:type    CDATA #IMPLIED
                 xlink:href    CDATA #IMPLIED
                 xlink:role    CDATA #IMPLIED
                 xlink:title   CDATA #IMPLIED
                 xlink:show    (new|embed|replace) "replace"
                 xlink:actuate (onRequest|auto)    "onRequest"
              >

              <!ELEMENT subscript (#PCDATA)>

<!-- breaking the rules of good XML DTD construction? I could argue both 
sides. The fact is, I need bold and pre. -->

        <!ELEMENT pre (text) >
           <!ATTLIST pre description CDATA #IMPLIED >

        <!ELEMENT list (item+) >
          <!ATTLIST list sequence (ordered|unordered) "unordered" >
          <!ELEMENT item (text) >

        <!ELEMENT graphic ((figure | table), graphic_title)? >

          <!ELEMENT figure (text*) >
             <!ATTLIST figure fileref CDATA #REQUIRED
                              width CDATA #IMPLIED
                              height CDATA #IMPLIED
             >

          <!ELEMENT table (header_row?, row+) >
            <!ELEMENT header_row (col_head*) >
              <!ELEMENT col_head (text) >
            <!ELEMENT row (row_item*) >
              <!ELEMENT row_item (text)>


          <!ELEMENT graphic_title (text?) >

    <!ELEMENT tail (notes?, bib?, text*) >
      <!ELEMENT bib (bib_entry+)>
        <!ELEMENT bib_entry EMPTY >
          <!ATTLIST bib_entry bib_authors CDATA #REQUIRED
                              bib_title CDATA #REQUIRED
                              art_title CDATA #IMPLIED
                              addit_inf CDATA #IMPLIED
                              pub_data CDATA #REQUIRED
          >
      <!ELEMENT notes (note_entry+)>
        <!ELEMENT note_entry (alphanum | citation | crossref)* >
          <!ATTLIST note_entry number CDATA #REQUIRED>

<!ENTITY lt "&#60;">
<!ENTITY gt ">">
<!ENTITY amp "&#38;">
<!ENTITY apos "'">
<!ENTITY quot """>
<!ENTITY deg "°">