<?xml version="1.0" encoding="iso-8859-1"?>

<!--  ================================================  -->
<!--  ================================================  -->
<!--  ================================================

     TeXML DTD  by Stefan Unterstein ("StUs")

     This is a reformulation of IBM's alphaWorks TeXML (Douglas Lovell)
                             at http://www.alphaworks.ibm.com/tech/texml
							 cf http://www.tug.org/TUG99-web/pdf/lovell.pdf

     fpi:    "-//StUs//DTD TeXML//EN"
     uri:    "http://www.unterstein.net/ML/TeXML.dtd"

     <TeXML xmlns="http://www.unterstein.net/ML/TeXML"> ... </TeXML>

     related styles+scripts+modules
             http://www.unterstein.net/ML/TeXML2TeX.xsl TeXML/XSLTransform to TeX-code
             http://www.unterstein.net/ML/TeXML.css     TeXML/CSS-2: (some) LaTeX look-alike
             http://www.unterstein.net/ML/TeXML-HTpre.xsl     TeXML/XSLTransform to TeX-code
                                                              wrapped into xHTML/pre
             http://www.unterstein.net/ML/TeXML.js      DOM/EcmaScript Interfaces to TeXML
                                                        incl. load/unload-events
             http://www.unterstein.net/ML/entitags.xml  incl. by TeXML2TeX.xsl and others
														database for iso-entities as tags (empty elements)
             http://www.unterstein.net/ML/entitagX.xml  XSLTransform entitags to JS/CSS-2,-3
             http://www.unterstein.net/ML/entitags.css  incl. by TeXML.css
             http://www.unterstein.net/ML/entitags.mod  incl. by TeXML.dtd


     example documents
             http://www.unterstein.net/ML/TeXML.xml              with CSS2: local.css+TeXML.css
             http://www.unterstein.net/ML/TeXML-texmlxsl.xml     with XSLT: TeXML2TeX.xsl
             http://www.unterstein.net/ML/TeXML-xhtmlpre.html    with Saxon: TeXML-HTpre.xsl
             http://www.unterstein.net/ML/TeXML-treeview.html    with Saxon: treeview.xsl
             http://www.unterstein.net/ML/TeXML-codeview.html    with SciTE: export as html
             http://www.unterstein.net/ML/TeXML-nostyles.xml     without Stylesheets

      ================================================  -->
<!--  ================================================  -->
<!--  ================================================  -->

<!--  xml: 

	implicitly bound 				cf. "http://www.w3.org/TR/xml11/"
	
	<!ENTITY % XML-NAMES.xmlns          "http://www.w3.org/XML/1998/namespace" >
	<!ENTITY % XML-NAMES.prefix         "xml" >  

-->

<!ENTITY % XML-ID.id                "xml:id ID #IMPLIED" >
<!ENTITY % XML-BASE.uri             "xml:base CDATA #IMPLIED" >
<!ENTITY % XML-LANG.i18n            "xml:lang NMTOKEN #IMPLIED" >
<!ENTITY % XML-SPACE.preserve       "xml:space (preserve) #FIXED 'preserve'" >

<!ENTITY % ID.dtdefined             "INCLUDE" >
<![%ID.dtdefined;
    [
    <!ENTITY % ID-ENTITY.attr       "id ID #IMPLIED" >
    ]]>
    <!ENTITY % ID-ENTITY.attr       "" >

<!--  ================================================  -->
<!--  ================================================  -->
<!--  ================================================

       INCLUDEs in a somehow w3c-module-style
       xhtml/xlink/event namespaces and attributes
       currently used:
            xhtml for <xhtml:a/>
                      <xhtml:hr/>
                      <xhtml:img/>
					  <xhtml:span/>
                      <xhtml:script/>
					  <xhtml:title/>
                      <xhtml:table/>
					  <xhtml:thead/>
					  <xhtml:tbody/>
					  <xhtml:tfoot/>
					  <xhtml:tr/>
					  <xhtml:th/>
					  <xhtml:td/>
                      <TeXML xhtml:onload=""/>
            xlink for xlink:*able TeXML-elements <cmd/> <env/> <x/>

      ================================================  -->
<!--  ================================================  -->

<!ENTITY % NS.imported              "INCLUDE" >

<!--  ================================================

