<!--
 - Desc:    This file is part of the eCromedos document preparation system
 - Date:    2006/03/09
 - Author:  Tobias Koch (tkoch@ecromedos.net)
 - License: GNU General Public License, version 2
 - URL:     http://www.ecromedos.net
-->

<!-- ======================== predefined entities ========================= -->

<!ENTITY tex    "<entity name='tex'/>"   >
<!ENTITY latex  "<entity name='latex'/>" >
<!ENTITY nbsp   "<entity name='nbsp'/>"  >
<!ENTITY zwsp   "<entity name='zwsp'/>"  >
<!ENTITY endash "<entity name='endash'/>">
<!ENTITY emdash "<entity name='emdash'/>">
<!ENTITY dots   "<entity name='dots'/>"  >

<!-- ========================== inline elements =========================== -->

<!-- single and double quote -->
<!ENTITY % quoting-text "q | qq">

<!-- coloring text -->
<!ENTITY % coloring-text "color">

<!-- labels, cross-references and entities -->
<!ENTITY % referencing-text "cite | label | ref | pageref | entity">

<!-- text-formatting elements --> 
<!ENTITY % formatting-text
	"span | i | b | u | tt | xx-small | x-small | small 
	| medium | large | x-large | xx-large | nobr | br | pagebreak | y" >

<!-- annotations -->
<!ENTITY % annotating-text "footnote | marginal">

<!-- inline math -->
<!ENTITY % math-text "m">

<!-- named counters -->
<!ENTITY % counter-text "counter">

<!-- formatted text -->
<!ENTITY % inline-elements "
	%quoting-text; | %coloring-text; | %referencing-text; |
	%formatting-text; | %annotating-text; | %math-text; | %counter-text;">

