<!-- DTD combining CNXML and MathML modules                          -->
<!-- Version 0.3                                                     -->
<!--                                                                 -->   
<!-- This entity may be identified by the following PUBLIC           -->
<!-- and SYSTEM identifiers                                          -->
<!--                                                                 -->
<!-- PUBLIC:  -//CNX//DTD CNXML 0.3 plus MathML plus QML//EN         -->
<!-- SYSTEM:  http://cnx.rice.edu/cnxml/0.3/DTD/cnxml_mathml_qml.dtd -->
<!--                                                                 -->
<!-- CVS Version: $Revision: 1.1 $                                   -->
<!-- Modified: $Date: 2001/06/12 14:25:18 $                          -->
<!-- Maintained by the CNXML langauge team                           -->
<!-- email: cnxml@cnx.rice.edu                                       -->
<!--                                                                 -->

<!-- Bring in CNXML qualified names -->
<!ENTITY % cnxml-qname.mod SYSTEM "cnxml-qname-1.mod" >
%cnxml-qname.mod;

<!-- Use the default MathML prefix ("m") --> 
<!ENTITY % MATHML.prefixed "INCLUDE" >

<!-- Bring in MathML qualified names -->
<!ENTITY % mathml-qname.mod PUBLIC "-//W3C//ENTITIES MathML 2.0 Qualified Names 1.0//EN" "mathml2-qname-1.mod">
%mathml-qname.mod;

<!-- Use the default QML prefix ("q") --> 
<!ENTITY % QML.prefixed "INCLUDE" >

<!-- Bring in QML qualified names -->
<!ENTITY % qml-qname.mod PUBLIC "-//CNX//ENTITIES QML 1.0 Qualified Names 1.0//EN" "qml1-qname-1.mod">
%qml-qname.mod;

<!-- Define all xmlns attributes  -->
<!ENTITY % NS.decl.attrib "%CNXML.xmlns.extra.attrib; %MATHML.xmlns.attrib; %QML.xmlns.extra.attrib;">

<!ENTITY % CNXML.module.content "(%CNXML.name.qname;,%CNXML.authorlist.qname;, %CNXML.maintainerlist.qname;, (%CNXML.keywordlist.qname;)?, %CNXML.abstract.qname;, (%CNXML.objectives.qname;)?, (%CNXML.section.qname;|%CNXML.para.qname;|%CNXML.equation.qname;|%CNXML.list.qname;|%CNXML.codeblock.qname;|%CNXML.figure.qname;|%CNXML.table.qname;|%CNXML.example.qname;|%CNXML.exercise.qname;|%CNXML.definition.qname;|%CNXML.rule.qname;|%QML.problemset.qname;)+)">

<!-- Update content model for 'para' to allow math -->
<!ENTITY % CNXML.para.content "(#PCDATA|%CNXML.emphasis.qname;|%CNXML.list.qname;|%CNXML.cnxn.qname;|%CNXML.link.qname;|%CNXML.equation.qname;|%CNXML.cite.qname;|%CNXML.definition.qname;|%CNXML.codeline.qname;|%CNXML.term.qname;|%CNXML.note.qname;|%CNXML.rule.qname;|%math.qname;)*">

<!-- Update content model for 'equation' to allow math -->
<!ENTITY % CNXML.equation.content "((%CNXML.name.qname;)?, %math.qname;)">

<!-- Update content model for 'cite' to allow math -->
<!ENTITY % CNXML.cite.content "(#PCDATA|%CNXML.emphasis.qname;|%math.qname;)*">

<!-- Update content model for 'item' to allow math -->
<!ENTITY % CNXML.item.content "(#PCDATA|%CNXML.cnxn.qname;|%CNXML.link.qname;|%CNXML.cite.qname;|%CNXML.definition.qname;|%CNXML.codeline.qname;|%CNXML.emphasis.qname;|%CNXML.list.qname;|%CNXML.term.qname;|%CNXML.note.qname;|%CNXML.rule.qname;|%math.qname;)*">

<!-- Update content model for 'caption' to allow math -->
<!ENTITY % CNXML.caption.content "(#PCDATA|%CNXML.cnxn.qname;|%CNXML.codeline.qname;|%CNXML.link.qname;|%CNXML.emphasis.qname;|%math.qname;)*">

<!-- Update content model for 'elem' to allow math -->
<!ENTITY % CNXML.elem.content "(#PCDATA|%CNXML.cnxn.qname;|%CNXML.link.qname;|%CNXML.cite.qname;|%CNXML.codeblock.qname;|%CNXML.emphasis.qname;|%math.qname;)*">

<!-- Update content model for 'abstract' to allow math -->
<!ENTITY % CNXML.abstract.content "(#PCDATA|%CNXML.codeline.qname;|%CNXML.emphasis.qname;|%math.qname;)*">

<!-- Update content model for 'term' to allow math -->
<!ENTITY % CNXML.term.content "(#PCDATA|%CNXML.codeline.qname;|%math.qname;)*">

<!-- Update content model for 'meaning' to allow math -->
<!ENTITY % CNXML.meaning.content "(#PCDATA|%CNXML.codeline.qname;|%CNXML.emphasis.qname;|%CNXML.cite.qname;|%CNXML.link.qname;|%CNXML.cnxn.qname;|%CNXML.equation.qname;|%math.qname;)*">

<!-- Update content model for 'note to allow math -->
<!ENTITY % CNXML.note.content "(#PCDATA|%CNXML.emphasis.qname;|%CNXML.link.qname;|%CNXML.cnxn.qname;|%CNXML.cite.qname;|%CNXML.codeline.qname;|%CNXML.term.qname;|%math.qname;)*">

<!-- Update content model for 'exercise' to allow qml -->
<!ENTITY % CNXML.exercise.content "(%QML.item.qname;)">

<!-- Update content model for QML marked up text to allow ... -->
<!ENTITY % QML.text "(#PCDATA|%CNXML.section.qname;|%CNXML.media.qname;)*">

<!-- Define the global namespace attributes -->
<![%CNXML.prefixed;[
<!ENTITY % CNXML.xmlns.attrib
    "%NS.decl.attrib;"
>
]]>
<!ENTITY % CNXML.xmlns.attrib
    "xmlns CDATA #FIXED '%CNXML.xmlns;' %NS.decl.attrib;"
>

<!-- Define a common set of attributes for all module elements -->
<!ENTITY % CNXML.Common.attrib
         "%CNXML.xmlns.attrib;"
>


<!-- Define the elements and attributes of the module -->
<!ENTITY % CNXML.module.content "(%CNXML.name.qname;,
%CNXML.authorlist.qname;, %CNXML.maintainerlist.qname;, (%CNXML.keywordlist.qname;)?, %CNXML.abstract.qname;, (%CNXML.objectives.qname;)?, (%CNXML.section.qname;|%CNXML.para.qname;|%CNXML.equation.qname;|%CNXML.list.qname;|%CNXML.codeblock.qname;|%CNXML.figure.qname;|%CNXML.table.qname;|%CNXML.example.qname;|%CNXML.exercise.qname;|%CNXML.definition.qname;|%CNXML.rule.qname;)+)">
<!ELEMENT %CNXML.module.qname; %CNXML.module.content; >
          <!ATTLIST %CNXML.module.qname; %CNXML.xmlns.attrib;>
	  <!ATTLIST %CNXML.module.qname; id ID #REQUIRED>
	  <!ATTLIST %CNXML.module.qname; levelmask CDATA #REQUIRED>
	  <!ATTLIST %CNXML.module.qname; created CDATA #REQUIRED>
	  <!ATTLIST %CNXML.module.qname; revised CDATA #REQUIRED>
	  <!ATTLIST %CNXML.module.qname; version CDATA #REQUIRED>

<!ENTITY % CNXML.name.content "(#PCDATA)">
<!ELEMENT %CNXML.name.qname; %CNXML.name.content;>
          <!ATTLIST %CNXML.name.qname; %CNXML.xmlns.attrib;>

<!ENTITY % CNXML.authorlist.content "(%CNXML.author.qname;)+">
<!ELEMENT %CNXML.authorlist.qname; %CNXML.authorlist.content;>
          <!ATTLIST %CNXML.authorlist.qname; %CNXML.xmlns.attrib;>

<!ENTITY % CNXML.author.content "((%CNXML.honorific.qname;)?, %CNXML.firstname.qname;, (%CNXML.othername.qname;)*, %CNXML.surname.qname;, (%CNXML.lineage.qname;)?, (%CNXML.email.qname;)?)">
<!ELEMENT %CNXML.author.qname; %CNXML.author.content;>
          <!ATTLIST %CNXML.author.qname; %CNXML.xmlns.attrib;>
	  <!ATTLIST %CNXML.author.qname; id CDATA #REQUIRED>
	  <!ATTLIST %CNXML.author.qname; homepage CDATA #IMPLIED>

