Solution: Extending DTDs for Backward Compatibility
David Megginson
ak117 at freenet.carleton.ca
Fri Jan 30 00:50:30 GMT 1998
Joe Lapp writes:
> I need to create DTDs that are extensible. An application knowing the
> semantics behind an old DTD may be handed an XML document written with an
> extended DTD. The old application should be able to function with the
> extended document by ignoring the extensions. I need advice on the best
> way to go about creating the initial DTD (and subsequent DTDs, should their
> designs also be a factor).
This falls solidly into the domain of problems for architectural
forms: just use the previous version of the DTD as the base
architecture, and derive any new element types from something that's
already there.
For example, if you have a DTD with the root element "doc", and you
are creating an extended version by adding an element type named
"foreign", you can derive that from the most similar element type in
the old version of the DTD (say, "emphasis"). Here's how you do it:
<!ELEMENT foreign (#PCDATA)>
<!ATTLIST foreign
doc NMTOKEN #FIXED "emphasis">
Piece o'cake.
<plug role="tactless">
I've got tons of examples like this in my forthcoming book
<title>Structuring XML Documents</title>, from Prentice-Hall: it
should be hitting the bookstores at the end of March. There's even a
whole chapter on backwards-compatibility for DTDs. Buy, BUY, BUY!
</plug>
All the best,
David
--
David Megginson ak117 at freenet.carleton.ca
Microstar Software Ltd. dmeggins at microstar.com
http://home.sprynet.com/sprynet/dmeggins/
xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/
To (un)subscribe, mailto:majordomo at ic.ac.uk the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)
More information about the Xml-dev
mailing list