HTML/DOCTYPE seletus

(Ümber suunatud leheküljelt HTML:DOCTYPE seletus)

HTML-i DOCTYPE deklaratsioon on vast üks kõige krüptilisema välimusega HTML dokumendi osi. Pole just palju neid veebimeistreid, kes oskaksid selle oma HTML failile lisada ilma, et peaksid kusagilt järele vaatama.

Antud peatüki eesmärk on seletada DOCTYPE deklaratsiooni ülesehituse detaile ning seeläbi ehk muuta too korrektse HTML faili kohustuslik osa arusaadavamaks ning ehk lausa meeldejäetavaks.

Vaatleme DOCTYPE'i osade kaupa.

Deklaratsiooni algus ja lõpp

muuda

Dokumenditüübi deklaratsiooni alguses on <!DOCTYPE ning lõpus >:

<!DOCTYPE ... >

Esimene asi, mis DOCTYPE deklaratsiooni puhul silma hakkab on see, et ta ei vasta XHTML-i reeglitele. "Elemendi" alguses on hüüumärk (!), "DOCTYPE" on kirjutatud suurte tähtedega ning pole ei sulgevat elementi </!DOCTYPE> ega ka kaldkriipsu elemendi lõpus: <!DOCTYPE ... />.

Pole ka ime, sest dokumenditüübid pärinevad varasemast ajast kui XHTML ja XML, nimelt on nad osa SGML-ist (Standard Generalized Markup Language). Ka HTML on defineeritud kui SGML-i reeglitele vastav keel. XHTML on defineeritud küll kui XML keel, aga XML on jällegi SGML-i reeglite alamhulk.

Järgnevalt vaatame, mida kirjutatakse DOCTYPE deklaratsiooni sisse.

Deklaratsiooni sisu

muuda

<!DOCTYPE ja > vahele jääv osa on kirjeldatav järgmiselt:

<!DOCTYPE Juurelement Kättesaadavus "..." "URI" >

Juurelement

muuda

Juurelement on see element, milles sisaldavad kõik antud dokumenditüübi ülejäänud elemendid. XHTML-i puhul on juurelemendiks "html" (väikeste tähtedega). HTML-i puhul pole tähesuurus oluline, võib kirjutada nii "HTML", "html" kui ka "Html" või veel midagi muud. Meelde tasub jätta, et väikeste tähtedega "html" on alati korrektne:

<!DOCTYPE html ... >

Kättesaadavus

muuda

Kättesaadavus märgib, millist sorti identifikaator on järgnevate jutumärkide vahel. Võimalikke väärtusi on kaks:

  • PUBLIC - märgib, et tegu on avaliku identifikaatoriga (FPI), mida vaatleme allpool täpsemalt.
  • SYSTEM - märgib, et tegu on süsteemse identifikaatoriga, nagu näiteks failisüsteemi aadress, veebiaadress või mõni muu URI.

Kuna me HTML-i puhul viitame me pea alati avalikult kättesaadavatele dokumenditüüpide definitsioonidele, siis kasutame alati siinkohal PUBLIC:

<!DOCTYPE html PUBLIC "..." ... >

URI (Uniform Resource Identifier) on lihtsalt aadress, mis viitab dokumenditüübi definitsiooni asukohale. URI kirjutatakse jutumärkide vahele. Näiteks HTML 4.01 standardis kirjeldatud dokumenditüüpide definitsioonid on leitavad järgmistelt aadressidelt.

http://www.w3.org/TR/html4/strict.dtd
http://www.w3.org/TR/html4/loose.dtd
http://www.w3.org/TR/html4/frameset.dtd

Külastades ülaltoodud linke saad näha vastavaid SGML keelseid definitsioone.

NB! URI lisamine DOCTYPE-le on valikuline, aga tungivalt soovituslik, sest ilma selleta võivad osad brauserid kasutada standards mode režiimi asemel quirks mode režiimi.

<!DOCTYPE html PUBLIC "..." "http://www.w3.org/TR/html4/strict.dtd">

Formal Public Identifier (FPI)

muuda

FPI (Formal Public Identifier - otsetõlkes "formaalne avalik identifikaator") on unikaalne nimi, mis määratakse igale dokumenditüübile. See ongi see keerukas osa DOCTYPE elemendist. Näiteks HTML 4.01 standardis on kirjeldatud järgmised kolm FPI-d:

-//W3C//DTD HTML 4.01//EN
-//W3C//DTD HTML 4.01 Transitional//EN
-//W3C//DTD HTML 4.01 Frameset//EN

XHTML 1.0 puhul on see praktiliselt sama, ainult et Strict versiooni puhul on "Strict" FPI-sse sisse kirjutatud:

-//W3C//DTD XHTML 1.0 Strict//EN
-//W3C//DTD XHTML 1.0 Transitional//EN
-//W3C//DTD XHTML 1.0 Frameset//EN

Järgnevalt seletame FPI-de ülesehitust.

"Registreeritus//Organisatsioon//Tüüp Kirjeldus//Keel"

Registreeritus

muuda

+ siinkohal märgib, et tegu on ISO (International Organization for Standardization) poolt registreeritud organisatsiooniga.