<!ENTITY % CNXML.maintainerlist.content "(%CNXML.maintainer.qname;)+">
<!ELEMENT %CNXML.maintainerlist.qname; %CNXML.maintainerlist.content;>
          <!ATTLIST %CNXML.maintainerlist.qname; %CNXML.xmlns.attrib;>

<!ENTITY % CNXML.maintainer.content "((%CNXML.honorific.qname;)?, %CNXML.firstname.qname;, (%CNXML.othername.qname;)*, %CNXML.surname.qname;, (%CNXML.lineage.qname;)?, (%CNXML.email.qname;)?)">
<!ELEMENT %CNXML.maintainer.qname; %CNXML.maintainer.content;>
          <!ATTLIST %CNXML.maintainer.qname; %CNXML.xmlns.attrib;>
	  <!ATTLIST %CNXML.maintainer.qname; id CDATA #REQUIRED>
	  <!ATTLIST %CNXML.maintainer.qname; homepage CDATA #IMPLIED>

<!ENTITY % CNXML.honorific.content "(#PCDATA)">
<!ELEMENT %CNXML.honorific.qname; %CNXML.honorific.content;>
          <!ATTLIST %CNXML.honorific.qname; %CNXML.xmlns.attrib;>

<!ENTITY % CNXML.firstname.content "(#PCDATA)">
<!ELEMENT %CNXML.firstname.qname; %CNXML.firstname.content;>
          <!ATTLIST %CNXML.firstname.qname; %CNXML.xmlns.attrib;>

<!ENTITY % CNXML.othername.content "(#PCDATA)">
<!ELEMENT %CNXML.othername.qname; %CNXML.othername.content;>
          <!ATTLIST %CNXML.othername.qname; %CNXML.xmlns.attrib;>

<!ENTITY % CNXML.surname.content "(#PCDATA)">
<!ELEMENT %CNXML.surname.qname; %CNXML.surname.content;>
          <!ATTLIST %CNXML.surname.qname; %CNXML.xmlns.attrib;>

<!ENTITY % CNXML.lineage.content "(#PCDATA)">
<!ELEMENT %CNXML.lineage.qname; %CNXML.lineage.content;>
          <!ATTLIST %CNXML.lineage.qname; %CNXML.xmlns.attrib;>

<!ENTITY % CNXML.email.content "(#PCDATA)">
<!ELEMENT %CNXML.email.qname; %CNXML.email.content;>
          <!ATTLIST %CNXML.email.qname; %CNXML.xmlns.attrib;>

<!ENTITY % CNXML.cite.content "(#PCDATA|%CNXML.emphasis.qname;)*">
<!ELEMENT %CNXML.cite.qname; %CNXML.cite.content;>
          <!ATTLIST %CNXML.cite.qname; %CNXML.xmlns.attrib;>

<!ENTITY % CNXML.keywordlist.content "(%CNXML.keyword.qname;)+">
<!ELEMENT %CNXML.keywordlist.qname; %CNXML.keywordlist.content;>
          <!ATTLIST %CNXML.keywordlist.qname; %CNXML.xmlns.attrib;>

<!ENTITY % CNXML.keyword.content "(#PCDATA)">
<!ELEMENT %CNXML.keyword.qname; %CNXML.keyword.content;>
          <!ATTLIST %CNXML.keyword.qname; %CNXML.xmlns.attrib;>

<!ENTITY % CNXML.section.content "(%CNXML.name.qname;, (%CNXML.section.qname;|%CNXML.definition.qname;|%CNXML.para.qname;|%CNXML.equation.qname;|%CNXML.list.qname;|%CNXML.codeblock.qname;|%CNXML.figure.qname;|%CNXML.table.qname;|%CNXML.example.qname;|%CNXML.exercise.qname;|%CNXML.rule.qname;)+)">
<!ELEMENT %CNXML.section.qname; %CNXML.section.content;>
          <!ATTLIST %CNXML.section.qname; %CNXML.xmlns.attrib;>
	  <!ATTLIST %CNXML.section.qname; id ID #REQUIRED>

