Planning for Growth

Some applications may not need to evolve over time, but some thought should be given to how users of the application will be able to extend it to meet their own needs. In DTD-based applications, this is done by providing parameter entity “hooks” into the document type definition, which could either be referenced or redefined by an instance document. Take the simple DTD shown in Example 16-8.

Example 16-8. extensible.dtd
<!ENTITY % varContent "(EMPTY)">
<!ELEMENT variable %varContent;>

This fragment is not a very interesting application by itself, but since it provides the capability for extension, the document author can make it more useful by providing an alternative entity declaration for the content of the variable element, as shown in Example 16-9.

Example 16-9. Document extending extensible.dtd
<?xml version="1.0"?>
<!DOCTYPE variable SYSTEM "extensible.dtd"
[
<!ENTITY % varContent "(#PCDATA)">
]>
<variable>Useful content.</variable>

The W3C XML Schema language provides more comprehensive and controlled support for extending markup using the extension, include, redefine, and import elements. These mechanisms can be used in conjunction to create very powerful, customizable application frameworks.

Get XML in a Nutshell, 3rd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.