Dokumenttypedeklarasjon - Document type declaration
En dokumenttypedeklarasjon , eller DOCTYPE , er en instruksjon som knytter et bestemt XML- eller SGML -dokument (for eksempel en webside ) til en dokumenttypedefinisjon (DTD) (for eksempel den formelle definisjonen av en bestemt versjon av HTML 2.0 - 4.0 ). I den serielle formen av dokumentet manifesterer det seg som en kort markeringsstreng som samsvarer med en bestemt syntaks.
De HTML layout motorene i moderne nettlesere utføre DOCTYPE "sniffing" eller "veksling", karakterisert ved at DOCTYPE i et dokument tjente som text/htmlbestemmer et oppsett-modus, slik som " quirks mode " eller "standardmodus". Den text/htmlserialisering av HTML5 , som ikke er SGML-baserte, bruker DOCTYPE bare for modusvalg. Siden nettlesere er implementert med HTML-parsere for spesielle formål, i stedet for DTD-baserte parsere for generelle formål, bruker de ikke DTD-er og vil aldri få tilgang til dem selv om en URL er oppgitt. DOCTYPE beholdes i HTML5 som en "stort sett ubrukelig, men nødvendig" overskrift bare for å utløse "standardmodus" i vanlige nettlesere.
DTD -er
Syntaks
Den generelle syntaksen for en dokumenttypedeklarasjon er:
<!DOCTYPE root-element PUBLIC "FPI" ["URI"] [
<!-- internal subset declarations -->
]>
eller
<!DOCTYPE root-element SYSTEM "URI" [
<!-- internal subset declarations -->
]>
I XML er rotelementet som representerer dokumentet det første elementet i dokumentet. For eksempel, i XHTML, er rotelementet <html>, og er det første elementet som ble åpnet (etter doctype -erklæringen) og sist lukket. Stikkordene SYSTEM og PUBLIC antyder hva slags Document Type Definition (DTD) det er (et som er på et privat system eller et som er åpent for publikum). Hvis PUBLIC -søkeordet er valgt, blir dette søkeordet etterfulgt av en begrenset form for "offentlig identifikator" kalt Formal Public Identifier (FPI) som er omsluttet av doble anførselstegn. Etter det er det nødvendigvis også en "systemidentifikator" som er omsluttet av doble anførselstegn. For eksempel er FPI for XHTML 1.1 "-// W3C // DTD XHTML 1.1 // EN", og det er 3 mulige systemidentifikatorer tilgjengelig for XHTML 1.1 avhengig av behovene, en av dem er URI-referansen " http: //www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ". Hvis du i stedet velger SYSTEM -søkeordet, må du bare oppgi en systemidentifikator. Det betyr at XML -parseren må lokalisere DTD på en systemspesifikk måte, i dette tilfellet ved hjelp av en URI -referanse til DTD vedlagt i doble anførselstegn. Den siste delen, omgitt av bokstavelige parenteser [[]), kalles et internt undersett som kan brukes til å legge til/redigere enheter eller legge til/redigere PUBLIC søkeordatferd. Det interne delsettet er alltid valgfritt (og noen ganger til og med forbudt i enkle SGML -profiler, spesielt de for grunnleggende HTML -parsere som ikke implementerer en full SGML -parser).
På den annen side er dokumenttypedeklarasjoner litt forskjellige i SGML-baserte dokumenter, for eksempel HTML, der den offentlige identifikatoren kan være knyttet til systemidentifikatoren. Denne tilknytningen kan utføres, f.eks. Ved hjelp av en katalogfil som løser FPI til en systemidentifikator.
Eksempel
Den første linjen på en World Wide Web -side kan lyde som følger:
<!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">
Denne dokumenttypedeklarasjonen for XHTML inkluderer som referanse en DTD, hvis offentlige og hvis systemidentifikator er http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd. En enhetsresolver kan bruke enten identifikatoren for å finne den eksterne enheten det refereres til. Ingen intern delmengde er angitt i dette eller de neste eksemplene. Rotelementet er erklært å være, htmlog derfor er det den første taggen som skal åpnes etter slutten av doctype -erklæringen i dette eksemplet og de neste også. HTML -taggen er ikke en del av doctype -erklæringen, men har blitt inkludert i eksemplene for orienteringsformål.
Vanlige DTD
Noen vanlige DTD -er har blitt satt på lister. W3C har laget en liste over DTD-er som vanligvis brukes på nettet, som inneholder "bare" HTML5 DTD, eldre XHTML/HTML DTD-er, DTD-er med vanlige innebygde XML-baserte formater som MathML og SVG samt "sammensatte" dokumenter som kombinerer disse formater. Både W3C HTML5 og den tilsvarende WHATWG -versjonen anbefaler nettlesere å bare godta XHTML DTD -er for visse FPI -er og foretrekke å bruke intern logikk fremfor å hente eksterne DTD -filer. Den spesifiserer videre en "intern DTD" for XHTML som bare er en liste over HTML -enhetsnavn.
HTML 4.01 DTD -er
Streng DTD tillater ikke presentasjonsmarkering med argumentet om at Cascading Style Sheets skal brukes til det i stedet. Slik ser den strenge DTD ut:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
Overgangs -DTD tillater noen eldre PUBLIC og attributter som er blitt avskrevet:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
Hvis rammer brukes, må Frameset DTD brukes i stedet, slik:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<html>
XHTML 1.0 DTD
XHTMLs DTD er også strenge, overgangs- og rammesett.
XHTML Strict DTD. Ingen utdaterte koder støttes, og koden må skrives riktig i henhold til XML -spesifikasjonen.
<?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 er som XHTML Strict DTD, men utdaterte tagger er tillatt.
<?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 er den eneste XHTML DTD som støtter Frameset. DTD er nedenfor.
<?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 er den siste oppdaterte revisjonen av XHTML, og introduserer støtte for XHTML Modularization . XHTML 1.1 har stringensen til 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 -er
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-less DOCTYPE
HTML5 bruker en DOCTYPEveldig kort erklæring på grunn av mangel på referanser til en DTD i form av en URL eller FPI. All den inneholder er kodenavn av roten element i dokumentet, HTML. Med ordene i spesifikasjonsutkastet selv:
Med andre ord,
<!DOCTYPE html>ufølsom.
Med unntak av mangel på en URI eller FPI-strengen (FPI-strengen blir behandlet med store og små bokstaver av validatorer), er dette formatet (et ufølsomt samsvar med strengen !DOCTYPE HTML) det samme som finnes i syntaksen til SGML-basert HTML 4.01 DOCTYPE. Både i HTML4 og i HTML5 er den formelle syntaksen definert med store bokstaver, selv om både små og store bokstaver også blir behandlet som gyldige.
I XHTML5 det DOCTYPEmå være en case-sensitive kamp av strengen " <!DOCTYPE html>". Dette skyldes at alle HTML -elementnavn i XHTML -syntaks må være med små bokstaver, inkludert rotelementet det refereres til inne i HTML5 DOCTYPE.
Den DOCTYPEer valgfri i XHTML5 og kan ganske enkelt utelates. Hvis merkingen skal behandles som både XML og HTML , bør en DOCTYPE imidlertid brukes.
Se også
- Dokumenttypedefinisjon inneholder et eksempel
- RDFa
- XML -skjema
- Cascading Style Sheets
Referanser
Eksterne linker
- Oversikt over HTML Doctype
- Anbefalte DTD -er som skal brukes i nettdokumentet ditt - en informativ (ikke normativ) W3C kvalitetssikringspublikasjon
- DOCTYPE grid - en annen oversiktstabell [Sist endret 27. november 2006]
- Quirks -modus og overgangsmodus
- Boksmodell tweaking