<!ENTITY % CNXML.para.content "(#PCDATA|%CNXML.emphasis.qname;|%CNXML.list.qname;|%CNXML.cnxn.qname;|%CNXML.link.qname;|%CNXML.equation.qname;|%CNXML.cite.qname;|%CNXML.definition.qname;|%CNXML.codeline.qname;|%CNXML.term.qname;|%CNXML.note.qname;|%CNXML.rule.qname;)*">
<!ELEMENT %CNXML.para.qname; %CNXML.para.content;>
          <!ATTLIST %CNXML.para.qname; %CNXML.xmlns.attrib;>
	  <!ATTLIST %CNXML.para.qname; id ID #REQUIRED>

<!ENTITY % CNXML.cnxn.content "(#PCDATA)">
<!ELEMENT %CNXML.cnxn.qname; %CNXML.cnxn.content;>
          <!ATTLIST %CNXML.cnxn.qname; %CNXML.xmlns.attrib;>
          <!ATTLIST %CNXML.cnxn.qname; target  CDATA #IMPLIED>
          <!ATTLIST %CNXML.cnxn.qname; module  CDATA #IMPLIED>
          <!ATTLIST %CNXML.cnxn.qname; version CDATA #IMPLIED>
          <!ATTLIST %CNXML.cnxn.qname; strength (0|1|2|3|4|5|6|7|8|9) #REQUIRED>

<!ENTITY % CNXML.link.content "(#PCDATA)">
<!ELEMENT %CNXML.link.qname; %CNXML.link.content;>
          <!ATTLIST %CNXML.link.qname; %CNXML.xmlns.attrib;>
          <!ATTLIST %CNXML.link.qname; src CDATA #REQUIRED>

<!ENTITY % CNXML.equation.content "((%CNXML.name.qname;)?)">
<!ELEMENT %CNXML.equation.qname; %CNXML.equation.content;>
          <!ATTLIST %CNXML.equation.qname; %CNXML.xmlns.attrib;>
	  <!ATTLIST %CNXML.equation.qname; id ID #REQUIRED>

<!ENTITY % CNXML.note.content "(#PCDATA|%CNXML.emphasis.qname;|%CNXML.link.qname;|%CNXML.cnxn.qname;|%CNXML.cite.qname;|%CNXML.codeline.qname;|%CNXML.term.qname;)*">
<!ELEMENT %CNXML.note.qname; %CNXML.note.content;>
          <!ATTLIST %CNXML.note.qname; %CNXML.xmlns.attrib;>
          <!ATTLIST %CNXML.note.qname; type CDATA #IMPLIED>

<!ENTITY % CNXML.emphasis.content "(#PCDATA)">
<!ELEMENT %CNXML.emphasis.qname; %CNXML.emphasis.content;>
          <!ATTLIST %CNXML.emphasis.qname; %CNXML.xmlns.attrib;>

<!ENTITY % CNXML.list.content "(%CNXML.item.qname;)+">
<!ELEMENT %CNXML.list.qname; %CNXML.list.content;>
          <!ATTLIST %CNXML.list.qname; %CNXML.xmlns.attrib;>
          <!ATTLIST %CNXML.list.qname; id ID #REQUIRED>
          <!ATTLIST %CNXML.list.qname; type (enumerated | bulleted) "bulleted">

<!ENTITY % CNXML.item.content "(#PCDATA|%CNXML.cnxn.qname;|%CNXML.link.qname;|%CNXML.cite.qname;|%CNXML.definition.qname;|%CNXML.codeline.qname;|%CNXML.emphasis.qname;|%CNXML.list.qname;|%CNXML.term.qname;|%CNXML.note.qname;|%CNXML.rule.qname;)*">
<!ELEMENT %CNXML.item.qname; %CNXML.item.content;>
          <!ATTLIST %CNXML.item.qname; %CNXML.xmlns.attrib;>
          <!ATTLIST %CNXML.item.qname; id ID #IMPLIED>

<!ENTITY % CNXML.codeblock.content "(#PCDATA|%CNXML.cnxn.qname;|%CNXML.link.qname;|%CNXML.emphasis.qname;)*">
<!ELEMENT %CNXML.codeblock.qname; %CNXML.codeblock.content;>
          <!ATTLIST %CNXML.codeblock.qname; %CNXML.xmlns.attrib;>
          <!ATTLIST %CNXML.codeblock.qname; id ID #IMPLIED>