<![%NS.imported;[ <!ENTITY % XMLNS.mod SYSTEM "XMLNS.mod">  %XMLNS.mod; ]]>

      ================================================  -->
<!--                      XMLNS.mod                     -->

<!ENTITY % NS.prefixed              "%NS.imported;" >

<!ENTITY % XML-XHTML.prefixed       "%NS.prefixed;" >
<!ENTITY % XML-XHTML.xmlns          "http://www.w3.org/1999/xhtml" >
<!ENTITY % XML-XHTML.prefix         "xhtml" >
<![%XML-XHTML.prefixed;
    [
    <!ENTITY % XML-XHTML.pfx        "%XML-XHTML.prefix;:" >
    <!ENTITY % XML-XHTML.xmlns.attr "xmlns:%XML-XHTML.prefix; CDATA #FIXED '%XML-XHTML.xmlns;'" >
    <!ENTITY % XHT-QNAME.a          "%XML-XHTML.pfx;a" >
    <!ENTITY % XHT-QNAME.hr         "%XML-XHTML.pfx;hr" >
    <!ENTITY % XHT-QNAME.img        "%XML-XHTML.pfx;img" >
    <!ENTITY % XHT-QNAME.span       "%XML-XHTML.pfx;span" >
    <!ENTITY % XHT-QNAME.script     "%XML-XHTML.pfx;script" >
    <!ENTITY % XHT-QNAME.title      "%XML-XHTML.pfx;title" >
    <!ENTITY % XHT-QNAME.table      "%XML-XHTML.pfx;table" >
    <!ENTITY % XHT-QNAME.thead      "%XML-XHTML.pfx;thead" >
    <!ENTITY % XHT-QNAME.tbody      "%XML-XHTML.pfx;tbody" >
    <!ENTITY % XHT-QNAME.tfoot      "%XML-XHTML.pfx;tfoot" >
    <!ENTITY % XHT-QNAME.tr         "%XML-XHTML.pfx;tr" >
    <!ENTITY % XHT-QNAME.th         "%XML-XHTML.pfx;th" >
    <!ENTITY % XHT-QNAME.td         "%XML-XHTML.pfx;td" >
    <!ENTITY % XML-XHTML.contentity "
						|%XHT-QNAME.a;
						|%XHT-QNAME.hr;
						|%XHT-QNAME.img;
						|%XHT-QNAME.span;
						|%XHT-QNAME.script;
						|%XHT-QNAME.title;
						|%XHT-QNAME.table;
						|%XHT-QNAME.thead;
						|%XHT-QNAME.tbody;
						|%XHT-QNAME.tfoot;
						|%XHT-QNAME.tr;
						|%XHT-QNAME.th;
						|%XHT-QNAME.td;
						" >
	<!ELEMENT %XHT-QNAME.a;		  ANY >
	<!ELEMENT %XHT-QNAME.hr;	EMPTY >
	<!ELEMENT %XHT-QNAME.img;	EMPTY >
	<!ELEMENT %XHT-QNAME.span;	  ANY >
	<!ELEMENT %XHT-QNAME.script;  ANY >
	<!ELEMENT %XHT-QNAME.title;	  ANY >
	<!ELEMENT %XHT-QNAME.table;	  ANY >
	<!ELEMENT %XHT-QNAME.thead;	  ANY >
	<!ELEMENT %XHT-QNAME.tbody;	  ANY >
	<!ELEMENT %XHT-QNAME.tr;	  ANY >
	<!ELEMENT %XHT-QNAME.th;	  ANY >
	<!ELEMENT %XHT-QNAME.td;	  ANY >
    ]]>
    <!ENTITY % XML-XHTML.xmlns.attr "" >
    <!ENTITY % XML-XHTML.contentity "" >


<!ENTITY % XHT-EVENT.prefixed       "%XML-XHTML.prefixed;" >
<!ENTITY % XHT-EVENT.xmlns          "%XML-XHTML.xmlns;" >
<!ENTITY % XHT-EVENT.prefix         "%XML-XHTML.prefix;" >
<![%XHT-EVENT.prefixed;
    [
    <!ENTITY % XHT-EVENT.pfx        "%XHT-EVENT.prefix;:" >
    <!ENTITY % XHT-EVENT.attributes "
                        %XHT-EVENT.pfx;onclick       CDATA      #IMPLIED
                        %XHT-EVENT.pfx;ondblclick    CDATA      #IMPLIED
                        %XHT-EVENT.pfx;onmousedown   CDATA      #IMPLIED
                        %XHT-EVENT.pfx;onmouseup     CDATA      #IMPLIED
                        %XHT-EVENT.pfx;onmouseover   CDATA      #IMPLIED
                        %XHT-EVENT.pfx;onmousemove   CDATA      #IMPLIED
                        %XHT-EVENT.pfx;onmouseout    CDATA      #IMPLIED
                        %XHT-EVENT.pfx;onkeypress    CDATA      #IMPLIED
                        %XHT-EVENT.pfx;onkeydown     CDATA      #IMPLIED
                        %XHT-EVENT.pfx;onkeyup       CDATA      #IMPLIED
                       ">
    <!ENTITY % XHT-EVENT.onload "
                        %XHT-EVENT.pfx;onload        CDATA      #IMPLIED
                        %XHT-EVENT.pfx;onunload      CDATA      #IMPLIED
                       ">
    ]]>
    <!ENTITY % XHT-EVENT.attributes "" >
    <!ENTITY % XHT-EVENT.onload     "" >


<!ENTITY % XML-XLINK.prefixed       "%NS.prefixed;" >
<!ENTITY % XML-XLINK.xmlns          "http://www.w3.org/1999/xlink" >
<!ENTITY % XML-XLINK.prefix         "xlink" >
<![%XML-XLINK.prefixed;
    [
    <!ENTITY % XML-XLINK.pfx        "%XML-XLINK.prefix;:" >
    <!ENTITY % XML-XLINK.xmlns.attr "xmlns:%XML-XLINK.prefix; CDATA #FIXED '%XML-XLINK.xmlns;'" >
    <!ENTITY % XML-XLINK.attributes "
                        %XML-XLINK.pfx;type     (simple
                                                |extended
                                                |locator
                                                |arc
                                                |resource
                                                |title
                                                |none)          #IMPLIED
                        %XML-XLINK.pfx;href     CDATA           #IMPLIED
                        %XML-XLINK.pfx;role     CDATA           #IMPLIED
                        %XML-XLINK.pfx;arcrole  CDATA           #IMPLIED
                        %XML-XLINK.pfx;title    CDATA           #IMPLIED
                        %XML-XLINK.pfx;show     (new
                                                |replace
                                                |embed
                                                |other
                                                |none)          #IMPLIED
                        %XML-XLINK.pfx;actuate  (onLoad
                                                |onRequest
                                                |other
                                                |none)          #IMPLIED
                        %XML-XLINK.pfx;label    NMTOKEN         #IMPLIED
                        %XML-XLINK.pfx;from     NMTOKEN         #IMPLIED
                        %XML-XLINK.pfx;to       NMTOKEN         #IMPLIED
                       ">
    ]]>
    <!ENTITY % XML-XLINK.xmlns.attr "" >
    <!ENTITY % XML-XLINK.attributes "" >


<!ENTITY % XML-EVENT.prefixed       "%NS.prefixed;" >
<!ENTITY % XML-EVENT.xmlns          "http://www.w3.org/2001/xml-events" >
<!ENTITY % XML-EVENT.prefix         "event" >
<![%XML-EVENT.prefixed;
    [
    <!ENTITY % XML-EVENT.pfx        "%XML-XHTML.prefix;:" >
    <!ENTITY % XML-EVENT.xmlns.attr "xmlns:%XML-EVENT.prefix; CDATA #FIXED '%XML-EVENT.xmlns;'" >
    <!ENTITY % XML-EVENT.attributes "
                        %XML-EVENT.pfx;event         NMTOKEN             #IMPLIED
                        %XML-EVENT.pfx;observer      IDREF               #IMPLIED
                        %XML-EVENT.pfx;target        IDREF               #IMPLIED
                        %XML-EVENT.pfx;handler       CDATA               #IMPLIED
                        %XML-EVENT.pfx;phase         (capture|default)   #IMPLIED
                        %XML-EVENT.pfx;propagate     (stop|continue)     #IMPLIED
                        %XML-EVENT.pfx;defaultAction (cancel|perform)    #IMPLIED
                       ">
    ]]>
    <!ENTITY % XML-EVENT.xmlns.attr "" >
    <!ENTITY % XML-EVENT.attributes "" >


