A Simple DTD Example
Recall Example 2-2
from the last chapter, which described a person. The
person had a name and three professions. The name had a first name
and a last name. The particular person described in that example was
Alan Turing. However, that’s not relevant for DTDs. A DTD
only describes the general type, not the specific instance. A DTD
for person documents would say that a
person element contains one
name child element followed by zero or
profession child elements.
It would further say that each
name element contains exactly one
first_name child element followed by
element. Finally it would state that the
profession elements all contain text.
Example 3-1 is a DTD that
describes such a
<!ELEMENT person (name, profession*)> <!ELEMENT name (first_name, last_name)> <!ELEMENT first_name (#PCDATA)> <!ELEMENT last_name (#PCDATA)> <!ELEMENT profession (#PCDATA)>
This DTD would probably be stored in a separate file from the documents it describes. This allows it to be easily referenced from multiple XML documents. However, it can be included inside the XML document if that’s convenient, using the document type declaration we discuss later in this section. If it is stored in a separate file, then that file would most likely be named person.dtd, or something similar. The .dtd extension is fairly standard although not specifically required by the XML specification. If this ...