Deklaracja typu dokumentu - Document type declaration

Deklaracja typu dokumentu , lub DOCTYPE , to instrukcja, która kojarzy dany XML lub SGML dokumentu (na przykład, strona internetowa ) z definicji typu dokumentu (DTD) (na przykład, formalna definicja konkretnej wersji HTML 2.0 - 4.0 ). W postaci zserializowanej dokumentu manifestuje się jako krótki ciąg znaczników zgodny z określoną składnią.

W HTML silniki układ w nowoczesnych przeglądarkach wykonać DOCTYPE „wąchania” lub „przełączania”, w którym DOCTYPE w dokumencie pełnił funkcję text/htmlokreślającą tryb układu, takie jak „ Quirks Mode ” lub „trybie standardowym”. text/htmlSerializacji HTML5 , który nie jest SGML-based, wykorzystuje DOCTYPE tylko do wyboru trybu pracy. Ponieważ przeglądarki internetowe są zaimplementowane z parserami HTML specjalnego przeznaczenia, a nie parserami ogólnego przeznaczenia opartymi na DTD, nie używają one DTD i nigdy nie uzyskają do nich dostępu, nawet jeśli podano adres URL. DOCTYPE jest zachowywany w HTML5 jako „w większości bezużyteczny, ale wymagany” nagłówek tylko w celu uruchomienia „trybu standardowego” w popularnych przeglądarkach.

DTD

Składnia

Ogólna składnia deklaracji typu dokumentu to:

<!DOCTYPE root-element PUBLIC "FPI" ["URI"] [ 
<!-- internal subset declarations -->
]>

lub

<!DOCTYPE root-element SYSTEM "URI" [ 
<!-- internal subset declarations -->
]>

W XML element główny reprezentujący dokument jest pierwszym elementem w dokumencie. Na przykład w XHTML elementem głównym jest <html>, będący pierwszym otwartym elementem (po deklaracji doctype) i ostatnim zamkniętym. Słowa kluczowe SYSTEM i PUBLIC sugerują, jakiego rodzaju jest to definicja typu dokumentu (DTD) (w systemie prywatnym lub ogólnodostępnym). W przypadku wybrania słowa kluczowego PUBLIC, po tym słowie kluczowym następuje ograniczona forma „identyfikatora publicznego” o nazwie Formalny Identyfikator Publiczny (FPI) ujęta w podwójne cudzysłowy. Po tym koniecznie dostarczany jest również „identyfikator systemu” zawarty w podwójnych cudzysłowach. 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 odniesienie URI " http: //www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ”. Jeśli zamiast tego zostanie wybrane słowo kluczowe SYSTEM, należy podać tylko identyfikator systemu. Oznacza to, że parser XML musi zlokalizować DTD w sposób specyficzny dla systemu, w tym przypadku za pomocą referencji URI DTD zawartej w podwójnych cudzysłowach. Ostatnia część, otoczona dosłownymi nawiasami kwadratowymi ([]), nazywana jest wewnętrznym podzbiorem, którego można używać do dodawania/edytowania jednostek lub dodawania/edytowania 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).

Z drugiej strony deklaracje typu dokumentu są nieco inne w dokumentach opartych na SGML, takich jak HTML, gdzie identyfikator publiczny może być powiązany z identyfikatorem systemowym. To skojarzenie może być wykonane np. za pomocą pliku katalogu rozwiązującego FPI na identyfikator systemowy.

Przykład

Pierwsza linia strony WWW może wyglądać 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 odwołanie DTD, którego publiczny i systemowy identyfikator to http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd. Rozpoznawanie encji może użyć dowolnego identyfikatora do zlokalizowania wskazanej encji zewnętrznej. W tym przykładzie ani w następnych nie wskazano żadnego wewnętrznego podzbioru. Element główny jest zadeklarowany jako be htmli dlatego jest pierwszym znacznikiem, który zostanie otwarty po zakończeniu deklaracji doctype w tym przykładzie, a także w następnych. Znacznik HTML nie jest częścią deklaracji doctype, ale został uwzględniony w przykładach w celach orientacyjnych.

Wspólne DTD

Niektóre popularne 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 je łączą. formaty. Zarówno W3C HTML5, jak i odpowiadająca mu wersja WHATWG, zalecają przeglądarkom, aby akceptowały tylko DTD XHTML niektórych FPI i preferowały używanie wewnętrznej logiki zamiast pobierania zewnętrznych plików DTD. Dalej określa "wewnętrzne DTD" dla XHTML, które jest jedynie listą nazw encji HTML.

DTD HTML 4.01

Ścisłe 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 dopuszcza niektóre starsze PUBLIC i atrybuty, które zostały przestarzałe:

 <!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ć Frameset DTD, tak jak poniżej:

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
   "http://www.w3.org/TR/html4/frameset.dtd">
 <html>

DTD XHTML 1.0

DTD XHTML są również Strict, Transitional i Frameset.

XHTML Ścisłe DTD. Nie są obsługiwane żadne przestarzałe tagi, 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 znaczniki.

 <?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 obsługującym Frameset. DTD znajduje się poniżej.

 <?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 najnowsza sfinalizowana wersja XHTML, wprowadzająca wsparcie dla Modularyzacji XHTML . XHTML 1.1 ma rygorystyczność 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">

XHTML Basic 1.1

<!DOCTYPE html PUBLIC
  "-//W3C//DTD XHTML Basic 1.1//EN"
  "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">

DOCTYPE HTML5 bez DTD

HTML5 używa DOCTYPEdeklaracji, 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>bez uwzględniania wielkości liter.

Z wyjątkiem braku identyfikatora URI lub ciągu FPI (ciąg FPI jest traktowany z uwzględnieniem wielkości liter przez walidatory), ten format (dopasowanie ciągu bez uwzględniania wielkości liter !DOCTYPE HTML) jest taki sam, jak w składni HTML opartego na SGML 4.01 DOCTYPE. Zarówno w HTML4, jak i HTML5 formalna składnia jest definiowana wielkimi literami, nawet jeśli zarówno małe, jak i kombinacje małych wielkich liter są również traktowane jako prawidłowe.

W XHTML5DOCTYPE musi być rozróżniana wielkość liter w łańcuchu " <!DOCTYPE html>". Dzieje się tak, ponieważ w składni XHTML wszystkie nazwy elementów HTML muszą być pisane małymi literami, łącznie z elementem głównym, do którego odwołuje się wewnątrz HTML5 DOCTYPE.

DOCTYPEJest opcjonalny w XHTML5 a może po prostu pominąć. Jeśli jednak znacznik ma być przetwarzany zarówno jako XML, jak i HTML , należy użyć DOCTYPE.

Zobacz też

Bibliografia

Linki zewnętrzne