Building an XML DTD

Now that we’ve emerged from the gory details of XML DTDs, let’s see how they work by creating a simple example. You can create a DTD with any text editor and a clear idea of how you want to mark up your XML documents. You’ll need an XML parser and processing application to actually interpret and use your DTD, as well as a style sheet to permit XML-capable browsers to display your document.

An XML Address DTD

Let’s create a simple XML DTD that defines a markup language for specifying documents containing names and addresses. We start with an address element, which contains other elements that tag the address contents. Our address element has a single attribute indicating whether it is a work or home address:

<!ELEMENT address (name, street+, city, state, zip?)>
<!ATTLIST address type (home|business) #REQUIRED>

Voila! The first declaration creates an element named address that contains a name element, one or more street elements, a city and state element, and an optional zip element. The address element has a single attribute, type, that must be specified and can have a value of either home or business.

Let’s define the name elements first:

<!ELEMENT name (first, middle?, last)>
<!ELEMENT first (#PCDATA)>
<!ELEMENT middle (#PCDATA)>
<!ELEMENT last (#PCDATA)>

The name element also contains other elements — a first name, an optional middle name, and a last name — each of which are defined in the subsequent DTD lines. These three elements have no nested tags and contain ...

Get HTML & XHTML: The Definitive Guide, 5th 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.