DTD - internal DTD declaration

An internal DTD declaration means the DTD rules are written inside the XML file itself, instead of being in a separate .dtd file.

Here’s a small example:

<?xml version="1.0"?>
<!DOCTYPE note [
  <!ELEMENT note (to, from, heading, body)>
  <!ELEMENT to (#PCDATA)>
  <!ELEMENT from (#PCDATA)>
  <!ELEMENT heading (#PCDATA)>
  <!ELEMENT body (#PCDATA)>
]>
<note>
  <to>Alice</to>
  <from>Bob</from>
  <heading>Reminder</heading>
  <body>Don't forget our meeting at 10 AM tomorrow.</body>
</note>

Key points:

  • The <!DOCTYPE note [ ... ]> section contains the internal DTD.

  • The <!ELEMENT> declarations define each allowed element and what they contain.

    • (#PCDATA) means "parsed character data" (text).

  • Since it’s internal, it’s embedded right in the XML — no external file is referenced.