DTD- zelfstudie
Wat is een DTD?
Een DTD is een documenttypedefinitie.
Een DTD definieert de structuur en de juridische elementen en attributen van een XML-document.
Waarom een DTD gebruiken?
Met een DTD kunnen onafhankelijke groepen mensen een standaard DTD overeenkomen voor het uitwisselen van gegevens.
Een toepassing kan een DTD gebruiken om te controleren of de XML-gegevens geldig zijn.
Een interne DTD-verklaring
Als de DTD in het XML-bestand wordt gedeclareerd, moet deze worden ingepakt in de <!DOCTYPE>-definitie:
XML-document met een interne DTD
<?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>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend</body>
</note>
XML-bestand bekijken »
Selecteer in het XML-bestand "view source" om de DTD te bekijken.
De bovenstaande DTD wordt als volgt geïnterpreteerd:
- !DOCTYPE note definieert dat het root-element van dit document note is
- !ELEMENT note definieert dat het note-element vier elementen moet bevatten: "to,from,heading,body"
- !ELEMENT om te definiëren dat het to-element van het type "#PCDATA" moet zijn
- !ELEMENT from definieert het from-element dat van het type "#PCDATA" moet zijn
- !ELEMENT kop definieert het kopelement van het type "#PCDATA"
- !ELEMENT body definieert het body-element van het type "#PCDATA"
Een externe DTD-verklaring
Als de DTD in een extern bestand wordt gedeclareerd, moet de <!DOCTYPE>-definitie een verwijzing naar het DTD-bestand bevatten:
XML-document met een verwijzing naar een externe DTD
<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
XML-bestand bekijken »
En hier is het bestand "note.dtd", dat de DTD bevat:
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>