<!ENTITY % CNXML.codeline.content "(#PCDATA|%CNXML.cnxn.qname;|%CNXML.link.qname;|%CNXML.emphasis.qname;)*">
<!ELEMENT %CNXML.codeline.qname; %CNXML.codeline.content;>
          <!ATTLIST %CNXML.codeline.qname; %CNXML.xmlns.attrib;>

<!ENTITY % CNXML.media.content "EMPTY">
<!ELEMENT %CNXML.media.qname; %CNXML.media.content;>
          <!ATTLIST %CNXML.media.qname; %CNXML.xmlns.attrib;>
          <!ATTLIST %CNXML.media.qname; type CDATA #REQUIRED>
          <!ATTLIST %CNXML.media.qname; src CDATA #REQUIRED>

<!ENTITY % CNXML.figure.content "((%CNXML.name.qname;)?, ((%CNXML.subfigure.qname;, (%CNXML.subfigure.qname;)+)|%CNXML.media.qname;|%CNXML.table.qname;|%CNXML.codeblock.qname;), (%CNXML.caption.qname;)?)">
<!ELEMENT %CNXML.figure.qname; %CNXML.figure.content;>
          <!ATTLIST %CNXML.figure.qname; %CNXML.xmlns.attrib;>
	  <!ATTLIST %CNXML.figure.qname; id ID #REQUIRED>
          <!ATTLIST %CNXML.figure.qname; orient (vertical|horizontal) "horizontal">

<!ENTITY % CNXML.subfigure.content "((%CNXML.name.qname;)?, (%CNXML.media.qname;|%CNXML.table.qname;|%CNXML.codeblock.qname;), (%CNXML.caption.qname;)?)">
<!ELEMENT %CNXML.subfigure.qname; %CNXML.subfigure.content;>
          <!ATTLIST %CNXML.subfigure.qname; %CNXML.xmlns.attrib;>
          <!ATTLIST %CNXML.subfigure.qname; id ID #IMPLIED>

<!ENTITY % CNXML.caption.content "(#PCDATA|%CNXML.cnxn.qname;|%CNXML.codeline.qname;|%CNXML.link.qname;|%CNXML.emphasis.qname;)*">
<!ELEMENT %CNXML.caption.qname; %CNXML.caption.content;>
          <!ATTLIST %CNXML.caption.qname; %CNXML.xmlns.attrib;>


<!ENTITY % CNXML.categories.content "((%CNXML.category.qname;)+)">
<!ELEMENT %CNXML.categories.qname; %CNXML.categories.content;>
          <!ATTLIST %CNXML.categories.qname; %CNXML.xmlns.attrib;>

<!ENTITY % CNXML.category.content "(#PCDATA)">
<!ELEMENT %CNXML.category.qname; %CNXML.category.content;>
          <!ATTLIST %CNXML.category.qname; %CNXML.xmlns.attrib;>
          <!ATTLIST %CNXML.category.qname; desc ID #REQUIRED>

<!ENTITY % CNXML.group.content "((%CNXML.elem.qname;)+)">
<!ELEMENT %CNXML.group.qname; %CNXML.group.content;>
          <!ATTLIST %CNXML.group.qname; %CNXML.xmlns.attrib;>

<!ENTITY % CNXML.elem.content "(#PCDATA|%CNXML.cnxn.qname;|%CNXML.link.qname;|%CNXML.cite.qname;|%CNXML.codeblock.qname;|%CNXML.emphasis.qname;)*">
<!ELEMENT %CNXML.elem.qname; %CNXML.elem.content;>
          <!ATTLIST %CNXML.elem.qname; %CNXML.xmlns.attrib;>
          <!ATTLIST %CNXML.elem.qname; id ID #IMPLIED>
          <!ATTLIST %CNXML.elem.qname; desc IDREF #REQUIRED>

<!ENTITY % CNXML.example.content "((%CNXML.name.qname;)?, (%CNXML.para.qname;|%CNXML.equation.qname;|%CNXML.list.qname;|%CNXML.codeblock.qname;|%CNXML.figure.qname;|%CNXML.table.qname;)+)">
<!ELEMENT %CNXML.example.qname; %CNXML.example.content;>
          <!ATTLIST %CNXML.example.qname; %CNXML.xmlns.attrib;>
          <!ATTLIST %CNXML.example.qname; id ID #REQUIRED>       

