Skip to content

XML DTD Examples

Explore practical XML DTD examples for structured data like TV schedules, newspaper articles, product catalogs, and people records with element definitions and attributes.

Some examples of DTDs

TV Schedule DTD

<!DOCTYPE TVSCHEDULE [
	<!ELEMENT TVSCHEDULE (CHANNEL+)>
	<!ELEMENT CHANNEL (BANNER,DAY+)>
	<!ELEMENT BANNER (#PCDATA)>
	<!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>
	<!ELEMENT HOLIDAY (#PCDATA)>
	<!ELEMENT DATE (#PCDATA)>
	<!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)>
	<!ELEMENT TIME (#PCDATA)>
	<!ELEMENT TITLE (#PCDATA)>
	<!ELEMENT DESCRIPTION (#PCDATA)>
	  
	<!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED>
	<!ATTLIST CHANNEL CHAN CDATA #REQUIRED>
	<!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED>
	<!ATTLIST TITLE RATING CDATA #IMPLIED>
	<!ATTLIST TITLE LANGUAGE CDATA #IMPLIED>
]>

Newspaper Article DTD

<!DOCTYPE NEWSPAPER [  
	<!ELEMENT NEWSPAPER (ARTICLE+)>  
	<!ELEMENT ARTICLE (HEADLINE,BYLINE,LEAD,BODY,NOTES)>  
	<!ELEMENT HEADLINE (#PCDATA)>  
	<!ELEMENT BYLINE (#PCDATA)>  
	<!ELEMENT LEAD (#PCDATA)>  
	<!ELEMENT BODY (#PCDATA)>  
	<!ELEMENT NOTES (#PCDATA)>  
	  
	<!ATTLIST ARTICLE AUTHOR CDATA #REQUIRED>  
	<!ATTLIST ARTICLE EDITOR CDATA #IMPLIED>  
	<!ATTLIST ARTICLE DATE CDATA #IMPLIED>  
	<!ATTLIST ARTICLE EDITION CDATA #IMPLIED>  
	  
	<!ENTITY NEWSPAPER "Vervet Logic Times">  
	<!ENTITY PUBLISHER "Vervet Logic Press">  
	<!ENTITY COPYRIGHT "Copyright 1998 Vervet Logic Press">  
]>

Product Catalog DTD

<!DOCTYPE CATALOG [
	<!ENTITY AUTHOR "John Doe">
	<!ENTITY COMPANY "JD Power Tools, Inc.">
	<!ENTITY EMAIL "jd@jd-tools.com">
	  
	<!ELEMENT CATALOG (PRODUCT+)>
	
	<!ELEMENT PRODUCT
		(SPECIFICATIONS+,OPTIONS?,PRICE+,NOTES?)>
	<!ATTLIST PRODUCT
		NAME CDATA #IMPLIED
		CATEGORY (HandTool|Table|Shop-Professional) "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)>
]>

People DTD

<!DOCTYPE person  [
  <!ELEMENT person (name+, profession*)>
  <!ELEMENT name EMPTY>
  <!ATTLIST name first CDATA #REQUIRED
                 last  CDATA #REQUIRED>
  <!ELEMENT profession EMPTY>
  <!ATTLIST profession value CDATA #REQUIRED>
]>
Navigation