<!--  ================================================  -->
<!--  entitags.mod 2003-12-21                           -->

<!ENTITY % ENTITY-EL.prefixed       "%NS.prefixed;" >
<!ENTITY % ENTITY-EL.xmlns          "urn:entitags:entity-as-empty-element-tag" >
<!ENTITY % ENTITY-EL.prefix         "ent" >
<![%ENTITY-EL.prefixed;
    [
    <!ENTITY % ENTITY-EL.pfx        "%ENTITY-EL.prefix;:" >
    <!ENTITY % ENTITY-EL.xmlns.attr "xmlns:%ENTITY-EL.prefix; CDATA #FIXED '%ENTITY-EL.xmlns;'" >
    <!ENTITY % ENTITAGS.mod SYSTEM "entitags.mod"> %ENTITAGS.mod;
	]]>
    <!ENTITY % ENTITY-EL.xmlns.attr "" >
    <!ENTITY % ENTITY-EL.entitytags "" >

<!--  entitags.mod 2003-12-21                           -->
<!--  ================================================  -->

<!--  ================================================  -->
<!--  http://www.w3.org/TR/xinclude/ 2004-05-26         -->

<!ENTITY % X-Include.prefixed       "%NS.prefixed;" >
<!ENTITY % X-Include.xmlns          "http://www.w3.org/2001/XInclude" >
<!ENTITY % X-Include.prefix         "xi" >
<![%X-Include.prefixed;
    [
    <!ENTITY % X-Include.pfx        "%X-Include.prefix;:" >
    <!ENTITY % X-Include.xmlns.attr "xmlns:%X-Include.prefix; CDATA #FIXED '%X-Include.xmlns;'" >
    <!ENTITY % X-Inc-QNAME.include  "%X-Include.pfx;include" >
    <!ENTITY % X-Inc-QNAME.fallback "%X-Include.pfx;fallback" >
	<!ELEMENT %X-Inc-QNAME.include; (%X-Inc-QNAME.fallback;)? >
	<!ATTLIST %X-Inc-QNAME.include;  %X-Include.xmlns.attr;
					href             CDATA       #IMPLIED
					parse            (xml|text)  "xml"
					xpointer         CDATA       #IMPLIED
					encoding         CDATA       #IMPLIED
					accept           CDATA       #IMPLIED
					accept-language  CDATA       #IMPLIED >
	<!ELEMENT %X-Inc-QNAME.fallback; ANY >
	<!ATTLIST %X-Inc-QNAME.fallback; %X-Include.xmlns.attr; >
    <!ENTITY % X-Include.contentity "
						|%X-Inc-QNAME.include;
						|%X-Inc-QNAME.fallback;
						" >
	]]>
    <!ENTITY % X-Include.xmlns.attr "" >
    <!ENTITY % X-Include.contentity "" >

<!--  http://www.w3.org/TR/xinclude/ 2004-05-26         -->
<!--  ================================================  -->


<![%NS.imported;
    [
    <!ENTITY % contentities        "%XML-XHTML.contentity;
									%X-Include.contentity;" >
    <!ENTITY % ent-elements        "%ENTITY-EL.entitytags;" >
    ]]>
    <!ENTITY % contentities "" >
    <!ENTITY % ent-elements "" >


<!--                      XMLNS.mod                     -->
<!--  ================================================  -->
<!--  ================================================  -->
<!--  ================================================  -->
<!--                      TeXML.dtd                     -->

<!ENTITY % content "#PCDATA|TeX|cmd|env|grp|act|x|par|ANY %contentities; %ent-elements;">
<!ENTITY % contype "type (tex|xml) #IMPLIED 
					role (tex|xml) #IMPLIED 
					mode (tex|xml) #IMPLIED 
					TeXML:type (tex|xml) #IMPLIED 
					TeXML:role (tex|xml) #IMPLIED
					TeXML:mode (tex|xml) #IMPLIED">