<!ENTITY % CNXML.exercise.content "(%CNXML.problem.qname;, %CNXML.solution.qname;)">
<!ELEMENT %CNXML.exercise.qname; %CNXML.exercise.content;>
          <!ATTLIST %CNXML.exercise.qname; %CNXML.xmlns.attrib;>
          <!ATTLIST %CNXML.exercise.qname; id ID #REQUIRED>

<!ENTITY % CNXML.problem.content "(%CNXML.cite.qname;|%CNXML.definition.qname;|%CNXML.para.qname;|%CNXML.equation.qname;|%CNXML.list.qname;|%CNXML.codeblock.qname;|%CNXML.figure.qname;|%CNXML.table.qname;|%CNXML.rule.qname;)+">
<!ELEMENT %CNXML.problem.qname; %CNXML.problem.content;>
          <!ATTLIST %CNXML.problem.qname; %CNXML.xmlns.attrib;>

<!ENTITY % CNXML.solution.content "(%CNXML.cite.qname;|%CNXML.para.qname;|%CNXML.equation.qname;|%CNXML.list.qname;|%CNXML.codeblock.qname;|%CNXML.figure.qname;|%CNXML.table.qname;)+">
<!ELEMENT %CNXML.solution.qname; %CNXML.solution.content;>
          <!ATTLIST %CNXML.solution.qname; %CNXML.xmlns.attrib;>

<!ENTITY % CNXML.abstract.content "(#PCDATA|%CNXML.codeline.qname;|%CNXML.emphasis.qname;)*">
<!ELEMENT %CNXML.abstract.qname; %CNXML.abstract.content;>
          <!ATTLIST %CNXML.abstract.qname; %CNXML.xmlns.attrib;>

<!ENTITY % CNXML.objectives.content "(#PCDATA|%CNXML.codeline.qname;|%CNXML.emphasis.qname;|%CNXML.list.qname;)*">
<!ELEMENT %CNXML.objectives.qname; %CNXML.objectives.content;>
          <!ATTLIST %CNXML.objectives.qname; %CNXML.xmlns.attrib;>

<!ENTITY % CNXML.definition.content "(%CNXML.term.qname;, (%CNXML.meaning.qname;, (%CNXML.example.qname;)*)+)">
<!ELEMENT %CNXML.definition.qname; %CNXML.definition.content;>
          <!ATTLIST %CNXML.definition.qname; %CNXML.xmlns.attrib;>
          <!ATTLIST %CNXML.definition.qname; id ID #REQUIRED>

<!ENTITY % CNXML.term.content "(#PCDATA|%CNXML.codeline.qname;)*">
<!ELEMENT %CNXML.term.qname; %CNXML.term.content;>
          <!ATTLIST %CNXML.term.qname; %CNXML.xmlns.attrib;>

<!ENTITY % CNXML.meaning.content "(#PCDATA|%CNXML.codeline.qname;|%CNXML.emphasis.qname;|%CNXML.cite.qname;|%CNXML.link.qname;|%CNXML.cnxn.qname;|%CNXML.equation.qname;)*">
<!ELEMENT %CNXML.meaning.qname; %CNXML.meaning.content;>
          <!ATTLIST %CNXML.meaning.qname; %CNXML.xmlns.attrib;>

<!ENTITY % CNXML.rule.content "((%CNXML.name.qname;)?, (%CNXML.statement.qname;)+, (%CNXML.proof.qname;|%CNXML.example.qname;)*)">
<!ELEMENT %CNXML.rule.qname; %CNXML.rule.content;>
          <!ATTLIST %CNXML.rule.qname; %CNXML.xmlns.attrib;>
          <!ATTLIST %CNXML.rule.qname; id ID #REQUIRED>
          <!ATTLIST %CNXML.rule.qname; type CDATA #REQUIRED>

<!ENTITY % CNXML.statement.content "(%CNXML.para.qname;|%CNXML.equation.qname;)+">
<!ELEMENT %CNXML.statement.qname; %CNXML.statement.content;>
          <!ATTLIST %CNXML.statement.qname; %CNXML.xmlns.attrib;>
          <!ATTLIST %CNXML.statement.qname; id ID #IMPLIED>

<!ENTITY % CNXML.proof.content "((%CNXML.name.qname;)?, (%CNXML.rule.qname;|%CNXML.para.qname;|%CNXML.equation.qname;|%CNXML.figure.qname;|%CNXML.list.qname;)+)">
<!ELEMENT %CNXML.proof.qname; %CNXML.proof.content;>
          <!ATTLIST %CNXML.proof.qname; %CNXML.xmlns.attrib;>
          <!ATTLIST %CNXML.proof.qname; id ID #IMPLIED>


