> >I need to create DTDs that are extensible...
The base DTD:
<!-- Base DTD in file x.dtd -->
<!ENTITY % x.addon " " >
<!ELEMENT x ( #PCDATA | table | chair %xaddon; ) >
...
In the document:
<!DOCTYPE x SYSTEM "x.dtd"
[
<!ELEMENT Joes-new-extension-element ( #PCDATA ) >
<!ENTITY % x.addon " | Joes-new-extension-element ">
]>
<x>some text<Joes-new-extension-element/> some other
text</x>
Parameter entities in the "internal subset" of the
Doctype declaration are parsed before the "eternal
subset" (i.e. x.dtd here).
The first declaration of an entity has precedence.
So you can derive a new DTD by merely declaring the new
element types you need in the internal subset, and then
defining the appropriate parameter entity.
Rick Jelliffe