| • Science | • People | • Locations | • Timeline |
Defining a DTD specifies the syntax of an application of SGML or XML, which may be a widely-used standard such as XHTML or a local application.
DTDs are usually employed to determine the structure of an XML or SGML document. A DTD will typically describe each allowable element within the document, the possible attributes and (optionally) the allowed attribute values for each element. Further, it will describe the nesting and occurrences of elements. Most of a DTD is usually composed of ELEMENT definitions and ATTLIST definitions.
An example of a very simple XML DTD to describe a list of persons is given below:
Taking this line by line, it says:
An example of an XML file which makes use of this DTD follows:
DOCTYPE people_list SYSTEM "example.dtd">The DTD given above requires a name element within every person element; the people_list element is also mandatory, but the rest are optional.
It is possible to render this in an XML-enabled browser (such as IE5 or Mozilla) by pasting and saving the DTD component above to a text file named example.dtd and the XML file to a differently-named text file, and opening the XML file with the browser. The files should both be saved in the same directory. However, many browsers do not check that an XML document conforms to the rules in the DTD; they are only required to check that the DTD is syntactically correct.
While DTD support in XML tools is widespread due to its inclusion in the XML 1.0 standard, it is seen as limited for the following reasons:
Two newer XML schema languages that are much more powerful have achieved Recommendation status within the W3C and are increasingly favored over DTDs: