Dokumenttypsdeklaration
En dokumenttypsdeklaration , eller DOCTYPE , är en instruktion som associerar ett visst XML- eller SGML -dokument (till exempel en webbsida ) med en dokumenttypsdefinition (DTD) (till exempel den formella definitionen av en viss version av HTML 2.0 - 4.0 ). I den serialiserade formen av dokumentet manifesterar det sig som en kort sträng av markeringar som överensstämmer med en viss syntax.
HTML - layoutmotorerna i moderna webbläsare utför DOCTYPE "sniffing" eller "switching", där DOCTYPE i ett dokument som tjänas som text/html
bestämmer ett layoutläge, såsom " quirks mode " eller "standards mode". Text /html
-serialiseringen av HTML5 , som inte är SGML-baserad, använder DOCTYPE endast för lägesval. Eftersom webbläsare är implementerade med HTML-tolkare för särskilda ändamål, snarare än DTD-baserade tolkar för allmänna ändamål, använder de inte DTD:er och kommer aldrig åt dem även om en URL tillhandahålls. DOCTYPE behålls i HTML5 som en "mest värdelös, men nödvändig"-header endast för att utlösa "standardläge" i vanliga webbläsare.
DTD:er
Syntax
Den allmänna syntaxen för en dokumenttypsdeklaration är:
<!DOCTYPE rotelement PUBLIC "/quotedFPI/" "/quotedURI/" [ <!-- interna delmängdsdeklarationer --> ]>
eller
<!DOCTYPE rotelement SYSTEM "/quotedURI/" [ <!-- interna delmängdsdeklarationer --> ]>
I XML är rotelementet som representerar dokumentet det första elementet i dokumentet. Till exempel i XHTML är rotelementet <html>, vilket är det första elementet som öppnades (efter doctype-deklarationen) och sist stängdes. Nyckelorden SYSTEM och PUBLIC föreslår vilken typ av Document Type Definition (DTD) det är (en som finns på ett privat system eller en som är öppen för allmänheten). Om nyckelordet PUBLIC väljs följs det av en begränsad form av "public identifier" som kallas Formal Public Identifier (FPI) omsluten av dubbla citattecken. Den offentliga identifieraren kan följas av en "systemidentifierare" som likaledes har dubbla citattecken. Till exempel är FPI för XHTML 1.1 "-//W3C//DTD XHTML 1.1//EN" och det finns 3 möjliga systemidentifierare tillgängliga för XHTML 1.1 beroende på behoven. En av dem är URI-referensen " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ". Om istället nyckelordet SYSTEM väljs, tillhandahålls endast en systemidentifierare. Det betyder att XML-tolken måste lokalisera DTD på ett systemspecifikt sätt, i det här fallet med hjälp av en URI-referens för DTD:n omgiven av dubbla citattecken. Den sista delen, omgiven av bokstavliga hakparenteser ([]), kallas en intern delmängd som kan användas för att lägga till/redigera enheter eller lägga till/redigera PUBLIC nyckelordsbeteenden. Den interna delmängden är alltid valfri (och ibland till och med förbjuden inom enkla SGML-profiler, särskilt de för grundläggande HTML-tolkare som inte implementerar en fullständig SGML-tolkare).
I XHTML-dokument måste doctype-deklarationen alltid explicit ange en systemidentifierare. I SGML-baserade dokument som HTML, å andra sidan, kan lämplig systemidentifierare automatiskt härledas från den givna offentliga identifieraren. Denna association kan t.ex. utföras med hjälp av en katalogfil som löser FPI:n till en systemidentifierare.
Exempel
Den första raden på en webbsida kan lyda enligt följande:
<!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" >
Denna dokumenttypsdeklaration för XHTML innehåller genom referens en DTD, vars offentliga identifierare är -//W3C//DTD XHTML 1.0 Transitional//EN
och vars systemidentifierare är http://www.w3.org/TR/xhtml1/DTD/ xhtml1-transitional.dtd
. En enhetsupplösare kan använda vilken som helst identifierare för att lokalisera den refererade externa enheten. Ingen intern delmängd har angivits i det här exemplet eller nästa. Rotelementet förklaras vara html
och därför är det den första taggen som öppnas efter slutet av doctype-deklarationen i det här exemplet och de nästa också. HTML-taggen är inte en del av doctype-deklarationen men har inkluderats i exemplen i orienteringssyfte.
Vanliga DTD:er
Några vanliga DTD:er har lagts upp i listor. W3C har tagit fram en lista över DTD:er som ofta används på webben, som innehåller "blotta" HTML5 DTD, äldre XHTML/HTML DTD, DTD:er av vanliga inbäddade XML-baserade format som MathML och SVG samt "sammansatta" dokument som kombinerar dessa format. Både W3C HTML5 och dess motsvarande WHATWG-version rekommenderar webbläsare att endast acceptera XHTML DTD för vissa FPI och att föredra att använda intern logik framför att hämta externa DTD-filer. Den specificerar vidare en "intern DTD" för XHTML som bara är en lista över HTML-entitetsnamn.
HTML 4.01 DTD:er
Strict DTD tillåter inte presentationsmarkering med argumentet att Cascading Style Sheets ska användas för det istället. Så här ser Strict DTD ut:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" " http://www.w3.org/TR/html4/strict.dtd"> < html >
Transitional DTD tillåter vissa äldre PUBLIC och attribut som har föråldrats:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " http://www.w3.org/TR/html4/loose.dtd"> < html >
Om ramar används måste Frameset DTD användas istället, så här:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" " http://www.w3.org/TR/html4/frameset.dtd"> < html >
XHTML 1.0 DTD:er
XHTML :s DTD:er är också Strict, Transitional och Frameset.
XHTML Strikt DTD. Inga föråldrade taggar stöds och koden måste skrivas korrekt enligt XML-specifikationen.
<?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 är som XHTML Strict DTD, men föråldrade taggar är tillåtna.
<?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 är den enda XHTML DTD som stöder Frameset. DTD är nedan.
<?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 är den senaste versionen av XHTML, som introducerar stöd för XHTML-modularisering . XHTML 1.1 har strängheten för XHTML 1.0 Strict.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" " http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
XHTML Basic DTDs
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">
HTML5 DTD-lös DOCTYPE
HTML5 använder en DOCTYPE
-deklaration som är mycket kort, på grund av dess brist på referenser till en DTD i form av en URL eller FPI. Allt den innehåller är taggnamnet för dokumentets rotelement, HTML
. Med ord i själva specifikationsutkastet:
Med andra ord,
<!DOCTYPE html>
, skiftlägesokänsligt.
Med undantag för avsaknaden av en URI eller FPI-strängen (FPI-strängen behandlas skiftlägeskänslig av validatorer), är detta format (en skiftlägesokänslig matchning av strängen !DOCTYPE HTML ) detsamma som finns i syntaxen
för SGML-baserad HTML 4.01 DOCTYPE
. Både i HTML4 och i HTML5 definieras den formella syntaxen med versaler, även om både små bokstäver och mixar av gemener även behandlas som giltiga.
I XHTML5 måste DOCTYPE vara en skiftlägeskänslig matchning av strängen " <!DOCTYPE html>
"
. Detta beror på att i XHTML-syntax måste alla HTML-elementnamn vara med små bokstäver, inklusive rotelementet som refereras till i HTML5 DOCTYPE
.
DOCTYPE är valfritt i XHTML5 och kan helt enkelt utelämnas .
Men om uppmärkningen ska bearbetas som både XML och HTML ska en DOCTYPE användas.
Se även
- Dokumenttypsdefinitionen innehåller ett exempel
- RDFa
- XML-schema
externa länkar
- HTML Doctype översikt
- Rekommenderade DTD:er att använda i ditt webbdokument - en informativ (inte normativ) W3C Quality Assurance-publikation
- DOCTYPE-rutnät - ytterligare en översiktstabell [Senast ändrad 27 november 2006]
- Quirks-läge och övergångsläge
- Tweaking av boxmodell