<!ENTITY % texcore "name NMTOKEN #REQUIRED args CDATA #IMPLIED">
<!ENTITY % grpname "name NMTOKENS #IMPLIED">
<!ENTITY % xmlwrap "wrap NMTOKEN 'par'"> <!--  (doc|div|obj|toc|lof|lot|idx|glo|par)  -->
<!ENTITY % xmlcore "%ID-ENTITY.attr;
					%XML-XLINK.attributes;
					%XML-LANG.i18n;
					%XML-BASE.uri;
					to IDREF #IMPLIED">

<!--  ================================================  -->
<!--  ================================================  -->

<!ELEMENT TeXML (%content;|TeXSL)*>    <!--  TeXSL.mod  -->
<!ATTLIST TeXML
          xmlns CDATA #FIXED "http://www.unterstein.net/ML/TeXML"
          %XML-XHTML.xmlns.attr;
          %XML-XLINK.xmlns.attr;
		  %ENTITY-EL.xmlns.attr;
		  %X-Include.xmlns.attr;
          %XML-EVENT.xmlns.attr;
          %XHT-EVENT.onload;
          %XML-LANG.i18n;
		  %XML-BASE.uri;
          >
<!ELEMENT TeX (#PCDATA)>
<!ATTLIST TeX
          %XML-SPACE.preserve;
          >

<!-- Usage:

    <TeX xml:space="preserve">
    %%
    %%   TeX internals (not to display in UAs), e.g.:
    %%
    \raggedbottom
    \frenchspacing
    \pagestyle{headings}
    </TeX>

    a <![CDATA[...]]> is required if <TeX> contains verbatim XML, e.g. as TeX-comment

    <TeX xml:space="preserve"><![CDATA[
    %%
    %%   TeX \par is <cmd name="par"/>
    %%   TeX "empty line" is <par/> or empty line
    %%   TeX & XML paragraph is <x>...</x>
    %%
    ]]></TeX>

-->

<!--  ================================================  -->
<!--  Container(s) for any other XML (2004-07-07)       -->

<!ELEMENT ANY ANY>
<!ATTLIST ANY
          %contype;
          >

<!--  Container(s) for any other XML (2004-07-07)       -->
<!--  ================================================  -->

<!--  ================================================  -->
<!--  ================================================  -->

<!ELEMENT cmd  (cmd*,opt*,arg*)> <!-- new: should be fixed order, old: (opt|arg|cmd)*>  -->
<!ATTLIST cmd
          %texcore;
          %xmlcore;
          >

<!-- Usage:

    <cmd name="texname"/>
         is \texname
    <cmd name="texname" args="{}"/>
    <cmd name="texname"><arg/></cmd>
    <cmd name="texname"/><grp/>
         is \texname{}
    <cmd name="texname" args="[]{texarg}"/>
         is \texname[]{texarg}
    <cmd name="texname"><opt> optional </opt><arg> argument </arg></cmd>
         is \texname[optional]{argument}
    <cmd name="texname" args="\texname"><arg> argument </arg></cmd>
    <cmd name="texname"><cmd name="texname"><arg> argument </arg></cmd></cmd>
         is \texname\texname{argument}
         in 1st version the 2nd texname will *not* effect the UA-rendering of argument

    the value of attribute args="value" and
    the content of child-elements <opt|arg type="tex"> is always assumed TeX internal

    the value of args="value" must be TeX-conform, e.g. enclosed in [] or {} brackets
    the content of <cmd ...>content</cmd> must be enclosed in <opt|arg|cmd>-tags

    opt/arg elements see below

-->

<!--  ================================================  -->
<!--  ================================================  -->

<!ELEMENT env (%content;|opt|arg)*>
<!ATTLIST env
          %texcore;
          %xmlcore;
          bc CDATA "\begin"
          ec CDATA "\end"
          bg CDATA "{"
          eg CDATA "}"
          >

<!-- 2003/05/30 bc ec bg eg attributes+defaults added
	
		bc = begincommand
		ec = endcommand
		bg = begingroup
		eg = endgroup
	
-->

<!-- Usage:

    <env name="texname" args="[texopt]{texarg}">
         <opt> optional </opt><arg> argument </arg>
         ...
         Lorem ipsum  <cmd name="texname"><arg> dolor </arg></cmd>
         sit <grp><cmd name="texname" /> amet </grp>
         ...
         </env>

	<env name="texname" bc="\beg" bg="&lt;" eg="&gt;"> strange </env>
		is \beg<texname> strange \end<texname>

    an environment-fake without grouping the content,
    where UAs will *not* render the content between:

        <cmd name="begin" args="{texname}[texopt]{texarg}" />
             ...
        <cmd name="end" args="{texname}" />

    opt/arg elements see below

-->

<!--  ================================================  -->
<!--  ================================================  -->

<!ELEMENT opt (#PCDATA|TeX|cmd|grp|act|ANY %contentities; %ent-elements;)*>
<!ATTLIST opt
          %xmlcore;
          %contype;
          bg CDATA "["
          eg CDATA "]"
          >
<!ELEMENT arg (#PCDATA|TeX|cmd|grp|act|ANY %contentities; %ent-elements;)*>
<!ATTLIST arg
          %xmlcore;
          %contype;
          bg CDATA "{"
          eg CDATA "}"
          >
<!ELEMENT grp (%content;)*>
<!ATTLIST grp
          %xmlcore;
          %contype;
          bg CDATA "{"
          eg CDATA "}"
          %grpname;
          >

<!-- Usage:

	<opt></opt> <arg></arg>
    only inside <cmd name="texname"> ... </cmd>
         or     <env name="texname"> ... </env>    as first child-elements

    <opt type="tex"> TeX internals not to display in UAs </opt>
    <arg type="tex"> TeX internals not to display in UAs </arg>
    <grp type="tex"> TeX internals not to display in UAs </grp>

    for arguments in a "strange" order
    <cmd name="texname"><arg> lorem ipsum </arg><arg type="tex"> texarg </arg></cmd>
         is \texname{lorem ipsum}{texarg}

    <cmd name="texname"><arg>lorem ipsum</arg></cmd>
         is \texname{lorem ipsum}
    <cmd name="texname"><opt>lorem</opt><arg>ipsum</arg></cmd>
         is \texname[lorem]{ipsum}
    <cmd name="texname" args="[texopt]{texarg}"><arg>lorem</arg><arg>ipsum</arg></cmd>
         is \texname[texopt]{texarg}{lorem}{ipsum}

    <cmd name="verb"><arg bg="|" eg="|"> verbatim content </arg></cmd>
         is \verb| verbatim content |


    <grp name="texname"/>
        is {\texname}
    <grp name="texname"> content </grp>
        is {\texname content}
    <grp name="texname texname"> content </grp>
        is {\texname\texname content}
        multiple texnames (normalized by xsl) w/o arguments allowed
        in this versions UAs *can* (if styled) render texnames' content
    <grp><cmd name="texname"/> content </grp>
        is {\texname content}
        in this version texname has no associated content, so UAs *won't* render
    <grp name="texname"><grp/> content </grp>
        is {\texname{} content}
        an explicit group or space (or break after start-tag) terminates texname
	<grp bg="\begingroup" eg="\endgroup"> content <cmd name="par"/></grp><par/>
		is \begingroup content \par\endgroup^^M
	<grp name="texname" bg="\begingroup" eg="\par\endgroup"> content </grp><par/>
		is \begingroup\texname content \par\endgroup^^M

	<grp bg="$" eg="$">  mathmode-content </grp>
	<grp bg="\(" eg="\)">  mathmode-content </grp>
		 better: <env name="math"> ... </env>
		 best: MathML-Markup
	<grp bg="$$" eg="$$"> mathmode-content </grp>
	<grp bg="\[" eg="\]"> mathmode-content </grp>
		 better: <env name="displaymath">  </env>
				 <env name="equation">     </env>
				 <env name="eqnarray">     </env>
				 <env name="eqnarray*">    </env>
		 best: MathML-Markup

    <act on="\ss" as="&szlig;"/><grp />
        is \ss{} , a method to terminate short TeX commands
    <grp name="ss"/>
        is {\ss} , another method to terminate short TeX commands
    <cmd name="ss" args="\ "/>
    <cmd name="ss"/><cmd name=" "/>
        is \ss\  , other methods to terminate short TeX commands
                   but for visible effects "ss" must have content "ß" in a CSS/XSL
    <act on="&quot;s" as="&szlig;"/>
        is '"s' [german.sty: hyphenates "ß" as "s-s" and preserves hyphenation after'words']

-->

<!--  ================================================  -->
<!--  ================================================  -->

<!ELEMENT par (%content;)*>
<!ELEMENT x   (%content;)*>
<!ATTLIST x
          %xmlcore;
          %contype;
          %xmlwrap;
          >

<!-- Usage:

    <par/>
	<par> ... </par>
        is "\A" (linebreak by CSS) or "&#xA;" (CR/LF by XSL)
    <cmd name="par"/>
        is \par (TeX command by CSS or XSL)
    <grp> ... <cmd name="par"/></grp>
        is { ... \par}

    <x wrap="toc"> ... </x>
        a wrapper for content generated "by TeX", e.g. \tableofcontent
        but "made by hand" (in TeXML!) for UA's visible rendering

	<par> ... </par> is id to
    <x> ... </x>  defaults to
    <x wrap="par"> ... </x>
        TeX has no explicit paragraph-environment, but empty lines (seperating paragraphs)
        xml has no empty lines
        so: to markup paragraphs for XML, CSS or XSL, <x> is an universal block-wrapper
		use <par></par> for standard text-paragraphs and <x></x> for special paragraphs

-->

<!--  ================================================  -->
<!--  ================================================  -->

<!ELEMENT act EMPTY>
<!ATTLIST act
          on CDATA #REQUIRED
          as CDATA #REQUIRED
          >

<!-- Usage:

    <act on="TeX" as="XML"/>

    on-value is a TeX-code *encoded in XML* for markup made visible
    as-value is the XML-equivalent for the formatted, visible style rendering

    For active TeX characters or short (or named) TeX commands or ligatures
    which set special characters/effects and require different rendering in both outputs.
    Best would be to use equal input-encodings like latin1 + iso-8859-1
    but there is an ugly rest.

    Examples (named entities are *not* defined!):

    <act on="~" as="&nbsp;"/>
    <act on="- -" as="&ndash;"/>               [no continuous dashes inside comments!]
    <act on="&#45;&#45;" as="&#8211;"/>        [en-dash with entities]
    <act on="- - -" as="&mdash;"/>             [no continuous dashes inside comments!]
    <act on="&#45;&#45;&#45;" as="&#8212;"/>   [em-dash with entities]
    <act on="\," as="&thinsp;"/>
    <act on="\\" as="&#10;"/>
    <act on="&apos;&apos;" as="&rdquo;"/>
        is like <cmd name="rq"/>
        but names and effects must be defined in CSS or XSL
    <act on="&lsquo;&lsquo;" as="&ldquo;"/>
    <act on="{\lq\lq}" as="&ldquo;"/>
    <act on="\ " as=" "/>

    on-value TeX commands for accented characters must include the character

    <act on="\^o" as="&ocirc;"/>
    <cmd name="^"><arg>o</arg></cmd>
        FIXME: name-value not a NMTOKEN!
        the latter is correct TeX, but has no effect in UAs
        and cannot be defined in CSS

    german.sty Examples:

    <act on="&quot;-" as="&shy;" />
    <act on="&quot;=" as="-" />

    <act on="&quot;&#45;" as="&#173;"/>   [german.sty: soft hyphen]
    <act on="&quot;&#124;" as="&#173;"/>  [german.sty: no ligature + small space + soft hyphen]
    <act on="&quot;&quot;" as=""/>        [german.sty: word breakable w/o hyphen]
    <act on="&quot;&#126;" as="&#45;"/>   [german.sty: dash, but no breakpoint]

    <act on="&quot;a" as="&auml;"/>
    <act on="&quot;A" as="&Auml;"/>
    <act on="&quot;o" as="&ouml;"/>
    <act on="&quot;O" as="&Ouml;"/>
    <act on="&quot;u" as="&uuml;"/>
    <act on="&quot;U" as="&Uuml;"/>
    <act on="&quot;s" as="&szlig;"/>

-->

<!--                      TeXML.dtd                     -->
<!--  ================================================  -->
<!--  ================================================

<![INCLUDE[
		<!ENTITY % TeXML.ent SYSTEM "TeXML.ent">  %TeXML.ent;
		]]>

<![INCLUDE[
		<!ENTITY % TeXSL.mod SYSTEM "TeXSL.mod">  %TeXSL.mod;
		]]>

      ================================================  -->
<!--  ================================================  -->
<!--  ================================================  -->
<!--                      TeXSL.mod    2003/10/dd       -->



<!ELEMENT TeXSL   (fo|fo-rule|fo-data)*>   

<!ELEMENT fo      (fo-rule|fo-data)*>
<!ATTLIST fo
          match   CDATA #IMPLIED
          as      NMTOKENS #IMPLIED
          >
<!ELEMENT fo-rule (fo-prop)*>
<!ATTLIST fo-rule
          match   CDATA #REQUIRED
          as      NMTOKENS #IMPLIED
          >
<!ELEMENT fo-prop EMPTY>
<!ATTLIST fo-prop
          pN      CDATA #REQUIRED
          pV      CDATA #REQUIRED
          >
<!ELEMENT fo-data (CDATA)>
<!ATTLIST fo-data
          match   CDATA #REQUIRED
          as      NMTOKENS #IMPLIED
          >

<!-- Usage:

	selectorTypeToken(s) := atRule		@keyword
							idRule		#selector
							tagRule		selector
							classRule	.selector
							styleRule	<selector style='propertyName: propertyValue;'/>
							attrName	*[selector]
							attrValue	*[attribute='selector']
							foAttr		propertyName='propertyValue'

	<xsl:stylesheet>

	<TeXML:fo as="selectorTypeToken(s)">
		<TeXML:fo-data match="texname">propertyName: propertyValue;</TeXML:fo-data>
		<TeXML:fo-data match="texname">propertyName: propertyValue;</TeXML:fo-data>
	</TeXML:fo>
	<TeXML:fo-rule match="texname" as="selectorTypeToken(s)">
		<TeXML:fo-prop pN="propertyName" pV="propertyValue" />
		<TeXML:fo-prop pN="propertyName" pV="propertyValue" />
	</TeXML:fo-rule>

	<xsl:template name="properties-as-foAttrs">
		<xsl:for-each select="child::TeXML:fo-prop">
		<xsl:attribute name="@pN"><xsl:value-of select="@pV" /></xsl:attribute>
		</xsl:for-each>
	</xsl:template>

	<xsl:template name="properties-as-cssText">
		<xsl:for-each select="child::TeXML:fo-prop">
		<xsl:value-of select="@pN" /><xsl:text>: </xsl:text><xsl:value-of select="@pV" /><xsl:text>; </xsl:text>
		</xsl:for-each>
	</xsl:template>

	<xsl:template name="as-htmlheadstyle">
		<style type="text/css" title="Site Style">
			&nl;
			<xsl:for-each select="document('')//TeXML:fo[@as='tagRule']/TeXML:fo-data">
				<xsl:value-of select="@match" />
					<xsl:text> { </xsl:text>
						<xsl:value-of select="." />
					<xsl:text> } </xsl:text>
					&nl;
			</xsl:for-each>
			&nl;
			<xsl:for-each select="document('')//TeXML:fo-rule[@as='tagRule']">
				<xsl:value-of select="@match" />
					<xsl:text> { </xsl:text>
						<xsl:call-template name="properties-as-cssText" />
					<xsl:text> } </xsl:text>
					&nl;
			</xsl:for-each>
			&nl;
			<xsl:for-each select="document('')//TeXML:fo-rule[@as='idRule']">
				<xsl:text>#</xsl:text><xsl:value-of select="@match" />
					<xsl:text> { </xsl:text>
						<xsl:call-template name="properties-as-cssText" />
					<xsl:text> } </xsl:text>
					&nl;
			</xsl:for-each>
			&nl;
			<xsl:for-each select="document('')//TeXML:fo-rule[@as='classRule']">
				<xsl:text>.</xsl:text><xsl:value-of select="@match" />
					<xsl:text> { </xsl:text>
						<xsl:call-template name="properties-as-cssText" />
					<xsl:text> } </xsl:text>
					&nl;
			</xsl:for-each>
			&nl;
		</style>
	</xsl:template>
	
	</xsl:stylesheet>

-->

<!--                      TeXSL.mod                     -->
<!--  ================================================  -->
<!--  ================================================  -->
<!--  ================================================  -->
<!--                 TeXML.dtd real EOF                 -->