7️⃣ 📄 XML DTD (Document Type Definition)
Estimated reading: 4 minutes 442 views

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 BlockDescription
<!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 TypeMeaning
CDATACharacter data (any text)
IDUnique identifier
IDREFReference to another ID
NMTOKENName token (no spaces)
Default TypeDescription
#REQUIREDMust be provided in the XML
#IMPLIEDOptional
#FIXEDConstant 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 book with title and author
  • A required id attribute
  • A reusable publisher entity
  • 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 :
Share

XML DTD Building Blocks

Or Copy Link

CONTENTS
Scroll to Top