- märgib, et organisatsioon pole ISO poolt registreeritud. Näiteks IETF (Internet Engineering Task Force) ning and W3C (World Wide Web Consortium) pole registreeritud organisatsioonid.

Organisatsioon

muuda

DTD avaldanud organisatsiooni ametlik tunnus (OwnerID). Näiteks "W3C" või "IETF":

Tüüp

muuda

Tüüp (Public Text Class) määrab, millist tüüpi objektiga on tegu. Kuna HTML-i puhul viitame me alati dokumenditüübi definitsioonile, siis on tüübiks alati "DTD".

Kirjeldus

muuda

Kirjeldus (Public Text Description) on viidatava materjali üldtuntud nimi. Näiteks "HTML 4.01 Strict" või "XHTML 1.0 Transitional".

Määrab, millises (inim-)keeles viidatav dokument on kirjutatud. W3C standardid on alati kirjutatud inglise keeles, seega "EN".

Näitlik DOCTYPE-i kirjutamine

muuda

Seege võime järgi proovida iseseisvalt ühe DOCTYPE deklaratsiooni kirjutamist. Kuna kogu käesoleva wikiraamatu jooksul on kasutatud XHTML 1.0 Strict dokumenditüüpi, siis proovimegi kirjutada sellele vastava DOCTYPE deklaratsiooni.

  • Kõige algusesse käib teadagi <!DOCTYPE
<!DOCTYPE
  • Järgneb juurelemendi nimetus, milleks XHTML-is on html
<!DOCTYPE html
  • Kuna viitame avalikule standardile, siis muidugimõista võtmesõna PUBLIC
<!DOCTYPE html PUBLIC
  • Alustame FPI kirjutamist jutumärgi lisamisega
<!DOCTYPE html PUBLIC "
  • W3C pole ISO poolt tunnustatud standardiorganisatsioon, seega miinusmärk
<!DOCTYPE html PUBLIC "-
  • Lisame organisatsiooni nime, mis on eraldusmärkide "//" vahel
<!DOCTYPE html PUBLIC "-//W3C//
  • Tegemist on XHTML 1.0 Strict DokumendiTüübi Definitsiooniga, seega "DTD XHTML 1.0 Strict"
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict
  • FPI lõppu lisame veel ühe eraldusmärgi ning inglise keele tähise
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN
  • Veel üks jutumärk ning FPI on valmis
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  • Nüüd jääb vaid lisada ka sobilik URL, mis on vaat et raskemgi veel, kui FPI koostamine, aga teeme proovi.
  • W3C veebisaiti teavad vast kõik. Seal asuvad ka meile vajalikud DTD-d. Seega alustame domeenist www.w3.org (loomulikult koos http ja muu vajalikuga)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/
  • Kõik W3C tehnilised soovitused (Technical Recommendations) asuvad kataloogis "TR"
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/
  • Järgnevalt sõltub, millise HTML-i või XHTML-i versiooniga meil tegu on. Näiteks HTML 4.01 perekond on kataloogis "html4", XHTML 1.0 kataloogis "xhtml1" ning XHTML 1.1 kataloogis "xhtml11". Küllaltki lihtne meeles pidada, eksole. Seega:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/
  • Kui meil oleks nüüd tegemist HTML 4.01-ga, siis järgnevalt polekski muud, kui lisada vastav DTD failinimi: Strict puhul "strict.dtd", Transitional puhul "loose.dtd" ning Frameset puhul "frameset.dtd". XHTML-i puhul peame aga kõigepealt laskuma "DTD" kataloogi.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/
  • Ning nüüd siis lisame failinime, mis on kujul "xhtml1-{variant}.dtd", kus {variant} asemel on kas "strict", "transitional" või "frameset". Seega XHTML 1.0 Strict puhul:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd
  • Ning koos sulgeva jutumärgi ja nurksuluga ongi meie DOCTYPE valmis
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

Harjutused

muuda

Proovi nüüd iseseisvalt järgmisi harjutusi:

  1. Kirjuta XHTML-i DOCTYPE jättes jutumärkide vahele käivad osad (FPI ja URI) välja.
  2. Kirjuta HTML 4.01 Transitional dokumenditüübi FPI.
  3. Milline erinevus on XHTML 1.0 Strict ja HTML 4.01 Strict FPI-del?
  4. Mis aadressil asuvad World Wide Web Consortium'i tehnilised soovitused?
  5. Kirjuta XHTML 1.0 Transitional DTD faili aadress.
  6. Kirjuta HTML 4.01 Strict DOCTYPE deklaratsioon.
  7. Modifitseeri eelmist, et sellest saaks HTML 4.01 Transitional DOCTYPE deklaratsioon.

Lahendused

muuda
<!DOCTYPE html PUBLIC "" "">
-//W3C//DTD HTML 4.01 Transitional//EN

HTML-i puhul jäetakse kirjutamata sõna "Stirct":

-//W3C//DTD HTML 4.01//EN
-//W3C//DTD XHTML 1.0 Strict//EN
http://www.w3.org/TR/
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
 "http://www.w3.org/TR/html4/strict.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">

Viited

muuda