A dokumentumtípus-deklaráció, más néven DOCTYPE olyan utasítás, ami egy adott XML- vagy SGML-dokumentumot (például weblapot) egy dokumentumtípus-definícióhoz (DTD) társít (például a HTML 2.0–4.0 egy verziójának formális definíciójához).HTML2 HTML3 HTML4 A dokumentum szerializált formájában rövid jelölőnyelvi karakterláncként jelenik meg, ami egy meghatározott szintaxisnak felel meg.
DTD-k
Szintaxis Egy dokumentumtípus-deklaráció általános szintaxisa: <!DOCTYPE root-element PUBLIC "/quotedFPI/" "/quotedURI/" [ <!-- internal subset declarations --> ]> vagy <!DOCTYPE root-element SYSTEM "/quotedURI/" [ <!-- internal subset declarations --> ]>
Az XML-ben a dokumentumot meghatározó gyökérelem a dokumentum első eleme. Például az XHTML-ben a gyökérelem <html>, az elsőként megnyitott (közvetlenül a dokumentumtípus-deklaráció után) és az utolsóként lezárt elem. A SYSTEM és PUBLIC kulcsszavak határozzák meg a dokumentumtípus-definíciót (DTD), vagyis hogy az privát vagy publikus. A PUBLIC kulcsszó esetén egy „nyilvános azonosító” szigorú formájával, az idézőjelek közt található Formal Public Identifierrel (FPI) folytatódik. Ezt követheti egy rendszer-azonosító, ami ugyanígy idézőjelek közt található. Például az XHTML 1.1 FPI-je "-//W3C//DTD XHTML 1.1//EN", és három különböző rendszer-azonosító tartozik hozzá a szükségnek megfelelően. Ha a SYSTEM kulcsszó van megadva, csak rendszer-azonosító van megadva. Ez azt jelenti, hogy a DTD-t a rendszerre jellemzően kell elhelyezni, ez esetben DTD idézőjelek közé helyezett URI-hivatkozásával. Az utolsó rész, amit szögletes zárójelek vesznek körül, a belső részhalmaz, ami entitások vagy a PUBLIC kulcsszóra vonatkozó viselkedések hozzáadását/szerkesztését teszi lehetővé. A belső részhalmaz mindig opcionális, de néhány egyszerű SGML-profil nem engedi meg, főleg az egyszerű HTML-értelmezőkéi, amik nem rendelkeznek teljes SGML-értelmezővel.
Az XHTML-dokumentumokban a dokumentumtípus-deklarációnak mindig meg kell adnia egy rendszer-azonosítót. Ezzel szemben az SGML-alapú dokumentumokban, például a HTML-ben a megadott nyilvános azonosítóból automatikusan kikövetkeztethető lehet. E társítást például egy, az FPI-t rendszer-azonosítóhoz rendelő katalógusfájl teheti meg.
Példa Egy weblap első sora az alábbi módon nézhet ki:
<!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">
Ezen XHTML-dokumentumtípus-deklaráció tartalmaz nyilvános hivatkozást egy DTD-re, melynek nyilvános azonosítója -//W3C//DTD XHTML 1.0 Transitional//EN, rendszer-azonosítója http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd. Egy entitásfeloldó bármelyiket használhatja a hivatkozott külső entitás helyének meghatározására. Nincs megadott belső részhalmaz ebben vagy a következő példákban. A gyökérelem html-ként van deklarálva, ezért az az elsőként megnyitott címke a dokumentumtípus-deklaráció vége után a példákban. A HTML címke nem része a dokumentumtípus-deklarációnak, de a tájékozódás céljából szerepel a példákban.
Gyakori DTD-k
Néhány gyakori DTD-t listáztak. A W3C létrehozott egy listát a weben gyakran használt DTD-kről, ami tartalmazza a „minimális” HTML5-DTD-t, régebbi XHTML/HTML-DTD-ket, gyakori XML-alapú formátumok, például a MathML vagy az SVG DTD-it, akárcsak az e formátumokat kombináló „összetett” dokumentumokéit. Mind a W3C HTML5, mind a megfelelő WHATWG-változat azt ajánlja, hogy bizonyos FPI-kre csak XHTML-DTD-ket fogadjanak el, és hogy belső logikát preferáljanak a külső DTD-fájlok használata helyett. Továbbá egy „belső DTD”-t specifikálnak az XHTML-re, ami csupán HTML-entitásnév-lista.
HTML 4.01 DTD-k A Strict DTD nem engedi meg a bemutató jelölést, helyette a lépcsőzetes stíluslapokat kell használni. Így néz ki a szigorú DTD:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html>
A Transitional DTD néhány régebbi PUBLIC-ot és elavult attribútumot megenged:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html>
Keretek használata esetén a Frameset DTD használandó, ami így néz ki:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <html>
XHTML 1.0 DTD-k Az XHTML DTD-i is a Strict, a Transitional és a Frameset.
XHTML Strict DTD: Nem támogatottak az elavult címkék, és a kód az XML-specifikációnak megfelelően írandó.
<?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">
Az XHTML Transitional DTD hasonlít az XHTML Strict DTD-re, de az elavult címkék megengedettek.
<?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">
Az XHTML Frameset DTD az egyetlen, kereteket támogató XHTML-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 Az XHTML 1.1 a legújabb végleges XHTML-kiadás, ami támogatja az XHTML-modularizációt. Ugyanolyan szigorú, mint az XHTML 1.0 Strict.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
XHTML Basic DTD-k 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">
A HTML5 DTD nélküli DOCTYPE-ja A HTML5 a DTD-re való URI- vagy FPI-hivatkozások hiánya miatt nagyon rövid DOCTYPE deklarációt használ. Csak a dokumentum gyökérelemének nevét (html) tartalmazza. A specifikációtervezetből idézve:
In other words, , case-insensitively.
A URI- vagy FPI-karakterlánc hiányától eltekintve (az FPI nem nagybetűérzékeny) e formátum (a !DOCTYPE HTML karakterláncra való nem nagybetűérzékeny egyezés) megegyezik az SGML-alapú HTML 4.01 DOCTYPE-deklarációjában. Mind a HTML4-ben, mind a HTML5-ben a formális szintaxis definiálásához nagybetűk használatosak, akkor is, ha a csupa kisbetűs változat és a kis- és nagybetűk keveréke is érvényesnek tekinthető.
Az XHTML5-ben a DOCTYPE a nagy- és a kisbetűket is figyelembe véve kell, hogy megegyezzen a karakterlánccal, mivel az XHTML-szintaxisban minden HTML-elemnévnek kisbetűsnek kell lennie, beleértve a HTML5 DOCTYPE-jában szereplő gyökérelemnevet.
A DOCTYPE opcionális az XHTML5-ben, és elhagyható. De ha a dokumentumnak XML-ként és HTML-ként is értelmezhetőnek kell lennie, érdemes használni.
Jegyzetek
További információk HTML Doctype overview Recommended DTDs to use in your Web document – tájékoztató (nem normatív) W3C minőség-ellenőrzési publikáció DOCTYPE grid – egy másik áttekintő táblázat (utolsó módosítás: 2006. november 27.) Quirks mode and transitional mode Box model tweaking
Kapcsolódó szócikk XML-séma
Kategória:XML-szabványok