Document Type DefinitionDTD (ang. document type definition) – rodzaj dokumentu definiujący formalną strukturę dokumentów XML, HTML, XHTML lub innych pochodzących z rodziny SGML lub XML. Definicje DTD mogą być zawarte w pliku dokumentu, którego strukturę definiują, przeważnie jednak zapisane są w osobnym pliku tekstowym, co pozwala na zastosowanie tego samego DTD dla wielu dokumentów. DTD określa składnię konkretnej aplikacji XML lub SGML, np. XHTML, EAD, TEI lub innej, zdefiniowanej dla potrzeb użytkownika. Zazwyczaj DTD definiuje każdy dopuszczalny element dokumentu, jego zbiór atrybutów i dopuszczalne wartości. DTD określa także zagnieżdżanie i wymagalność poszczególnych elementów w dokumencie. W praktyce DTD przeważnie składa się z definicji ELEMENT i definicji ATTLIST. W praktyce ze względu na małe możliwości obecnie DTD jest wypierane przez nowocześniejsze XML Schema, które posiada znacznie większe możliwości oraz nie wymaga stosowania dodatkowej, nie-XML-owej składni. Przykład bardzo prostego użycia DTD osadzonego wewnątrz dokumentu XML<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE osoba [
<!ELEMENT osoba (imie, drugieimie, nazwisko)>
<!ELEMENT imie (#PCDATA)>
<!ELEMENT drugieimie (#PCDATA)>
<!ELEMENT nazwisko (#PCDATA)>
]>
<osoba>
<imie>Amadeusz</imie>
<drugieimie>Zenon</drugieimie>
<nazwisko>Kowalski</nazwisko>
</osoba>
Dokument pokazany powyżej jest poprawny składniowo (ang. well-formed) oraz strukturalnie (ang. valid). Użyte wcięcia są „dobrym zwyczajem” mającym na celu uwypuklenie drzewiastej struktury dokumentu, a kodowanie UTF-8 w systemie Unicode jest zalecane przez konsorcjum W3C i „zdrowy rozsądek”. Stosowanie zewnętrznych DTDOprócz metody umieszczania DTD bezpośrednio w dokumencie XML można także stosować odwołanie zewnętrzne na dwa sposoby:
Zasada identyfikatora systemowego jest podobna do umieszczania stylu CSS wewnątrz HTML-a, tzn. należy podać nazwę elementu głównego (root element) oraz adres URI (np. URL), np.: <!DOCTYPE osoba SYSTEM "naszaDefinicja.dtd">
W identyfikatorze publicznym dodatkowo umieszcza się tzw. formalny identyfikator publiczny (formal public identifier, FPI), określony w normie ISO 9070. FPI jest zbudowany na zasadzie -//właściciel//opis//język, np.: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Jest to standardowy budulec stron WWW w XHTML 1.0 Strict. FPI jest informacją dla parsera (np. przeglądarki WWW), który posiada zapisane w pamięci definicje DTD dla „dobrze znanych” FPI. Jeśli parser nie rozpozna zadanego FPI, to posłuży się adresem URI celem pobrania pliku DTD. Inne „dobrze znane” deklaracje DTD, to: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
Określanie liczebnościW DTD istnieją cztery sposoby definiowania kardynalności (liczebności) elementów (zbioru elementów):
Przykładowo dla tak skonstruowanego DTD umieszczonego w pliku o nazwie pracownicy.dtd: <!ELEMENT pracownicy (pracownik+)>
<!ELEMENT pracownik (daneOsobowe, dział?)>
<!ELEMENT daneOsobowe (imie, drugieimie?, nazwisko)>
<!ELEMENT imie (#PCDATA)>
<!ELEMENT drugieimie (#PCDATA)>
<!ELEMENT nazwisko (#PCDATA)>
<!ELEMENT dział (#PCDATA)>
prawidłowym dokumentem XML jest: <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE pracownicy SYSTEM "pracownicy.dtd">
<pracownicy>
<pracownik>
<daneOsobowe>
<imie>Izabela</imie>
<nazwisko>Nowakowska-Jasnorzębska</nazwisko>
</daneOsobowe>
</pracownik>
<pracownik>
<daneOsobowe>
<imie>Zygfryd</imie>
<drugieimie>Zenobiusz</drugieimie>
<nazwisko>Wawrzyniak</nazwisko>
</daneOsobowe>
<dział>Public Relations</dział>
</pracownik>
</pracownicy>
Zgodnie z zasadami budowy poprawnego składniowego XML-a dokument posiada jeden element główny pracownicy, w którym zgodnie z DTD musi znaleźć się co najmniej jeden element Określanie kardynalności przez DTD w praktyce może okazać się za mało elastyczne, np. jeśli chce się określić, że dany element ma wystąpić dokładnie 12 razy lub co najwyżej 200 razy. Należy wtedy zastosować inne rozwiązanie np. XML Schema. Bibliografia
Linki zewnętrzne
Information related to Document Type Definition |