Deklaracja typu dokumentu
Deklaracja typu dokumentu lub DOCTYPE to instrukcja, która wiąże określony dokument XML lub SGML (na przykład stronę internetową ) z definicją typu dokumentu (DTD) (na przykład formalną definicją określonej wersji HTML 2.0 - 4.0 ). W serializowanej formie dokumentu manifestuje się jako krótki ciąg znaczników , który jest zgodny z określoną składnią.
Silniki układu HTML w nowoczesnych przeglądarkach internetowych wykonują „wąchanie” lub „przełączanie” DOCTYPE, przy czym DOCTYPE w dokumencie podanym jako tekst/html
określa tryb układu, taki jak „ tryb dziwactw ” lub „tryb standardów”. Serializacja text /html
HTML5 , która nie jest oparta na SGML, używa DOCTYPE tylko do wyboru trybu. Ponieważ przeglądarki internetowe są implementowane za pomocą parserów HTML specjalnego przeznaczenia, a nie parserów ogólnego przeznaczenia opartych na DTD, nie używają one DTD i nigdy nie uzyskują do nich dostępu, nawet jeśli podany jest adres URL. DOCTYPE jest zachowywany w HTML5 jako „przeważnie bezużyteczny, ale wymagany” nagłówek tylko do uruchamiania „trybu standardowego” w popularnych przeglądarkach.
DTD
Składnia
Ogólna składnia deklaracji typu dokumentu jest następująca:
<!DOCTYPE element główny PUBLIC "/quotedFPI/" "/quotedURI/" [ <!-- wewnętrzne deklaracje podzbiorów --> ]>
Lub
<!DOCTYPE element główny SYSTEM "/quotedURI/" [ <!-- wewnętrzne deklaracje podzbioru --> ]>
W XML element główny reprezentujący dokument jest pierwszym elementem w dokumencie. Na przykład w XHTML elementem głównym jest <html>, który jest pierwszym otwieranym elementem (po deklaracji doctype) i ostatnim zamkniętym. Słowa kluczowe SYSTEM i PUBLIC sugerują, jaki to rodzaj definicji typu dokumentu (DTD) (taka, która znajduje się w systemie prywatnym lub taka, która jest ogólnodostępna). Jeśli wybrano słowo kluczowe PUBLIC, następuje po nim ograniczona forma „identyfikatora publicznego” o nazwie Formalny identyfikator publiczny (FPI) ujęta w podwójne cudzysłowy. Po identyfikatorze publicznym może następować „identyfikator systemu”, który również jest ujęty w podwójne cudzysłowy. Na przykład, FPI dla XHTML 1.1 to "-//W3C//DTD XHTML 1.1//EN" i istnieją 3 możliwe identyfikatory systemowe dostępne dla XHTML 1.1 w zależności od potrzeb. Jednym z nich jest odnośnik URI „ http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ”. Jeśli zamiast tego zostanie wybrane słowo kluczowe SYSTEM, zostanie podany tylko identyfikator systemu. Oznacza to, że parser XML musi zlokalizować DTD w sposób specyficzny dla systemu, w tym przypadku za pomocą odwołania URI do DTD ujętego w podwójne cudzysłowy. Ostatnia część, otoczona dosłownymi nawiasami kwadratowymi ([]), nazywana jest wewnętrznym podzbiorem, którego można użyć do dodawania/edycji encji lub dodawania/edycji zachowań słów kluczowych PUBLIC. Wewnętrzny podzbiór jest zawsze opcjonalny (a czasami nawet zabroniony w prostych profilach SGML, szczególnie tych dla podstawowych parserów HTML, które nie implementują pełnego parsera SGML).
W dokumentach XHTML deklaracja doctype musi zawsze jawnie określać identyfikator systemowy. Z drugiej strony, w dokumentach opartych na SGML, takich jak HTML, odpowiedni identyfikator systemowy może być automatycznie wywnioskowany z podanego identyfikatora publicznego. To powiązanie może np. być wykonane za pomocą pliku katalogu, który rozdziela FPI na identyfikator systemowy.
Przykład
Pierwszy wiersz strony WWW może brzmieć następująco:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> < html lang = "ar " dir = "ltr" xmlns = "http://www.w3.org/1999/xhtml" >
Ta deklaracja typu dokumentu dla XHTML zawiera przez odniesienie DTD, którego identyfikatorem publicznym jest -//W3C//DTD XHTML 1.0 Transitional//EN
i którego identyfikatorem systemowym jest http://www.w3.org/TR/xhtml1/DTD/ xhtml1-transitional.dtd
. Narzędzie do rozpoznawania jednostek może używać dowolnego identyfikatora do lokalizowania przywoływanej jednostki zewnętrznej. W tym przykładzie ani w następnych nie wskazano żadnego podzbioru wewnętrznego. Elementem głównym jest zadeklarowany html
i dlatego jest to pierwszy znacznik otwierany po zakończeniu deklaracji doctype w tym przykładzie iw następnych. Znacznik HTML nie jest częścią deklaracji doctype, ale został uwzględniony w przykładach dla celów orientacyjnych.
Wspólne DTD
Niektóre wspólne DTD zostały umieszczone na listach. W3C stworzyło listę DTD powszechnie używanych w sieci, która zawiera „nagie” DTD HTML5, starsze DTD XHTML/HTML, DTD popularnych osadzonych formatów opartych na XML, takich jak MathML i SVG, a także „złożone” dokumenty , które łączą te formaty. Zarówno W3C HTML5, jak i odpowiadająca mu wersja WHATWG zalecają przeglądarkom akceptowanie tylko DTD XHTML niektórych FPI i preferowanie używania wewnętrznej logiki zamiast pobierania zewnętrznych plików DTD. Ponadto określa „wewnętrzne DTD” dla XHTML, które jest jedynie listą nazw jednostek HTML.
HTML 4.01 DTD
Strict DTD nie zezwala na znaczniki prezentacyjne z argumentem, że zamiast tego należy użyć kaskadowych arkuszy stylów. Tak wygląda Strict DTD:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" " http://www.w3.org/TR/html4/strict.dtd"> < html >
Przejściowe DTD zezwala na niektóre starsze PUBLICZNE i atrybuty, które zostały wycofane:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " http://www.w3.org/TR/html4/loose.dtd"> < html >
Jeśli używane są ramki , zamiast tego należy użyć DTD zestawu ramek, jak poniżej:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" " http://www.w3.org/TR/html4/frameset.dtd"> < html >
XHTML 1.0 DTD
DTD XHTML są również Strict, Transitional i Frameset.
Ścisłe DTD XHTML. Żadne przestarzałe tagi nie są obsługiwane, a kod musi być napisany poprawnie zgodnie ze specyfikacją XML.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" " http://www.w3.org/TR/ xhtml1/DTD/xhtml1-strict.dtd"> < html xmlns = "http://www.w3.org/1999/xhtml" xml:lang = "en" lang = "en" >
XHTML Transitional DTD jest podobny do XHTML Strict DTD, ale dozwolone są przestarzałe tagi.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/ xhtml1/DTD/xhtml1-transitional.dtd"> < html xmlns = "http://www.w3.org/1999/xhtml" xml:lang = "en" lang = "en" >
XHTML Frameset DTD jest jedynym XHTML DTD, które obsługuje Frameset. Poniżej znajduje się DTD.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" " http://www.w3.org/TR/ xhtml1/DTD/xhtml1-frameset.dtd"> < html xmlns = "http://www.w3.org/1999/xhtml" xml:lang = "en" lang = "en" >
XHTML 1.1 DTD
XHTML 1.1 to najbardziej aktualna sfinalizowana wersja XHTML, wprowadzająca obsługę modularyzacji XHTML . XHTML 1.1 ma surowość XHTML 1.0 Strict.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
Podstawowe DTD XHTML
XHTML Basic 1.0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
Podstawy XHTML 1.1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">
HTML5 DOCTYPE bez DTD
HTML5 wykorzystuje deklarację DOCTYPE
, która jest bardzo krótka, ze względu na brak odniesień do DTD w postaci adresu URL lub FPI. Wszystko, co zawiera, to nazwa znacznika głównego elementu dokumentu, HTML
. Mówiąc słowami samego projektu specyfikacji:
Innymi słowy,
<!DOCTYPE html>
nie uwzględnia wielkości liter.
Z wyjątkiem braku URI lub ciągu FPI (łańcuch FPI jest traktowany przez walidatory z uwzględnieniem wielkości liter), format ten (dopasowanie łańcucha bez rozróżniania wielkości liter !DOCTYPE HTML ) jest taki sam, jak w
składni Oparty na SGML HTML 4.01 DOCTYPE
. Zarówno w HTML4, jak iw HTML5 składnia formalna jest zdefiniowana wielkimi literami, nawet jeśli zarówno małe litery, jak i ich kombinacje są również traktowane jako poprawne.
W XHTML5 DOCTYPE musi uwzględniać wielkość liter w łańcuchu " < !
DOCTYPE html>
". Dzieje się tak dlatego, że w składni XHTML wszystkie nazwy elementów HTML muszą być pisane małymi literami, w tym element główny, do którego odwołuje się HTML5 DOCTYPE
.
DOCTYPE jest opcjonalny w XHTML5 i można go
po prostu pominąć. Jeśli jednak znaczniki mają być przetwarzane zarówno jako XML, jak i HTML , należy użyć DOCTYPE.
Zobacz też
Linki zewnętrzne
- Omówienie typów dokumentów HTML
- Zalecane DTD do użycia w twoim dokumencie internetowym - informacyjna (nie normatywna) publikacja W3C Quality Assurance
- Siatka DOCTYPE - kolejna tabela poglądowa [Ostatnia modyfikacja 27 listopada 2006]
- Tryb dziwactwa i tryb przejściowy
- Dopasowanie modelu pudełkowego