<!-- Bring in MathML elements  -->
<!ENTITY % mathml.mod PUBLIC "-//W3C//DTD MathML 2.0//EN" "mathml2.dtd">
%mathml.mod;

<!-- Bring in QML elements  -->
<!ENTITY % qml.mod PUBLIC "-//CNX//ELEMENTS QML 1.0 Elements//EN" "qml1.mod">
%qml.mod;


<!-- CALS Table -->

<!ENTITY % CNXML.table.qname        "%CNXML.pfx;table">
<!ENTITY % CNXML.tgroup.qname       "%CNXML.pfx;tgroup" >
<!ENTITY % CNXML.colspec.qname      "%CNXML.pfx;colspec" >
<!ENTITY % CNXML.spanspec.qname     "%CNXML.pfx;spanspec" >
<!ENTITY % CNXML.thead.qname        "%CNXML.pfx;thead" >
<!ENTITY % CNXML.tfoot.qname        "%CNXML.pfx;tfoot" >
<!ENTITY % CNXML.tbody.qname        "%CNXML.pfx;tbody" >
<!ENTITY % CNXML.row.qname          "%CNXML.pfx;row" >
<!ENTITY % CNXML.entrytbl.qname     "%CNXML.pfx;entrytbl" >
<!ENTITY % CNXML.entry.qname        "%CNXML.pfx;entry" >

<!-- These definitions are not directly related to the table model,
but are used in the default CALS table model and are usually defined
elsewhere (and prior to the inclusion of this table module) in a CALS
DTD.  -->

<!ENTITY % bodyatt "">
<!ENTITY % secur "">

<!-- no if zero(s), yes if any other digits value -->

<!ENTITY % yesorno 'CDATA'>

<!--
The parameter entities as defined below provide the CALS table model
as published (as part of the Example DTD) in MIL-HDBK-28001.

These following declarations provide the CALS-compliant default definitions
for these entities.  However, these entities can and should be redefined
(by giving the appropriate parameter entity declaration(s) prior to the
reference to this Table Model declaration set entity) to fit the needs
of the current application.
-->

<!ENTITY % CNXML.table.name       "%CNXML.table.qname;">
<!ENTITY % CNXML.table-main.mdl   "%CNXML.tgroup.qname;+">
<!ENTITY % CNXML.table.mdl        "%CNXML.name.qname;?, %CNXML.table-main.mdl;">
<!ENTITY % CNXML.table.att        '
    id		ID		#REQUIRED       
    tabstyle    CDATA           #IMPLIED
    tocentry    %yesorno;       #IMPLIED
    shortentry  %yesorno;       #IMPLIED
    orient      (port|land)     #IMPLIED
    pgwide      %yesorno;       #IMPLIED '>
<!ENTITY % CNXML.tgroup.mdl       "%CNXML.colspec.qname;*,%CNXML.spanspec.qname;*,%CNXML.thead.qname;?,%CNXML.tfoot.qname;?,%CNXML.tbody.qname;">
<!ENTITY % CNXML.tgroup.att       'tgroupstyle CDATA #IMPLIED'>
<!ENTITY % CNXML.hdft.mdl         "%CNXML.colspec.qname;*,%CNXML.row.qname;+">
<!ENTITY % CNXML.row.mdl          "(%CNXML.entry.qname;|%CNXML.entrytbl.qname;)+">
<!ENTITY % CNXML.entrytbl.mdl     "%CNXML.colspec.qname;*,%CNXML.spanspec.qname;*,%CNXML.thead.qname;?,%CNXML.tbody.qname;">

<!ENTITY % CNXML.textlike '#PCDATA|%CNXML.emphasis.qname;|%CNXML.codeline.qname;|%CNXML.term.qname;|%CNXML.cite.qname;|%CNXML.cnxn.qname;|%CNXML.link.qname;|%math.qname;'>

<!ENTITY % CNXML.entry.mdl        "(%CNXML.textlike;|%CNXML.media.qname;)*">

<!-- =====  Element and attribute declarations follow. =====  -->

<!ELEMENT %CNXML.table.qname; (%CNXML.table.mdl;)>