<!ELEMENT q        (#PCDATA | %inline-elements;)*>
<!ELEMENT qq       (#PCDATA | %inline-elements;)*>

<!ELEMENT color    (#PCDATA | %inline-elements;)*>
<!ATTLIST color rgb CDATA #REQUIRED>

<!ELEMENT cite      EMPTY>
<!ATTLIST cite label CDATA #REQUIRED>

<!ELEMENT label     EMPTY>
<!ATTLIST label name CDATA #REQUIRED>

<!ELEMENT ref       EMPTY>
<!ATTLIST ref name CDATA #REQUIRED>

<!ELEMENT pageref   EMPTY>
<!ATTLIST pageref name CDATA #REQUIRED>

<!ELEMENT entity    EMPTY>
<!ATTLIST entity name CDATA #REQUIRED>

<!ELEMENT span     (#PCDATA | %inline-elements;)*>
<!ATTLIST span visibility CDATA #IMPLIED>

<!ELEMENT i        (#PCDATA | %inline-elements;)*>
<!ELEMENT b        (#PCDATA | %inline-elements;)*>
<!ELEMENT u        (#PCDATA | %inline-elements;)*>
<!ELEMENT tt       (#PCDATA | %inline-elements;)*>
<!ELEMENT xx-small (#PCDATA | %inline-elements;)*>
<!ELEMENT x-small  (#PCDATA | %inline-elements;)*>
<!ELEMENT small    (#PCDATA | %inline-elements;)*>
<!ELEMENT medium   (#PCDATA | %inline-elements;)*>
<!ELEMENT large    (#PCDATA | %inline-elements;)*>
<!ELEMENT x-large  (#PCDATA | %inline-elements;)*>
<!ELEMENT xx-large (#PCDATA | %inline-elements;)*>
<!ELEMENT nobr     (#PCDATA | %inline-elements;)*>

<!ELEMENT br        EMPTY>
<!ELEMENT pagebreak EMPTY>
<!ELEMENT y         EMPTY>

<!ELEMENT footnote (#PCDATA | %inline-elements;)*>
<!ELEMENT marginal (#PCDATA | %inline-elements;)*>

<!ELEMENT m        (#PCDATA)>

<!ELEMENT counter   EMPTY>
<!ATTLIST counter
	name  CDATA #REQUIRED
	label CDATA #IMPLIED
>

<!-- ========================= block elements ============================= -->

<!-- abstract -->
<!ELEMENT abstract (p+)>

<!-- common to figure, listing, table -->
<!ELEMENT caption (#PCDATA | %inline-elements;)*>

<!ENTITY % block-elements "(minisection | figure | table
	| equation | listing | verbatim | p | ul | ol | dl | pagebreak)*">

<!-- minisection -->
<!ELEMENT minisection (title, (figure | table
	| equation | listing | verbatim | p | ul | ol | dl | pagebreak)*)>

<!-- figure -->
<!ELEMENT img EMPTY>
<!ATTLIST img
	src          CDATA #REQUIRED
	print-width  CDATA #IMPLIED
	screen-width CDATA #IMPLIED
>
<!ELEMENT figure ((caption, label?)?, img)>
<!ATTLIST figure
	align (left|center|right) #IMPLIED
	float (yes|no)            #IMPLIED
>

<!-- table -->
<!ELEMENT col EMPTY>
<!ATTLIST col
	frame CDATA #IMPLIED
	width CDATA #REQUIRED
>
<!ELEMENT colgroup (col+)>
<!ELEMENT td (#PCDATA | %inline-elements;)*>
<!ATTLIST td
	frame   CDATA               #IMPLIED
	align   (left|center|right) #IMPLIED
	color   CDATA               #IMPLIED
	colspan CDATA               #IMPLIED
>
<!ELEMENT th (td+)?>
<!ATTLIST th
	frame  CDATA #IMPLIED
	color  CDATA #IMPLIED
	valign (top|middle|bottom) #IMPLIED
>
<!ELEMENT tr (td+)?>
<!ATTLIST tr
	frame  CDATA #IMPLIED
	color  CDATA #IMPLIED
	valign (top|middle|bottom) #IMPLIED
>
<!ELEMENT table ((caption, label?)?, colgroup, th?, tr*)>
<!ATTLIST table
	print-width      CDATA               #IMPLIED
	screen-width     CDATA               #IMPLIED
	frame            CDATA               #IMPLIED
	rulecolor        CDATA               #IMPLIED
	print-rulewidth  CDATA               #IMPLIED
	screen-rulewidth CDATA               #IMPLIED
	align            (left|center|right) #IMPLIED
	float            (yes|no)            #IMPLIED
>

<!-- equation -->
<!ELEMENT equation (label?, m)>
<!ATTLIST equation number (yes|no) #IMPLIED>

<!-- listing -->
<!ELEMENT code (#PCDATA | %inline-elements;)*>
<!ATTLIST code
	syntax      CDATA    #IMPLIED
	colorscheme CDATA    #IMPLIED
	startline   CDATA    #IMPLIED
	linestep    CDATA    #IMPLIED
	tabspaces   CDATA    #IMPLIED
	strip       (yes|no) #IMPLIED
	bgcolor     CDATA    #IMPLIED
>
<!ELEMENT listing ((caption, label?)?, code)>

<!-- verbatim -->
<!ELEMENT verbatim (#PCDATA | %inline-elements;)*>
<!ATTLIST verbatim strip (yes|no) #IMPLIED>

<!-- paragraph -->
<!ELEMENT p (#PCDATA | title | %inline-elements; | figure)*>

<!-- lists -->
<!ELEMENT li (#PCDATA | %inline-elements;)*>
<!ELEMENT dt (#PCDATA | %inline-elements;)*>
<!ELEMENT dd (#PCDATA | %inline-elements;)*>

<!ELEMENT ul (li, (ul | ol)?)+>
<!ELEMENT ol (li, (ul | ol)?)+>
<!ELEMENT dl (dt, dd)>

<!-- ============================= sections =============================== -->

<!--
  - A glossary contains nothing but a glossary list
-->
<!ELEMENT glossary (dl+)>

<!--
  - A bibliography contains one or more items.
-->
<!ELEMENT bibitem (#PCDATA | %inline-elements;)*>
<!ATTLIST bibitem label CDATA #REQUIRED>
<!ELEMENT biblio  (bibitem+)>
<!ATTLIST biblio  number (yes|no) #IMPLIED>

<!--
  - A section has a title followed by an opening and
  - an arbitrary number of subsections.
-->
<!ELEMENT section       (title, %block-elements;, subsection*)>
<!ELEMENT subsection    (title, %block-elements;, subsubsection*)>
<!ELEMENT subsubsection (title, %block-elements;)>

<!--
  - Elements 'title' and 'author' are mandatory, you can have more than one
  - author. Other elements 'subject', 'date', 'publisher' are optional.
-->
<!ELEMENT subject    (#PCDATA | %inline-elements;)*>
<!ELEMENT title      (#PCDATA | %inline-elements;)*>
<!ELEMENT author     (#PCDATA | %inline-elements;)*>
<!ELEMENT date       (#PCDATA | %inline-elements;)*>
<!ELEMENT publisher  (#PCDATA | %inline-elements;)*>
<!ELEMENT dedication (#PCDATA | %inline-elements;)*>
<!ELEMENT head (subject?, title, author+, date?, publisher?, dedication?)>

<!--
  - This is the root element. A report must have a header. It may have an 
  - arbitrary number of sections followed by an optional bibliography.
-->
<!ELEMENT article (head, abstract?, section*, glossary?, biblio?)>
<!ATTLIST article
	lang          CDATA #IMPLIED
	fontsize      CDATA #IMPLIED
	papersize     CDATA #IMPLIED
	bcor          CDATA #IMPLIED
	div           CDATA #IMPLIED
	secnumdepth   (0|1|2|3|4|5) #IMPLIED
	tocdepth      (0|1|2|3|4|5) #IMPLIED
	secsplitdepth (0|1|2|3|4|5) #IMPLIED
	columns       (1|2) #IMPLIED
>
