XML DTD Building Blocks – Core Components of Document Type Definitions
Introduction – Why Learn DTD Building Blocks?
To effectively use XML DTDs, you need to understand the core building blocks that make up a DTD. These building blocks define everything from elements and attributes to entities and notations. Once you master them, you can confidently structure XML data, enforce rules, and enable validation across systems.
In this guide, you’ll learn:
- The main declarations in a DTD (
ELEMENT,ATTLIST,ENTITY,NOTATION) - What each block is used for
- Syntax rules and real examples
- How they work together to validate XML documents
Overview – Key DTD Components
| Building Block | Description |
|---|---|
<!ELEMENT> | Defines XML elements and their content models |
<!ATTLIST> | Declares attributes for elements, including types and defaults |
<!ENTITY> | Defines reusable values or placeholders |
<!NOTATION> | Declares format for non-XML data (e.g., images, multimedia) |
1. <!ELEMENT> – Declaring Elements
Syntax
<!ELEMENT element-name content-model>
Example
<!ELEMENT note (to, from, heading, body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT body (#PCDATA)>
Declares that <note> contains four child elements, each with text content.
2. <!ATTLIST> – Declaring Attributes
Syntax
<!ATTLIST element-name attribute-name attribute-type default-declaration>
Example
<!ATTLIST book id ID #REQUIRED>
<!ATTLIST book category CDATA #IMPLIED>
| Attribute Type | Meaning |
|---|---|
CDATA | Character data (any text) |
ID | Unique identifier |
IDREF | Reference to another ID |
NMTOKEN | Name token (no spaces) |
| Default Type | Description |
|---|---|
#REQUIRED | Must be provided in the XML |
#IMPLIED | Optional |
#FIXED | Constant value only |
3. <!ENTITY> – Declaring Entities
Entities act like macros or variables within XML and DTD.
Syntax
<!ENTITY entity-name "replacement-text">
Example
<!ENTITY author "John Smith">
Used in XML as:
<book>&author;</book>
Outputs:
<book>John Smith</book>
4. <!NOTATION> – Declaring Non-XML Formats
Used to reference external data types (images, multimedia, etc.)
Syntax
<!NOTATION name SYSTEM "format-identifier">
Example
<!NOTATION jpeg SYSTEM "image/jpeg">
Associates file types with proper format identifiers.
How These Work Together
Example DTD with All Building Blocks:
<!ELEMENT book (title, author)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ATTLIST book id ID #REQUIRED>
<!ENTITY publisher "XML Publishing House">
<!NOTATION pdf SYSTEM "application/pdf">
This defines:
- A
bookwithtitleandauthor - A required
idattribute - A reusable
publisherentity - A notation for PDF files
Best Practices for Using DTD Building Blocks
- ✔️ Always define structure with
<!ELEMENT>first - ✔️ Declare attributes explicitly for clarity and validation
- ✔️ Use
<!ENTITY>for shared text, URLs, or authors - ✔️ Only use
<!NOTATION>if handling non-XML content - Don’t overuse entities—they are not variables, just substitutions
Summary – Recap & Next Steps
DTD building blocks are the foundation of XML validation. With just a few declarations, you can define a robust XML structure that ensures consistency and correctness.
Key Takeaways:
<!ELEMENT>defines structure<!ATTLIST>defines metadata and validation rules<!ENTITY>allows reusable constants<!NOTATION>supports multimedia data referencing
Real-world relevance: Used in publishing, API validation, XHTML pages, document templates, and legacy XML systems.
FAQs – XML DTD Building Blocks
What is the purpose of <!ELEMENT>?
To declare elements and specify the child structure or data type.
Can an element have multiple attributes?
Yes. Use multiple <!ATTLIST> declarations or combine them.
Are entities variables?
No. They’re static replacements—not dynamic values.
Do I need <!NOTATION> in every DTD?
No. Use it only if your XML links to non-XML content like images or audio.
Can I declare multiple building blocks in one DTD?
Absolutely. DTDs often include a mix of all building blocks.
Share Now :
