Grupa MagazynyInternetowe
Online: 410
Zastanawiałeś się kiedyś skąd przeglądarka wie czego spodziewać się po dokumencie i jak działa walidator stron? A może chcesz w kilka minut dowiedzieć się jak zbudowany jest dowolny język opisowy oparty o SGML? Przyjrzyj się informacjom o DTD.
Marcin Kosedowski
Niepozorny odnośnik umieszczony na początku źródła prawie każdej strony internetowej nie jest tylko ozdobnikiem. Zawiera szczegółowe informacje o tym jak przeglądarka ma interpretować umieszczone niżej tagi.
Plik ten nazywany jest "definicją typu dokumentu" (Document Type Definition DTD) i definiuje poprawną budowę bloków dokumentu XML. Określa listę dopuszczalnych elementów i ich atrybutów, dzięki czemu przeglądarka może renderować strony. Oczywiście twórcy przeglądarek wzięli pod uwagę strony, które nie mają zdefiniowanego znacznika !DOCTYPE i potrafią automatycznie rozpoznać popularne standardy.
Jeśli jednak decydujemy się na opracowanie własnego dokumentu lub przygotowujemy aplikację mającą interpretować pliki oparte o XML lub SGML powinniśmy skorzystać z dokumentów DTD. A może chcemy zbudować własny walidator?
Definicje mogą być umieszczone bezpośrednio w znaczniku !DOCTYPE lub w zewnętrznym pliku. Przyjrzyjmy się jak wyglądają na podstawie dokumentu definiującego znany typ XHTML 1.0 (http://www.w3.org/TR/xhtml1/DT...). Tylko na początku wygląda on na skomplikowany. W rzeczywistości można go opanować w kilka minut posługując się prostymi zasadami.
DTD to nie jedyny standard opisujący dokumenty. Jego alternatywą jest XML Schema 1.1. Dokument XML Schema definiuje dokumenty XML i sam jest poprawnym plikiem XML. Daje większe możliwości niż DTD. Więcej informacji znajduje się na stronie W3C (http://www.w3.org/XML/Schema).
Dokument składa się z kilku części. Na początku, w komentarzu, znajdują się informacje o opisywanym standardzie. Po nich umieszczono listę encji (entity). Możemy je traktować jako zmienne służących do definiowania skrótów do standardowego tekstu lub znaków specjalnych. Dokument zawiera kilka zdefiniowanych encji, np. używane później CDATA. Każda encja ma formę <!ENTITY nazwa-encji "wartosc-encji">. Wszystkie nazwy encji użyte w dokumencie poprzedzone procentem i zakończone średnikiem (%encja;) zostaną zamienione na zdefiniowane wartości.
Za listą encji umieszczono informacje o elementach (w tym przypadku tagach), jakie mogą wystąpić w dokumencie. Element ma składnię <!ELEMENT nazwa-elementu (dziecko1,dziecko2,...)>, gdzie dzieci są innymi elementami. Zamiast dzieci może pojawić się słowo EMPTY oznaczające, że element nie może zawierać żadnych dzieci (np. IMG).
Przy dzieciach może pojawić się kilka dodatkowych znaków (+, *, ?, ). Kod <!ELEMENT element ( jeden, dwa+ ,trzy* , cztery?, ( piec| szesc ) )> oznacza, że element musi mieć dokładnie jedno dziecko "jeden", więcej niż jedno dziecko "dwa" (oznaczone plusem), zero lub więcej dzieci "trzy" oznaczonych gwiazdką, maksymalnie jedno dziecko "cztery" (z pytajnikiem) i dokładnie jedno z dwóch: "piec" albo "szesc".
Z elementami związana jest lista ich atrybutów. Każdy atrybut opisany jest w postaci: <!ATTLIST nazwa-elementu nazwa-atrybutu typ-atrybutu domyslna-wartosc>. Nazwa-elementu określa do jakiego elementu odnosi się atrybut o nazwie nazwa-atrybutu. Domyslna-wartosc to łańcuch znaków w cudzysłowie albo jedna z wartości: #REQUIRED (atrybut wymagany), #IMPLIED (niewymagany) i #FIXED "wartosc" (ustalona wartość, której nie można zmienić). Typy atrybutów zostały szczegółowo opisane na stronie w3schools (http://www.w3schools.com/dtd/d...).
Tutorial w3schools ({link}http://www.w3schools.com/dtd/default.asp{/link}) ułatwia poznanie DTD.
Mimo że składnia dokumentu wydaje się ciężka do opanowania, to przedstawione powyżej zasady są wszystkim co konieczne do odczytania definicji typu dokumentu. Przy odrobinie praktyki okazuje się to dobrym sposobem na poznanie składni każdego języka opartego o XML lub SGML bez potrzeby przeglądania długich, opisowych dokumentacji.
Powiązane publikacje
Brak komentarzy
Marcin Kosedowski - programista i mimo wykształcenia typowo technicznego autor artykułów o tematyce dotyczącej Internetu i bezpieczeństwa w sieci. Hobbystycznie prowadzi bloga, na którym porusza sprawy związane z programowaniem i Internetem.
Adres bloga like-a-geek.jogger.pl
Artykuły tego autora:
Od lat piszemy o szczegółach tworzenia stron internetowych, ale brakuje informacji o tym jak zacząć. Pora to zmienić.
Polecamy:
Na skróty:
Magazyny Internetowe| Co za ile| Programy| Praca| Magazyn Internet| Internet Maker| Web Toster| ForumNasze serwisy: