Extending DTDs for Backward Compatibility

Marcus Carr mrc at allette.com.au
Fri Jan 30 03:40:37 GMT 1998

Joe Lapp wrote:

> 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).
> There are different ways in which I might want to extend the initial DTD. One
> way would be to add attributes or change default attribute values. This seems
> easy to accomplish because XML allows one element to have multiple attribute
> declarations, where attribute declarations are merged. However, it is not clear
> to me how to best accomodate new element types that might be added.

When we designed the CALS initiative in Australia, we created a core DTD and
about 27 satellite DTDs. The core was riddled with parameter entities - in fact
everything that you may want to remap used an entity. Variant DTDs were nothing
more than parameter entities mapping out the differences between the core
structure and the desired structure, then a parameter entity calling in the core
file. Because the first parameter entity is regarded and any subsequent
identically named entities are ignored, the remapped value stuck. For
distribution, we wrote a simple program to expand out most of the entities,
making the DTD readable as well as producing an extensively linked electronic

This approach worked well - changes could be considered as local or global. If
they were global, change the core, otherwise change the satellite. It ensured
that elements meant fundamentally the same thing, but allowed the structural
flexibility that disparate branches of the military require.


Marcus Carr                  email:  mrc at allette.com.au
Allette Systems (Australia)  email:  info at allette.com.au
Level 10, 91 York Street     www:    http://www.allette.com.au
Sydney 2000 NSW Australia    phone:  +61 2 9262 4777
                             fax:    +61 2 9262 4774

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