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

XML DTD Elements – Declare Structure and Content Rules for XML Nodes

Introduction – Why Learn DTD Elements?

In any XML document, elements form the backbone of the data structure. To ensure consistency and validity, XML DTD uses the <!ELEMENT> declaration to define the allowed elements, their nesting, and content types. Whether you’re designing a simple note structure or a complex catalog, understanding how to declare elements is essential for validating and organizing your XML data.

In this guide, you’ll learn:

  • How to declare XML elements in DTD
  • The different content models used in <!ELEMENT>
  • Examples of nested, empty, and mixed content declarations
  • Validation rules and best practices

What Is <!ELEMENT> in DTD?

<!ELEMENT> is a DTD directive that defines an XML element’s name and the type of content it can hold.

Basic Syntax

<!ELEMENT element-name content-model>

Content Models in DTD Elements

ModelDescriptionExample
#PCDATAText content only<!ELEMENT title (#PCDATA)>
EMPTYNo content allowed<!ELEMENT line-break EMPTY>
ANYAny content is allowed<!ELEMENT note ANY>
Child ElementsSpecific element sequence or structure<!ELEMENT book (title, author)>
Mixed ContentText + child elements`<!ELEMENT p (#PCDATA

Example – Simple Element with Text

<!ELEMENT name (#PCDATA)>

Accepts:

<name>John Doe</name>

Invalid:

<name><first>John</first></name>

Example – Element with Nested Children

<!ELEMENT book (title, author, price)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT price (#PCDATA)>

Accepts:

<book>
  <title>XQuery Basics</title>
  <author>Jane Doe</author>
  <price>499</price>
</book>

Example – Repetition and Choice

SyntaxMeaningExample
*0 or more occurrences(chapter*)
+1 or more occurrences(section+)
?0 or 1 occurrence(subtitle?)
``Either one element (choice)
,All elements in sequence(title, author)
<!ELEMENT library (book*)>
<!ELEMENT book (title, (author | editor), price)>

Example – Empty Element Declaration

<!ELEMENT br EMPTY>

Accepts:

<br/>

Invalid:

<br>Line break</br>

Example – Mixed Content

<!ELEMENT message (#PCDATA | bold | italic)*>
<!ELEMENT bold (#PCDATA)>
<!ELEMENT italic (#PCDATA)>

Accepts:

<message>Welcome to <bold>XQuery</bold> class!</message>

Best Practices for DTD Element Declarations

  • ✔️ Use #PCDATA for plain text-only elements
  • ✔️ Use clear and structured child declarations for complex data
  • ✔️ Use mixed content only when truly necessary (e.g., in HTML-like markup)
  • Don’t mix #PCDATA with , (sequential elements)—that’s invalid in DTD
  • Avoid using ANY unless flexibility is required and controlled

Summary – Recap & Next Steps

DTD elements define the structure and constraints for XML content. Whether you’re enforcing a document schema or validating configuration files, element declarations ensure your XML is consistent and predictable.

Key Takeaways:

  • Use <!ELEMENT> to define what goes inside each XML tag
  • Choose content models based on expected data: text, children, or both
  • Use symbols like *, +, |, and ? to allow flexibility where needed

Real-world relevance: Used in data exchange formats, content publishing (e.g., DocBook), software configs, and legacy web markup (like XHTML).


FAQs – XML DTD Elements

What is #PCDATA in DTD?
It stands for Parsed Character Data, used for text-only content.

What’s the difference between EMPTY and ANY?
EMPTY means no content allowed. ANY allows any content—text or elements.

Can I declare elements in any order?
No. In sequences (title, author), the order is strictly validated.

Can an element have both text and child elements?
Yes, but you must declare it as mixed content using (#PCDATA | child)*.

What happens if the element content doesn’t match the declaration?
The XML document is invalid according to the DTD.


Share Now :
Share

XML DTD Elements

Or Copy Link

CONTENTS
Scroll to Top