<?xml version="1.0" encoding="UTF-8"?>
<!--
  - (C) Frank Lübeck (http://www.math.rwth-aachen.de/~Frank.Luebeck)
  -
  - The BibXMLext data format.
  - 
  - This DTD expresses XML markup similar to the BibTeX language
  - specified for LaTeX, or actually its content model.
  -
  - It is a variation of a file bibxml.dtd developed by the project
  -   http://bibtexml.sf.net/
  - 
  - For documentation on BibTeX, see
  -   http://www.ctan.org/tex-archive/biblio/bibtex/distribs/doc/
  -
  - A previous version of the code originally developed by
  - Vidar Bronken Gundersen, http://bibtexml.sf.net/
  - Reuse and repurposing is approved as long as this
  - notification appears with the code.
  -
-->

<!-- ..................................................................... -->
<!-- Main structure -->

<!-- key-value pairs as in BibTeX @string entries are put in empty elements
     (but here they can be used for parts of an entry field as well)       -->
<!ELEMENT string EMPTY>
<!ATTLIST string
   key        CDATA     #REQUIRED 
   value      CDATA     #REQUIRED >
   
<!-- entry may contain one of the bibliographic types. -->
<!ELEMENT entry ( article | book | booklet |
                         manual | techreport |
                         mastersthesis | phdthesis |
                         inbook | incollection |
                         proceedings | inproceedings |
                         conference |
                         unpublished | misc ) >
<!ATTLIST entry
   id         CDATA     #REQUIRED >

<!-- file is the documents top element. -->
<!ELEMENT file  ( string | entry )* >


<!-- ..................................................................... -->
<!-- Parameter entities -->

<!-- these are additional elements often used, but not included in the
     standard BibTeX distribution, these must be added to the
     bibliography styles, otherwise these fields will be omitted by
     the formatter, we allow an arbitrary number of 'other' elements
     to specify any further information   -->

<!ENTITY   %  n.user " abstract?, affiliation?,
                        contents?, copyright?,
                        (isbn | issn)?, 
                        keywords?, language?, lccn?, 
                        location?, mrnumber?, mrclass?, mrreviewer?,
                        price?, size?, url?, category?, other* ">

<!ENTITY   %  n.common "key?, annotate?, crossref?,
                        %n.user;">

<!-- content model used more than once -->

<!ENTITY   %  n.InProceedings "author, title, booktitle,
                    year, editor?, 
                    (volume | number)?,
                    series?, pages?, address?, 
                    month?, organization?, publisher?,
                    note?, %n.common;">

<!ENTITY   %  n.PHDThesis "author, title, school,
                    year, type?, address?, month?,
                    note?, %n.common;">

<!-- ..................................................................... -->
<!-- Entries in the BibTeX database -->

<!-- [article] An article from a journal or magazine.
  -  Required fields: author, title, journal, year.
  -  Optional fields: volume, number, pages, month, note. -->
<!ELEMENT   article    (author, title, journal,
               year, volume?, number?, pages?,
               month?, note?, %n.common;)
>

<!-- [book] A book with an explicit publisher.  
  -  Required fields: author or editor, title, publisher, year.
  -  Optional fields: volume or number, series, address,
  -     edition, month, note. -->
<!ELEMENT   book    ((author | editor), title,
               publisher, year, (volume | number)?,
               series?, address?, edition?, month?,
               note?, %n.common;)
>
	   
<!-- [booklet] A work that is printed and bound, but without a named
  -  publisher or sponsoring institution  
  -  Required field: title.
  -  Optional fields: author, howpublished, address, month, year, note. -->
<!ELEMENT   booklet    (author?, title,
               howpublished?, address?, month?, 
               year?, note?, %n.common;)
>

<!-- [conference] The same as INPROCEEDINGS,
  -  included for Scribe compatibility. -->
<!ELEMENT   conference      (%n.InProceedings;)
>

<!-- [inbook] A part of a book, which may be a chapter (or section or
  -  whatever) and/or a range of pages.  
  -  Required fields: author or editor, title, chapter and/or pages,
  -     publisher, year.
  -  Optional fields: volume or number, series, type, address,
  -     edition, month, note. -->
<!ELEMENT   inbook    ((author | editor), title,
               ((chapter, pages?) | pages),
               publisher, year, (volume |
               number)?, series?, type?,
               address?, edition?, month?, 
               note?, %n.common;)
>

<!--
  - > I want to express that the elements a and/or b are legal that is one
  - > of them or both must be present in the document instance (see the
  - > element content for BibTeX entry `InBook').
  - > How do I specify this in my DTD?
  - 
  - Dave Peterson:
  -  in content model:   ((a , b?) | b)          if order matters
  -                      ((a , b?) | (b , a?))   otherwise
-->

<!-- [incollection] A part of a book having its own title.
  -  Required fields: author, title, booktitle, publisher, year.
  -  Optional fields: editor, volume or number, series, type,
  -     chapter, pages, address, edition, month, note. -->
<!ELEMENT   incollection    (author, title,
               booktitle, publisher, year,
               editor?, (volume | number)?,
               series?, type?, chapter?, 
               pages?, address?, edition?, 
               month?, note?,
               %n.common;)
>

<!-- [inproceedings] An article in a conference proceedings.
  -  Required fields: author, title, booktitle, year.
  -  Optional fields: editor, volume or number, series, pages,
  -     address, month, organization, publisher, note. -->
<!ELEMENT   inproceedings      (%n.InProceedings;)
>

<!-- [manual] Technical documentation  
  -  Required field: title.
  -  Optional fields: author, organization, address,
  -     edition, month, year, note. -->
<!ELEMENT   manual    (author?, title,
               organization?, address?, edition?,
               month?, year?, note?, %n.common;)
>

<!-- [mastersthesis] A Master's thesis.  
  -  Required fields: author, title, school, year.
  -  Optional fields: type, address, month, note. -->
<!ELEMENT   mastersthesis      (%n.PHDThesis;)
>

<!-- [misc] Use this type when nothing else fits.  
  -  Required fields: none.
  -  Optional fields: author, title, howpublished, month, year, note. -->
<!ELEMENT   misc    (author?, title?,
               howpublished?, month?, year?, note?,
               %n.common;)
>

<!-- [phdthesis] A PhD thesis.  
  -  Required fields: author, title, school, year.
  -  Optional fields: type, address, month, note. -->
<!ELEMENT   phdthesis      (%n.PHDThesis;)
>

<!-- [proceedings] The proceedings of a conference.  
  -  Required fields: title, year.
  -  Optional fields: editor, volume or number, series,
  -     address, month, organization, publisher, note. -->
<!ELEMENT   proceedings    (editor?, title, year,
               (volume | number)?, series?, 
               address?, month?, organization?, 
               publisher?, note?, %n.common;)
>

<!-- [techreport] A report published by a school or other institution,
  -  usually numbered within a series.  
  -  Required fields: author, title, institution, year.
  -  Optional fields: type, number, address, month, note. -->
<!ELEMENT   techreport    (author, title,
               institution, year, type?, number?,
               address?, month?, note?, %n.common;)
>

<!-- [unpublished] A document having an author and title, but not
  -  formally published.  
  -  Required fields: author, title, note.
  -  Optional fields: month, year. -->
<!ELEMENT   unpublished    (author, title, note,
               month?, year?, %n.common;)
>

<!-- ..................................................................... -->
<!-- Fields from the standard bibliography styles -->

<!--
  - Below is a description of all fields recognized by the standard
  - bibliography styles.  An entry can also contain other fields, which
  - are ignored by those styles.
  - 
  - [address] Usually the address of the publisher or other type of
  - institution  For major publishing houses, van~Leunen recommends
  - omitting the information entirely.  For small publishers, on the other
  - hand, you can help the reader by giving the complete address.
  - 
  - [annote] An annotation  It is not used by the standard bibliography
  - styles, but may be used by others that produce an annotated
  - bibliography.
  - 
  - [author] The name(s) of the author(s), here *not* in the format 
  - described in the LaTeX book. Contains elements <name> which in turn
  - contains elements <first>, <last> for the first name (or first names,
  - fully written or as initials, and including middle initials) and
  - the last name.
  - 
  - [booktitle] Title of a book, part of which is being cited.  See the
  - LaTeX book for how to type titles.  For book entries, use the title
  - field instead.
  - 
  - [chapter] A chapter (or section or whatever) number.
  - 
  - [crossref] The database key of the entry being cross referenced.
  - 
  - [edition] The edition of a book-for example, ``Second''.  This
  - should be an ordinal, and should have the first letter capitalized, as
  - shown here; the standard styles convert to lower case when necessary.
  - 
  - [editor] Name(s) of editor(s), typed as indicated in the LaTeX book.
  - If there is also an author field, then the editor field gives the
  - editor of the book or collection in which the reference appears.
  - 
  - [howpublished] How something strange has been published.  The first
  - word should be capitalized.
  - 
  - [institution] The sponsoring institution of a technical report.
  - 
  - [journal] A journal name.  Abbreviations are provided for many
  - journals; see the Local Guide.
  - 
  - [key] Used for alphabetizing, cross referencing, and creating a label
  - when the ``author'' information (described in Section [ref: ] is
  - missing. This field should not be confused with the key that appears
  - in the \cite command and at the beginning of the database entry.
  - 
  - [month] The month in which the work was published or, for an
  - unpublished work, in which it was written. You should use the
  - standard three-letter abbreviation, as described in Appendix B.1.3 of
  - the LaTeX book.
  - 
  - [note] Any additional information that can help the reader.  The first
  - word should be capitalized.
  - 
  - [number] The number of a journal, magazine, technical report, or of a
  - work in a series.  An issue of a journal or magazine is usually
  - identified by its volume and number; the organization that issues a
  - technical report usually gives it a number; and sometimes books are
  - given numbers in a named series.
  - 
  - [organization] The organization that sponsors a conference or that
  - publishes a manual.
  - 
  - [pages] One or more page numbers or range of numbers, such as 42-111
  - or 7,41,73-97 or 43+ (the `+' in this last example indicates pages
  - following that don't form a simple range).  To make it easier to
  - maintain Scribe-compatible databases, the standard styles convert a
  - single dash (as in 7-33) to the double dash used in TeX to denote
  - number ranges (as in 7-33). Here, we suggest to use the entity
  - &ndash; for a dash in page ranges.
  - 
  - [publisher] The publisher's name.
  - 
  - [school] The name of the school where a thesis was written.
  - 
  - [series] The name of a series or set of books.  When citing an entire
  - book, the the title field gives its title and an optional series field
  - gives the name of a series or multi-volume set in which the book is
  - published.
  - 
  - [title] The work's title. For mathematical formulae use the <M> or
  - <Math> elements explained below (and LaTeX code in the content, without
  - surrounding '$').
  - 
  - [type] The type of a technical report-for example, ``Research
  - Note''.
  - 
  - [volume] The volume of a journal or multivolume book.
  - 
  - [year] The year of publication or, for an unpublished work, the year
  - it was written.  Generally it should consist of four numerals, such as
  - 1984, although the standard styles can handle any year whose last four
  - nonpunctuation characters are numerals, such as `(about 1984)'.
-->

<!-- Here is the main extension compared to the original BibXML definition
     from which is DTD is derived: We want to allow more markup in some 
     elements such that we can use the bibliography for high quality 
     output in other formats than LaTeX. 
     
     - <M> and <Math>, mathematical formulae: Specify LaTeX code for "simple" 
       formulae as content of <M> elements; "simple" means that they can be
       translated to a fairly readable ASCII representation as explained in
       the GAPDoc documentation on "<M>". 
       More complicated formulae are given as content of <Math> elements.
       (Think about an <Alt> alternative for text or HTML representations.)
     
     - <URL>: use these elements to specify URLs, they can be properly
       converted to links if possible in an output format (in that case 
       the Text attribute is used for the visible text).

     - <value key="..."/>:  substituted by the value-attribute specified
       in a <string key="..." value="..."/> element. Can be used anywhere,
       not only for complete fields as in BibTeX.

     - <C> protect case changes: should be used instead of {}'s which are
       used in BibTeX title fields to protect the case of letters from
       changes. 

     - <Alt Only="...">, <Alt Not="...">, alternatives for different 
       output formats:  Use this to specify alternatives, the GAPDoc
       utilities will do some special handling for "Text", "HTML",
       and "BibTeX" as output type.

     - <Wrap Name="...">, generic wrapper for other markup:
       Use this for any other type of markup you are interested in. The
       GAPDoc utilities will ignore the markup, but provide a hook
       to do install handler functions for them.
-->
<!ELEMENT   M               (#PCDATA | Alt)* > <!-- math with simple text
                                             representation, in LaTeX -->
<!ELEMENT   Math            (#PCDATA | Alt)* > <!-- other math in LaTeX -->
<!ELEMENT   URL             (#PCDATA | Alt | Link | LinkText)* > <!-- an URL -->
<!ATTLIST   URL Text CDATA #IMPLIED>    <!-- text to be printed 
                                             (default is content) -->
<!ELEMENT   value             EMPTY   > <!-- placeholder for value given .. -->
<!ATTLIST   value key CDATA #REQUIRED > <!-- .. by key, defined in a string
                                             element -->
<!ELEMENT   C    (#PCDATA | value | Alt |
                  M | Math | Wrap | URL)* >  <!-- protect from case changes -->
<!ELEMENT   Alt  (#PCDATA | value | C | Alt |    
                  M | Math | Wrap | URL)* > <!-- specify alternatives for 
                                             various types of output -->
<!ATTLIST   Alt  Only CDATA #IMPLIED
                 Not  CDATA #IMPLIED  > <!-- specify output types in comma and 
                  whitespace separated list (use exactly one of Only or Not) -->

<!ENTITY % withMURL "(#PCDATA | value | M | Math | Wrap | URL | C | Alt )*" >

<!ELEMENT   Wrap           %withMURL; > <!-- a generic wrapper  -->
<!ATTLIST   Wrap Name CDATA #REQUIRED > <!-- needs a 'Name' attribute  -->

<!ELEMENT   address         %withMURL; >
<!-- here we don't want the complicated definition from the LaTeX book,
     use markup for first/last name(s): a <name> element for each
     author which contains <first> (optional), <last> elements:  -->
<!ELEMENT   author          (name)* >
<!ELEMENT   name            (first?, last) >
<!ELEMENT   first           (#PCDATA) >
<!ELEMENT   last            (#PCDATA) >

<!ELEMENT   booktitle       %withMURL; >
<!ELEMENT   chapter         %withMURL; >
<!ELEMENT   edition         %withMURL; >
<!-- same as for author field -->
<!ELEMENT   editor          (name)* >
<!ELEMENT   howpublished    %withMURL; >
<!ELEMENT   institution     %withMURL; >
<!ELEMENT   journal         %withMURL; >
<!ELEMENT   month           %withMURL; >
<!ELEMENT   note            %withMURL; >
<!ELEMENT   number          %withMURL; >
<!ELEMENT   organization    %withMURL; >
<!ELEMENT   pages           %withMURL; >
<!ELEMENT   publisher       %withMURL; >
<!ELEMENT   school          %withMURL; >
<!ELEMENT   series          %withMURL; >
<!ELEMENT   title           %withMURL; >
<!ELEMENT   type            %withMURL; >
<!ELEMENT   volume          %withMURL; >
<!ELEMENT   year            (#PCDATA) >

<!-- These were not listed in the documentation for entry content, but
  -  appeared in the list of fields in the BibTeX documentation -->

<!ELEMENT   annotate        %withMURL; >
<!ELEMENT   crossref        %withMURL; >
<!ELEMENT   key             (#PCDATA) >


<!-- ..................................................................... -->
<!-- Other popular fields
  - 
  - From: http://www.ecst.csuchico.edu/~jacobsd/bib/formats/bibtex.html
  - BibTeX is extremely popular, and many people have used it to store
  - information. Here is a list of some of the more common fields:
  - 
  - [affiliation]  The authors affiliation. 
  - [abstract]  An abstract of the work. 
  - [contents]  A Table of Contents 
  - [copyright]  Copyright information. 
  - [ISBN]  The International Standard Book Number. 
  - [ISSN]  The International Standard Serial Number. 
  -         Used to identify a journal. 
  - [keywords]  Key words used for searching or possibly for annotation. 
  - [language]  The language the document is in. 
  - [location]  A location associated with the entry,
  -             such as the city in which a conference took place.
  - [LCCN]  The Library of Congress Call Number.
  -         I've also seen this as lib-congress. 
  - [mrnumber]  The Mathematical Reviews number. 
  - [mrclass]  The Mathematical Reviews class. 
  - [mrreviewer]  The Mathematical Reviews reviewer. 
  - [price]  The price of the document. 
  - [size]  The physical dimensions of a work. 
  - [URL] The WWW Universal Resource Locator that points to the item being
  -       referenced. This often is used for technical reports to point to the
  -       ftp site where the postscript source of the report is located.
  - 
  - When using BibTeX with LaTeX you need
  - BibTeX style files to print these data.
-->

<!ELEMENT   abstract        %withMURL; >
<!ELEMENT   affiliation     %withMURL; >
<!ELEMENT   contents        %withMURL; >
<!ELEMENT   copyright       %withMURL; >
<!ELEMENT   isbn            (#PCDATA) >
<!ELEMENT   issn            (#PCDATA) >
<!ELEMENT   keywords        %withMURL; >
<!ELEMENT   language        %withMURL; >
<!ELEMENT   lccn            (#PCDATA) >
<!ELEMENT   location        %withMURL; >
<!ELEMENT   mrnumber        %withMURL; >
<!ELEMENT   mrclass         %withMURL; >
<!ELEMENT   mrreviewer      %withMURL; >
<!ELEMENT   price           %withMURL; >
<!ELEMENT   size            %withMURL; >
<!ELEMENT   url             %withMURL; >


<!-- Added by Zeger W. Hendrikse
  - [category]  Category of this bibitem
-->
<!ELEMENT   category      %withMURL; >

<!-- A container element [other] for any further information, a description 
   - of the type of data must be given in the attribute 'type' 
-->
<!ELEMENT   other      %withMURL; >
<!ATTLIST   other
    type      CDATA   #REQUIRED >


<!-- ..................................................................... -->
<!-- Predefined/reserved character entities -->

<!ENTITY amp    "&#38;#38;">
<!ENTITY lt     "&#38;#60;">
<!ENTITY gt     "&#62;">
<!ENTITY apos   "&#39;">
<!ENTITY quot   "&#34;">


<!-- Some more generally useful entities -->
<!ENTITY nbsp "&#160;">
<!ENTITY copyright "&#169;">
<!ENTITY ndash "&#x2013;">
 

<!-- ..................................................................... -->
<!-- End of BibXMLext dtd -->
