DTD Examples
DTD Examples and Context
Section titled “DTD Examples and Context”Document Type Definitions (DTDs) are a way to define the legal structure and elements of an XML document. They provide a basic grammar for a specific XML format.
While DTDs were an early standard, XML Schema Definition (XSD) is the modern, more powerful, and widely used standard for defining XML structure, data types, and constraints. XSD offers richer features like data typing (integers, strings, dates), namespaces support, and more complex structural rules.
However, understanding DTDs can be helpful for working with legacy systems or simpler XML formats. Below are some examples illustrating DTD syntax.
Learn more about XML Schema (XSD)
TV Schedule DTD Example
Section titled “TV Schedule DTD Example”This DTD defines the structure for a simple TV schedule.
<!DOCTYPE TVSCHEDULE [ <!ELEMENT TVSCHEDULE (CHANNEL+)> <!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED>
<!ELEMENT CHANNEL (BANNER, DAY+)> <!ATTLIST CHANNEL CHAN CDATA #REQUIRED>
<!ELEMENT BANNER (#PCDATA)>
<!ELEMENT DAY (DATE, (HOLIDAY | PROGRAMSLOT+)+)> <!ELEMENT DATE (#PCDATA)> <!ELEMENT HOLIDAY (#PCDATA)>
<!ELEMENT PROGRAMSLOT (TIME, TITLE, DESCRIPTION?)> <!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED>
<!ELEMENT TIME (#PCDATA)> <!ELEMENT TITLE (#PCDATA)> <!ATTLIST TITLE RATING CDATA #IMPLIED LANGUAGE CDATA #IMPLIED>
<!ELEMENT DESCRIPTION (#PCDATA)>]>Key points:
TVSCHEDULEmust contain one or more (+)CHANNELelements.CHANNELmust contain exactly oneBANNERand one or moreDAYelements.DAYcontains aDATEand then a sequence of one or more elements, where each can be either aHOLIDAYor one or morePROGRAMSLOTs.DESCRIPTIONwithinPROGRAMSLOTis optional (?).#PCDATAmeans Parsed Character Data (text).#REQUIREDattributes must be present;#IMPLIEDattributes are optional.
Newspaper Article DTD Example
Section titled “Newspaper Article DTD Example”This DTD defines a structure for newspaper articles and includes entity definitions.
<!DOCTYPE NEWSPAPER [ <!ELEMENT NEWSPAPER (ARTICLE+)>
<!ELEMENT ARTICLE (HEADLINE, BYLINE, LEAD, BODY, NOTES)> <!ATTLIST ARTICLE AUTHOR CDATA #REQUIRED EDITOR CDATA #IMPLIED DATE CDATA #IMPLIED EDITION CDATA #IMPLIED>
<!ELEMENT HEADLINE (#PCDATA)> <!ELEMENT BYLINE (#PCDATA)> <!ELEMENT LEAD (#PCDATA)> <!ELEMENT BODY (#PCDATA)> <!ELEMENT NOTES (#PCDATA)>
<!ENTITY NEWSPAPER "Vervet Logic Times"> <!ENTITY PUBLISHER "Vervet Logic Press"> <!ENTITY COPYRIGHT "Copyright 2023 Vervet Logic Press">]>Key points:
NEWSPAPERcontains one or moreARTICLEelements.ARTICLErequiresHEADLINE,BYLINE,LEAD,BODY, andNOTESin that sequence.ARTICLErequires anAUTHORattribute.ENTITYdefinitions create shortcuts. For example,&NEWSPAPER;used within an XML document conforming to this DTD would be replaced by “Vervet Logic Times”.
Product Catalog DTD Example
Section titled “Product Catalog DTD Example”This DTD demonstrates more complex attribute definitions, including enumerated types and default values.
<!DOCTYPE CATALOG [ <!ELEMENT CATALOG (PRODUCT+)>
<!ELEMENT PRODUCT (SPECIFICATIONS+, OPTIONS?, PRICE+, NOTES?)> <!ATTLIST PRODUCT NAME CDATA #IMPLIED CATEGORY (HandTool | Table | ShopProfessional) "HandTool" PARTNUM CDATA #IMPLIED PLANT (Pittsburgh | Milwaukee | Chicago) "Chicago" INVENTORY (InStock | Backordered | Discontinued) "InStock">
<!ELEMENT SPECIFICATIONS (#PCDATA)> <!ATTLIST SPECIFICATIONS WEIGHT CDATA #IMPLIED POWER CDATA #IMPLIED>
<!ELEMENT OPTIONS (#PCDATA)> <!ATTLIST OPTIONS FINISH (Metal | Polished | Matte) "Matte" ADAPTER (Included | Optional | NotApplicable) "Included" CASE (HardShell | Soft | NotApplicable) "HardShell">
<!ELEMENT PRICE (#PCDATA)> <!ATTLIST PRICE MSRP CDATA #IMPLIED WHOLESALE CDATA #IMPLIED STREET CDATA #IMPLIED SHIPPING CDATA #IMPLIED>
<!ELEMENT NOTES (#PCDATA)>
<!ENTITY AUTHOR "John Doe"> <!ENTITY COMPANY "JD Power Tools, Inc."> <!ENTITY EMAIL "jd@jd-tools.com">]>Key points:
- The
PRODUCTelement has attributes with enumerated possible values (e.g.,CATEGORYcan only be one of the listed options). - Default values are provided for some attributes (e.g., if
CATEGORYis omitted, it defaults to “HandTool”). SPECIFICATIONSmust appear one or more times (+).OPTIONSandNOTESare optional (?).