Dokumentumtípus-deklaráció

A Wikipédiából, a szabad enciklopédiából

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).[1] 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[szerkesztés]

Szintaxis[szerkesztés]

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é.[2] 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.[3]

Példa[szerkesztés]

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[szerkesztés]

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.[4] 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.[5](§13.2)

HTML 4.01 DTD-k[szerkesztés]

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[szerkesztés]

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[szerkesztés]

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[szerkesztés]

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[szerkesztés]

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.[6] A specifikációtervezetből idézve:

In other words,

<!DOCTYPE html>

, 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

<!DOCTYPE html>

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ó.[7] De ha a dokumentumnak XML-ként és HTML-ként is értelmezhetőnek kell lennie, érdemes használni.[8]

Jegyzetek[szerkesztés]

  1. HTML2 HTML3 HTML4
  2. DOCTYPE Declaration. msdn.microsoft.com
  3. The DOCTYPE Declaration. [2011. augusztus 14-i dátummal az eredetiből archiválva]. (Hozzáférés: 2011. szeptember 9.)
  4. W3C QA - Recommended list of Doctype declarations you can use in your Web document (angol nyelven). www.w3.org . (Hozzáférés: 2019. március 22.)[halott link]
  5. HTML Standard. html.spec.whatwg.org . (Hozzáférés: 2019. március 22.)
  6. The HTML syntax ― HTML5. Web Hypertext Application Technology Working Group. (Hozzáférés: 2011. június 5.) „3. A string that is an ASCII case-insensitive match for the string "DOCTYPE". 5. A string that is an ASCII case-insensitive match for the string "HTML".”
  7. The XHTML syntax ― HTML5. Web Hypertext Application Technology Working Group. [2012. június 18-i dátummal az eredetiből archiválva]. (Hozzáférés: 2009. szeptember 1.)
  8. Polyglot Markup: HTML-Compatible XHTML Documents. World Wide Web Consortium. (Hozzáférés: 2012. január 17.)

További információk[szerkesztés]

Kapcsolódó szócikk[szerkesztés]