DTD - Elementen
In een DTD worden elementen gedeclareerd met een ELEMENT-declaratie.
Elementen declareren
In een DTD worden XML-elementen gedeclareerd met de volgende syntaxis:
<!ELEMENT element-name category>
or
<!ELEMENT element-name (element-content)>
Lege elementen
Lege elementen worden gedeclareerd met het categoriesleutelwoord LEEG:
<!ELEMENT element-name EMPTY>
Example:
<!ELEMENT br EMPTY>
XML example:
<br />
Elementen met geparseerde tekengegevens
Elementen met alleen geparseerde tekengegevens worden gedeclareerd met #PCDATA tussen haakjes:
<!ELEMENT element-name (#PCDATA)>
Example:
<!ELEMENT from (#PCDATA)>
Elementen met enige inhoud
Elementen die zijn gedeclareerd met het categoriesleutelwoord ANY, kunnen elke combinatie van parseerbare gegevens bevatten:
<!ELEMENT element-name ANY>
Example:
<!ELEMENT note ANY>
Elementen met kinderen (reeksen)
Elementen met een of meer kinderen worden gedeclareerd met de naam van de onderliggende elementen tussen haakjes:
<!ELEMENT element-name (child1)>
or
<!ELEMENT element-name (child1,child2,...)>
Example:
<!ELEMENT note (to,from,heading,body)>
Wanneer kinderen in een door komma's gescheiden volgorde worden aangegeven, moeten de kinderen in dezelfde volgorde in het document voorkomen. In een volledige aangifte moeten ook de kinderen worden aangegeven en kunnen de kinderen ook kinderen krijgen. De volledige verklaring van het "note"-element is:
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
Slechts één gebeurtenis van een element declareren
<!ELEMENT element-name (child-name)>
Example:
<!ELEMENT note (message)>
Het bovenstaande voorbeeld verklaart dat het onderliggende element "message" één keer mag voorkomen, en slechts één keer binnen het "note"-element.
Minimaal één keer voorkomen van een element declareren
<!ELEMENT element-name (child-name+)>
Example:
<!ELEMENT note (message+)>
Het + teken in bovenstaand voorbeeld geeft aan dat het onderliggende element "message" één of meerdere keren moet voorkomen binnen het "note" element.
Nul of meer voorkomen van een element declareren
<!ELEMENT element-name (child-name*)>
Example:
<!ELEMENT note (message*)>
Het *-teken in het bovenstaande voorbeeld verklaart dat het onderliggende element "bericht" nul of meer keer kan voorkomen binnen het "note" -element.
Nul of één keer voorkomen van een element declareren
<!ELEMENT element-name (child-name?)>
Example:
<!ELEMENT note (message?)>
De ? sign in het bovenstaande voorbeeld verklaart dat het onderliggende element "message" nul of één keer kan voorkomen in het "note" -element.
Declareren van of/of inhoud
<!ELEMENT note (to,from,header,(message|body))>
In het bovenstaande voorbeeld wordt verklaard dat het "note" -element een "to" -element, een "from" -element, een "header" -element en ofwel een "message"- of een "body" -element moet bevatten.
Gemengde inhoud declareren
<!ELEMENT note (#PCDATA|to|from|header|message)*>
Het bovenstaande voorbeeld verklaart dat het "note"-element nul of meer exemplaren van geparseerde karaktergegevens, "to", "from", "header" of "message"-elementen kan bevatten.