<?xml version="1.0" encoding="ISO-8859-1"?>
<!ELEMENT macro:define ANY>
<!ATTLIST macro:define name NMTOKEN #REQUIRED>
<!ELEMENT macro:use EMPTY>
<!ATTLIST macro:use name NMTOKEN #REQUIRED>
<!-- How to use macro:define and macro:use:
<macro:define name="keyword"><xhtml:b>$content</xhtml:b></macro:define>
This macro:define statement defines the macro "keyword" with a
parameter $content. The expansion of this macro is the text inside
the element where the parameters are replaced by their actual
values.
<macro:use name="keyword" content="function"/>
This would expand to
<xhtml:b>function</xhtml:b>
As a convenience notation, you may declare a prefix "m" and use
the new element m:keyword:
...some outer element:
xmlns:m="http://www.ocaml-programming.de/macro/use"
<m:keyword content="function"/>
Restrictions: To simplify this example, macros must not
contain macro references. Macro definitions must contain exactly
one subnode. Furthermore, parameters may only occur
in data sections, and not within attributes.
-->
<!-- The following PI is a PXP extension. Its effect is that
macro:use can have any other attributes, and not only "name":
-->
<?pxp:dtd optional-attribute-declarations elements="macro:use"?>
<!-- Another PXP extension: Do not complain about undeclared
elements and notations
-->
<?pxp:dtd optional-element-and-notation-declarations?>
<!-- Bind the prefix "macro" to a namespace URI: -->
<?pxp:dtd namespace prefix="macro"
uri="http://www.ocaml-programming.de/macro"?>