<!ATTLIST %CNXML.table.qname;
        frame           (top|bottom|topbot|all|sides|none)      #IMPLIED
        colsep          %yesorno;                               #IMPLIED
        rowsep          %yesorno;                               #IMPLIED
        %CNXML.table.att;
        %bodyatt;
        %secur;
>

<!ELEMENT %CNXML.tgroup.qname; (%CNXML.tgroup.mdl;) >

<!ATTLIST %CNXML.tgroup.qname;
        cols            CDATA                                   #REQUIRED
        %CNXML.tgroup.att;
        colsep          %yesorno;                               #IMPLIED
        rowsep          %yesorno;                               #IMPLIED
        align           (left|right|center|justify|char)        #IMPLIED
        char            CDATA                                   #IMPLIED
        charoff         CDATA                                   #IMPLIED
        %secur;
>

<!ELEMENT %CNXML.colspec.qname; EMPTY >

<!ATTLIST %CNXML.colspec.qname;
        colnum          CDATA                                   #IMPLIED
        colname         CDATA                                   #IMPLIED
        colwidth        CDATA                                   #IMPLIED
        colsep         	%yesorno;                               #IMPLIED
        rowsep          %yesorno;                               #IMPLIED
        align           (left|right|center|justify|char)        #IMPLIED
        char            CDATA                                   #IMPLIED
        charoff         CDATA                                   #IMPLIED
>

<!ELEMENT %CNXML.spanspec.qname; EMPTY >

<!ATTLIST %CNXML.spanspec.qname;
        namest         	CDATA                                   #REQUIRED
        nameend         CDATA                                   #REQUIRED
        spanname        CDATA                                   #REQUIRED
        colsep          %yesorno;                               #IMPLIED
        rowsep          %yesorno;                               #IMPLIED
        align           (left|right|center|justify|char)        #IMPLIED
        char            CDATA                                   #IMPLIED
        charoff         CDATA                                   #IMPLIED
>

<!ELEMENT %CNXML.thead.qname; (%CNXML.hdft.mdl;)>
<!ATTLIST %CNXML.thead.qname;
        valign          (top|middle|bottom)                     #IMPLIED
        %secur;
>

<!ELEMENT %CNXML.tfoot.qname; (%CNXML.hdft.mdl;)>
<!ATTLIST %CNXML.tfoot.qname;
        valign          (top|middle|bottom)                     #IMPLIED
        %secur;
>

<!ELEMENT %CNXML.tbody.qname; (row+)>

<!ATTLIST %CNXML.tbody.qname;
        valign          (top|middle|bottom)                     #IMPLIED
        %secur;
>

<!ELEMENT %CNXML.row.qname; (%CNXML.row.mdl;)>

<!ATTLIST %CNXML.row.qname;
        rowsep          %yesorno;                               #IMPLIED
        valign          (top|middle|bottom)                     #IMPLIED
        %secur;
>

<!ELEMENT %CNXML.entrytbl.qname; (%CNXML.entrytbl.mdl;)>

<!ATTLIST %CNXML.entrytbl.qname;
        cols            CDATA                                   #REQUIRED
        %CNXML.tgroup.att;
        colname         CDATA                                   #IMPLIED
        spanname        CDATA                                   #IMPLIED
        namest          CDATA                                   #IMPLIED
        nameend        	CDATA                                   #IMPLIED
        colsep          %yesorno;                               #IMPLIED
        rowsep          %yesorno;                               #IMPLIED
        align           (left|right|center|justify|char)        #IMPLIED
        char            CDATA                                   #IMPLIED
        charoff         CDATA                                   #IMPLIED
        %secur;
>

<!ELEMENT %CNXML.entry.qname; %CNXML.entry.mdl; >

<!ATTLIST %CNXML.entry.qname;
        colname         CDATA                                   #IMPLIED
        namest          CDATA                                   #IMPLIED
        nameend         CDATA                                   #IMPLIED
        spanname        CDATA                                   #IMPLIED
        morerows        CDATA                                   #IMPLIED
        colsep          %yesorno;                               #IMPLIED
        rowsep          %yesorno;                               #IMPLIED
        align           (left|right|center|justify|char)        #IMPLIED
        char            CDATA                                   #IMPLIED
        charoff         CDATA                                   #IMPLIED
        rotate          %yesorno;                               #IMPLIED
        valign          (top|middle|bottom)                     #IMPLIED
        %secur;
>