Kaikki aihepiirit: Luettelen alla aihealueittain tekemäni aihepiirit. Paluulinkkeinä tähän aihepiiriin on tämä valikko ja sivun yläreunassa oleva linkki Aihepiiriluettelo.
| ||||||||||||||||||
![]() | Aihepiiriluettelo > CSS-oppaan etusivu > Opassivut > 1. Mikä on HTML ja XML asiakirjojen perusrakenne > 1. yhtenä isona sivuna |
|---|
Edellinen sivu | Sivun jaksot: | Seuraava sivu![]() |
Tämä sivu on jaettu jaksoihin, jotka sisältävät seuraavia aiheita:
HTML-sivujen tekeminen on helppoa. On olemassa paljon
ohjelmia, joilla sivuja voi tehdä
ymmärtämättä oikeastaan juuri
mitään HTML-asiakirjojen koodin rakenteesta, sillä
ne näyttävät sivut suoraan lähes sellaisina
kuin ne näkyvät eri selaimissa (aivan tarkka tuo
yhtäläisyys ei yleensä ole). Tällaisia
sovelluksia nimitetään WYSIWYG-ohjelmiksi
(What You
See Is What
You Get = mitä
näet sen saat
).

Tämän tason sivujen tekeminen ei riitä, mikäli pyritään tehokkaasti käyttämään CSS:ää. On siksi ainakin suhteellisen syvällisesti ymmärrettävä HTML- ja XML-dokumenttien rakenne. Jaksot 1-4 ovat yleisluontoisia johdantosivuja HTML:n ja CSS:n ymmärtämiseen ennen tarkempia opassivuja. Käsittelen niissä ensisijaisesti HTML-koodausta ja viimeisessä jaksossa XML-koodausta. Jos HTML on sinulle ennestään tuttua, voit jättää osan jaksoista välistä ja siirtyä suoraan kohtaan HTML 4.0 + CSS ja CSS:n tavoitteet. Suosittelen kuitenkin, että luet elementtien käyttäytymiseen liittyviä kommentteja sivulta Help for TM CSS menu (kommentit ovat englanniksi).
HTML ja XML dokumentit (selostan
myöhemmin, mitä XML tarkoittaa)
sisältävät ns. elementtejä
(elements), jotka ovat em. asiakirjojen
perusrakenneosia. Elementtien ensisijaisena tarkoituksena on
luoda dokumenteille selkeä rakenne (structure),
joskin niillä on myös muita tehtäviä (Alaviite 1![[S]](../Kuvat/buttons/S.gif)
).
Rakenteen merkityksen
ymmärtää, jos vertaa seuraavia kahta
asiakirjaa:
Ilman rakennetta oleva teksti: ![[M]](../Kuvat/buttons/M.gif)
![[S]](../Kuvat/buttons/S.gif)
.
Asiakirja, jonka tekstillä on yksinkertainen rakenne: ![[M]](../Kuvat/buttons/M.gif)
![[S]](../Kuvat/buttons/S.gif)
.
Jotta elementit erottuisivat (asia)sisällöstä (content), niiden olemassaolo tarvitsee merkitä alku- ja yleensä myös loppukoodauksilla. Niistä käytetään englanninkielisissä teksteissä nimeä tag (start-tag ja end-tag tai muut vastaavat ilmaisut), joka sananmukaisesti tarkoittaa merkintää eli kansanomaisemmin merkkausta. Kun kyseessä on elementti, asiallisesti tarkka käännösvastine olisi elementtimerkkaus.
HTML perustuu SGML-kieleen
(Standard Generalized
Markup Language =
standardi yleismerkintäkieli
. SGML on yleinen
dokumenttien rakenteen esittämiskieli, joka
sisältää välineet eri dokumenttityyppien
kuvaamiseksi (käsittelen dokumenttityyppiä koskevia
näkökulmia tarkemmin edempänä). SGML ei ole
siis merkintäkieli vaan metakieli eli tapa
kuvata merkintäkieliä, jotka ovat sekä ihmisen
että koneen luettavissa.
SGML-dokumentaatiossa kirjoitetaan
elementtimerkkauksista
seuraavasti (lisäsin tekstiin hieman korosteita; voit katsoa myös sanan tag
selityksen![[S]](../Kuvat/buttons/S.gif)
):
Markup that describes the structure and other attributes of a document in a non-system specific manner, independently of any processing that may be performed to it. In particular, SGML descriptive markup uses tags to express the element structure.
Elementtimerkkaukset ovat dokumentin elementtirakennetta
kuvaavia ja siten kielen tärkeimpiä
merkintäkoodeja (markup codes;
HTML ja XML-kielissä on eräitä muitakin
merkintäkoodeja, joita käsittelee
Alaviite 2![[S]](../Kuvat/buttons/S.gif)
). Jos
sana tag
haluttaisiin "kääntää" sen
selityksen perusteella, voisimme
nimittää sitä kuvausmerkinnäksi.
Elementin
nimeä kutsutaan sen
yleistunnisteeksi (generic
identifier) ja se tarkoittaa eri asiaa kuin tag
,
mikä käy ilmi seuraavista SGML- ja
modularisaatiodokumentaatioiden sitaateista:
SGML:W3C: CSS2: 4 CSS2 syntax and basic data types, 4.1.3
Generic identifier (GI) = A name that identifies the element type of an element
Modularization of XHTML (Terms and Definitions):
- Tag
- Descriptive markup delimiting the start and end (including its generic identifier and any attributes) of an element.
.Tosiasiassa elementin nimi yhdessä rajoittimien kanssa
toimii tunnistimena (mitä tarkoitetaan rajoittimilla, tulee esille elementin
käsitekaaviossa![[S]](../Kuvat/buttons/S.gif)
, jossa esimerkkinä on elementti
HTML). On silti terminologinen asiavirhe sanoa,
että elementtimerkkaus kokonaisuudessaan on tunniste,
sillä elementin alkumerkkaus saattaa sisältää
useita tunnisteita (käsittelen tätä asiaa
tarkemmin myöhemmin; voit tutkia asiaa myös käännösvastineen
perusteluista![[S]](../Kuvat/buttons/S.gif)
).
SGML:ssä
elementtimerkkaukset eivät
itsessään sisällä mitään
toimintaohjetta, mutta HTML:ssä niillä on
määritellyt tehtävät. Perustehtävä
on kuitenkin sama kuin SGML:ssä eli kuvata dokumentin
rakennetta. Nimi HTML
johtuu osaltaan siitä,
että aloitus- ja päätösmerkkaukset
merkitsevät alueita. Siksi puhumme
merkintäkielestä (markup
language).
Elementtimerkkaus eli alkukielessä tag
on
ikään kuin "leima", joka
"isketään" elementin alkuun ja mahdollisesti myös
loppuun, jotta elementti varmasti erottuisi muusta koodista.
Sitä voisi verrata puiden leimaamiseen. tai voit ajatella
sen "lapuksi", joka laitetaan valitun
sisällön alkuun ja loppuun. Toivon, että sitä
havainnollistaa käyttämäni eläinvertaus.
Tälle eläimelle laitetaan eräitä
merkintöjä. Mutta ei toki kuvassa olevia! Asiakirjamme nimi voisi olla vaikka
Lehma.html.

Toinen keskeinen merkitys on se, että elementtien avulla
luodaan linkkejä. HTML suunniteltiin alun alkaen hyvin
yksinkertaiseksi kieleksi luoda dokumentteja, jotka
sisältävät hyperlinkkejä
(hyperlinkit ovat dokumentin sisäisiä tai dokumenttien
välisiä linkkejä). Tämän vuoksi puhumme
HTML:n yhteydessä hypertekstistä ja HTML-kielestä
(Hyper Text
Markup Language =
hypertekstin merkintäkieli
- alunperin HTML
sisälsi vain tekstilinkkejä). Itse asiassa alun alkaen
muut kuin linkitykseen tarvittavat elementit olivat
lähinnä vain viestinnän selkeyttämisen
apukoodeja, jotta asiasisältö olisi luettavampaa ja se
voisi olla selkeästi jäsenneltyä (![[M]](../Kuvat/buttons/M.gif)
![[S]](../Kuvat/buttons/S.gif)
).
Elementit, jotka voivat saada sekä alku- että päätösmerkkaukset, voivat toimia sisällön ja toisten elementtien säilyttiminä eli "konttielementteinä" (element containers). Tällaiset elementit voivat olla emoelementtejä (parent elements) lapsielementeille (child-elements) eli elementeille, jotka ovat jonkun emoelementin alku- ja päätösmerkkauksen välissä ilman että elementtien välissä on muita elementtitasoja (käsittelen tätä näkökulmaa tarkemmin myöhemmin). Emoelementeillä voi olla sisältömalleja (content models; vastaavasti elementillä, joka on jonkun toisen elementin lapsielementti, voi olla emomalleja, parent models).
Jotkut elementit eivät voi saada
päätösmerkkauksia, sillä ne
eivät rajaa mitään sisältöaluetta.
Tällöin niitä nimitetään
"tyhjiksi elementeiksi" (empty
elements). Esimerkki elementtien käytöstä
(esimerkissä on elementit P= paragraph
eli kappale
ja BR = pakotettu
rivikatko
), joka näkyy seuraavanlaisena ns.
lähdekoodia (source code) katsomalla (![[M]](../Kuvat/buttons/M.gif)
![[S]](../Kuvat/buttons/S.gif)
):
<P>Tämä teksti on aloitus-<BR>ja päätösmerkkausten välissä,<BR>mutta välissä on eräitäBR-elementtejä,<BR>jotka aiheuttavat ylimääräisiä rivikatkoja.</P>
Edellinen sivu | Sivun jaksot: | Seuraava sivu![]() |
Alaviite
1. Jotkut käyttävät elementeistä
nimitystä komento
, mitä en pidä
onnistuneena. Se antaa niistä liian aktiivisen mielikuvan.
Elementeillä voi olla HTML ja XML dokumenteissa kuitenkin
sangen passiviinen rooli, vaikka on niitäkin
elementtejä, jotka suorittavat käyttäjän
aktivoivan komennon. Koska elementeillä on hyvin
monenlaisia käyttötarkoituksia, pitäydyn
neutraaliin ilmaisuun. Sana elementti
antaa
mielestäni paremman kuvan siitä, että elementit
ovat kielen rakenneosia. Tällainen tehtävä
niillä on kaikissa merkintäkielissä. Lisäksi
käyttämäni termi on täysin
läpinäkyvä, jolloin lukijan on helppo siirtyä
suomenkielisestä tekstistä englanninkielisten
spesifikaatioiden pariin.
Alaviite 2.
Esimerkkinä HTML standardi dokumenttityypistä on
http://www.w3.org/TR/REC-html40/loose.dtd. Selain ei
tarvitse tietoa käytetystä dokumenttityypistä.
Tiedostoa ei voi tarkistuttaa ilman, että asiakirjassa on
käytettyihin elementteihin ja attribuutteihin viittaava
DTD-ilmoitus, esim.: <DOCTYPE HTML PUBLIC "-//W3C//DTD
HTML 4.0//EN">. DTD:ssä
määriteltävät kuvaukset (declarations) ja
niiden muoto (... = jonkin kuvauksen sisältö):
<!ELEMENT ...
><!ATTLIST ...
><!ENTITY % formctrl "INPUT | SELECT | TEXTAREA |
LABEL | BUTTON">. Selitän niiden
käyttöä eräässä parissa
englanninkielisessä sivussa (Help for HTML All
ja
Help for TM ../HTMLKit/wappush
). Yritän löytää termiluetteloon![[S]](../Kuvat/buttons/S.gif)
termille mielekkään
suomenkielisen vastineen.
.<!ENTITY amp "&#38;">.
HTML-dokumenteissa näitä ovat eräät sovitut
koodien merkintätavat, jotka on standardi DTD-tiedostoissa
joko lueteltu tai ne on löydettävissä viitatuista
osoitteista. Niitä tarvitaan esim. esittämään
tämä merkki näytöllä <.
Kyseistä merkkiä tarvitaan koodaukseen. Sen
näyttäminen tekstinä tulee toteuttaa
erityiskoodauksella, joka alkaa &-merkillä,
keskellä lukee lt ja se päättyy
; - merkkiin. Aksentoidut kirjaimet tulisi aina
merkitä entiteetteinä, esim. ä =
ä ja ç = ç
(espanjalais-portugalilainen kirjain). Tekstiä, jossa
entiteetit käännetään tietyiksi kirjaimiksi,
kutsutaan nimellä PCDATA
(Parsed Character
Data; katso
myös selitys viittaukselle #PCDATA
).Koodin sisällä
käytetyt entiteetit sekä kommentit ovat viittaamiani
muita merkintäkoodeja.
Merkintäkoodit (markup codes) = elementtimerkkaukset,
kommenttimerkkaukset, yleisentiteetit. Lisäksi XML
käyttää merkkausta <![CDATA[ ja
]]>, joka vaihtaa moodin. Merkkauksen
sisällä oleva koodi käsitellään
sellaisenaan, ilman jäsentelyä (CDATA =
Character Data).
Eräät käytöstä
poistuneet HTML 2.0 ja HTML 3.2 -elementit
toteuttavat joillakin selaimilla saman
asian.
Sen lisäksi, että elementit on luokittelu normaaleihin ja tyhjiin elementteihin, HTML:ssä on olemassa myös toinen perusluokittelu: lohkoelementit (tarkemmin sanottuna lohkotason elementit, block level elements) ja rivinsisäiselementit (tarkemmin sanottna rivinsisäistason elementit, inline level elements). Lohkoelementin kohdalla selain luo elementin ympärille ikään kuin näkymättömän suorakaiteen muotoisen laatikon (box) eli lohkon. CSS1 spesifikaatioissa sanotaan lohkoelementeistä, että niitä ennen ja niiden jälkeen on rivikatko.
Lohkoelementit voidaan luokitella joihinkin alaluokkiin.
Yleisiä lohkoelementtejä ovat H1-H6,
P, BLOCKQUOTE, OL,
UL ja TABLE. Lohkoelementit voivat
yleensä sisältää toisia lohkoelementtejä
(eräitä rajoituksia on kuitenkin olemassa, joihin en
tässä puutu) ja rivinsisäiselementtejä.
Tämäkin teksti on lohkoelementin sisällä.
Lohkoelementit toimivat ensisijaisesti asiasisällön
jäsentely-, ryhmittely- ja rakenne-elementteinä
(structural elements).
Rivinsisäiselementtejä on
kahdentyyppisiä. Ensinnäkin
erilaiset tekstiin liittyvät
rivinsisäiselementit, esim. B ja
I, joita voidaan pitää
esitysasullisina elementteinä (inline
presentational). Useimmilla tämän
ryhmän elementeillä on tietty
semanttinen (semantic =
merkitysopillinen
) sisältö. Em. elementit
voidaan ilmaista myös semanttista puolta kuvaavilla
elementeillä EM (emphasized =
painotteinen
) ja STRONG. Näitä
elementtejä voisi kutsua rivinsisäisiksi
fraasielementeiksi (inline phrasal).
Tällaiset rivinsisäiselementit voivat olla
rajoituksetta keskenään sisäkkäisiä
(nested).
Ne eivät luo ympärilleen lohkoelementtien tavoin suorakaiteen muotoisia laatikoita vaan elementit liikkuvat rivin mukana. Ne käyttäytyvät kuin rivillä oleva fraasi. Tekstiin vaikuttavia rivinsisäiselementtejä käytetään ensisijaisesti korostamaan jotain asiasisällön kohtaa.
Opiskeluaikana monet pistivät kirjoihinsa keltaisella
paksulla tussilla merkkauksia. Käytän samaan tapaan
elementtiä CODE, jonka avulla merkitsen
sinisellä vain lähdekoodissa näkyvät
merkintäkoodit - huomaa, että tässä
lauseessa olevat korosteiset sanat ovat
rivinsisäiselementtejä (CODE ja
STRONG).

Myös linkitykseen käytetty erityiselementti
A (sanasta Anchor = ankkuri
)
kuuluu rivinsisäiselementteihin. Se käyttäytyy
tekstiin vaikuttavien elementtien tavoin, mutta sen rajoituksena
on se, että linkitykseen käytetyt elementit eivät
saa olla sisäkkäisiä.
Toiseksi on olemassa
rivinsisäiselementtejä, jotka luovat
ympärilleen yhtenäisen laatikon, mutta jotka
kuitenkin liikkuvat rivin mukana toisin kuin lohkoelementit.
Näitä elementtejä voisi käyttäytymisen
perusteella nimittää
rivinsisäislohkoelementeiksi
(inline block elements). Eräät
tyhjät elementit ovat luonteeltaan
rivinsisäiselementtejä ja ne
käyttäytyvät juuri tällä tavoin (kuten
IMG = kuva
).
Yleisesti ottaen rivinsisäiselementtejä tulisi yleensä käyttää vain lohkoelementtien sisällä. Tosin jotkin HTML-versiot sallivat niiden käyttämisen yksinäänkin, mutta niiden käyttö tällä tavoin ei ole suositeltavaa.
Lohko- ja
rivinsisäiselementit tulisi sijoittaa
toisiinsa nähden oikein. Elementtien
väärinkäyttö on yleistä. Vaikka selaimet
hyväksyvät jonkin verran elementtien
väärää sijoittelua, se voi kuitenkin
aiheuttaa ennalta odottamatonta
virhekäyttäytymistä ja jopa kaataa selaimen. Voit
opetella lohko- ja rivinsisäiselementtien oikeaa
käyttöä englanninkielisistä eri spesifikaatioita
käsittelevistä nooteista
ja taulukoista
. Myös tälle sivustolle
määrittelemäni semantiikka
opettaa
jonkin verran elementtien oikeaa käyttöä.
Elementeistä muodostetaan asiakirjoille ns.
dokumenttipuu (document tree),
jossa on yksi ns. juurielementti (root
element), joka HTML-asiakirjoissa on HTML
(XML-dokumenteissa se voi olla jokin muukin elementti).
Juurielementin sisällä on
piilotieto-osa, jonka kokoavana elementtinä
on HEAD. Tässä käytetty vertauskuva
vaihtuu vartaloon ja head
tarkoittaa päätä
(emme suomenkielessä voi kuitenkaan kirjoittaa
(dokumentin) pääosa
, joten meidän tulee
tyytyä kirjoittamaan (dokumentin) HEAD-osasta). Sen
lisäksi, että joillakin elementeillä on
pää ja vartalo, niillä on myös "jalkaosa"
(kuten TFOOT = table foot(er) = taulukon
(ei-pakollinen) jalkaosa). Sinun tulee nyt ajatella seisovaa
ihmistä - tai ajattele lehmäämme istumassa
takajalkojensa varassa. Kuten olet varmaan jo huomannut, silloin
kun dokumentissa olevista elementeistä
käytetään vertauskuvia, niitä tarkastellaan
lopusta alkuun päin tai suoraan edestä päin.
Head-osan sisällä olevat elementit
sisältävät esim. erilaisia piilotiedotteita
sekä mahdollisesti dokumentin runko-osaan vaikuttavia
ohjelmointikoodauksia. Ainoa mikä HTML-asiakirjoissa
normaalisti näkyy kyseisestä osasta selaimen
käyttäjille on selainikkunassa näkyvä
dokumentin kutsumanimi, joka on elementin TITLE
sisällä.
Dokumentin näkyvä osa on nimeltään
runko-osa (suomenkielessä on parempi
kirjoittaa rungosta kuin vartalosta) ja sen kokoavana
elementtinä on BODY. Sellaiset runko-osan
elementit, joilla on alku- ja loppumerkinnät, voivat koota
sisälleen toisia elementtejä ja muodostaan hyvinkin
monimutkaisia sisäkkäisiä rakenteita. Ne ovat kuin
dokumenttipuun näkyviä "oksia". Tällä tavoin
puu symbolisoi dokumentin olemusta.

Seuraavaksi esimerkki yksinkertaisesta dokumenttipuusta, jossa dokumentin runko koostuu yleisistä lohkoelementeistä; laitoin mukaan myös sisennetyt elementtimerkkaukset, jolloin voit ymmärtää, miten elementit ovat keskenään sisäkkäin:
HTML |
- HEAD
|
-META
(ei-välttämätöntä
(implied) piilotietoa sisältävä
elementti lähinnä hakurobotteja varten)-TITLE (vaadittu (required)
elementti) |
|
- BODY
|
- H1 (pääotsikko, jonka
sisään laitetaan
rivinsisäiselementtejä)
|
||
<HTML>
<HEAD>
<META>
<TITLE></TITLE>
</HEAD>
<BODY>
<H1></H1>
<P></P>
<P></P>
<BLOCKQUOTE></BLOCKQUOTE>
<OL>
<LI></LI>
<LI></LI>
</OL>
</BODY>
</HTML>
Tästä dokumenttipuusta on myös
mallisivu: ![[M]](../Kuvat/buttons/M.gif)
![[S]](../Kuvat/buttons/S.gif)
.
.Elementeillä voi olla myös lisämääritteitä, ns. attribuutteja (attributes), jotka sijoitetaan elementin alkumerkkauksen sisään.
Attribuuteilla on monenlaisia tehtäviä. Niitä
käytetään esim. tarkentamaan elementin
esitysasua (presentation). Linkit
toteutetaan yleensä elementin A
erityisattribuuttien avulla (href, id
ja name).
Koska tyhjät elementit eivät voi toimia
säilytinelementteinä, ne voivat saada jonkinlaisen
sisällön vain attribuuttiensa avulla. Joissakin
tapauksissa elementti korvataan viitatulla
sisällöllä. Esim. elementti IMG
korvataan kuvalla, johon attribuutti src viittaa
(tällaista elementtiä kutsutaan nimityksellä
korvattava rivinsisäiselementti,
replaced inline (level) element - muut ovat
tietenkin ei-korvattavia rivinsisäiselementtejä,
non-replaced inline level elements).
Yksittäisillä attribuuteilla on
arvoja (values). HTML 3.2 dokumentissa
elementille P voi olla esim. attribuutti
align="center", joka tarkoittaa keskitä
kappale
(![[M]](../Kuvat/buttons/M.gif)
![[S]](../Kuvat/buttons/S.gif)
):
<P align="center">Tässä on tavallinen kappale, joka on keskitetty kuten tämä esimerkkikappale käyttäen attribuuttiaalign="center".</P>
Selvyyden vuoksi pyrin siihen, että tekstissä ja
esimerkeissä elementit on merkitty isolla
kirjaimella (esim. BLOCKQUOTE) ja
kaikki attribuutit ja niiden määrittelyt
pienellä kirjaimella (esim. style=" ...
").
On kuitenkin kaksi poikkeusta. Dokumenttityypin
kuvausilmoitus on isolla kirjaimilla, koska se on yleinen tapa.
Se ei kuulu dokumentin varsinaiseen rakenteeseen. Mikäli
ilmoitus sisältää tiedostonimen, se antaa
selaimelle mahdollisuuden ladata DTD-tiedosto tietokoneen
muistiin. Erilaisille validaattori ohjelmille tieto on
välttämätön. Alkuerottimessa on huutomerkki
(<!DOCTYPE ... >).
W3C on luonut HTML -dokumenteille ns.
DTD-tiedostot
(Document Type
Definition =
dokumenttityyppimäärittely
), jotka
sisältävät tiedot elementeistä ja
käytetyistä attribuuteista sekä tiedon siitä,
millaisia rakenteita dokumentissa sallitaan.
Dokumenttityypin kuvausilmoitus on kuin lehmän korvamerkkaus (eartag). Lehmä ei tarvitse korvamerkintää, mutta sen isäntä (ja viranomaiset) tarvitsee. Selain osaa ne ilman ilmoitustakin, mutta periaatteessa juuri dokumenttityyppi ilmoittaa sen kielen, jolla dokumentti on kirjoitettu (kuten aiemmin on tullut esille, määrittelykielenähän HTML-dokumenteissa on SGML).

XML-dokumentit sen sijaan saattavat tarvita
dokumenttityyppi-ilmoitusta, sillä sivujen tekijä voi
luoda oman dokumenttityyppikuvauksen. XML-dokumenteissa
korvamerkintää vastaakin <?xml
version="1.0"?>. Käytän viitatessani XML-elementteihin pieniä
kirjaimia.
Kommenteissa käytetään seuraavan
kaltaisia merkitsemistapoja, joita olen itsekin
käyttänyt esimerkeissäni (katso kommentin käsitekaavio![[S]](../Kuvat/buttons/S.gif)
):
/* tämä on
CSS-kommentti, joka CSS-määrittelyjä
ymmärtävillä selaimilla selvyyden vuoksi
pitäisi näkyä vihreänä */
<!-- merkitsen myös mahdolliset HTML-kommenttien
aloitus- ja päätösmerkit vihreällä
-->Yksinkertainen HTML
dokumentti koostuu vain elementeistä,
attribuuteista sekä sisällöstä, jossa
käytetään erityiskirjaimille omia
merkintäkoodeja (lue Alaviite 2![[S]](../Kuvat/buttons/S.gif)
, jos haluat tietää
tarkemmin asiasta).
Dokumentin osaset luovat asiakirjoille seuraavat perustekijät (esitän ne siinä tärkeysjärjestyksessä, minkä katson niillä olleen ensimmäisissä HTML-dokumenteissa):
HTML:n alkuperäinen idea on, että se on ensisijaisesti rakenne- ja semantiikkakieli, ei esitysasukieli, vaikka muutamat elementit voidaan ymmärtää esitysasullisina elementteinä. Seuraavassa jaksossa käydään lävitse hieman eri HTML:n historiaa.
Ensimmäiset HTML asiakirjat olivat hyvin yksinkertaisia dokumentteja, joissa oli vähän elementtejä ja attribuutteja. Elementit loivat lähinnä yksinkertaisen rakenteen. Koska mitään virallisia spesifikaatioita ei ollut, ensimmäisiä nykyistä HTML:ää muistuttavia koodauksia voidaan kaiketi kutsua "esi-HTML:ksi".

Rakenne-elementtien lisäksi jotkut elementit olivat
semanttisia (esim. STRONG), mutta esitysasua
kuvaavia elementtejä ei Dan Connollyn ensimmäisessä
DTD:ssä ollut. Sen sijaan W3C:n hakemistossa, joka käsittelee
ensimmäisiä HTML-dokumentteja on käytetty
elementtejä B ja I (niidenkin
käytön voi ymmärtää osittain
semanttisesti). Ensimmäiset dokumentit eivät
sisältäneet lainkaan kuvia eikä
fonttimäärittelyjä, sillä dokumenttien tuli
olla käyttöympäristöstä riippumattomia,
kuten seuraavasta sitaatista käy ilmi:
It is required that HTML be a common language between all platforms. This implies no device-specific markup, tai anything which requires control over fonts tai colors, for example. This is in keeping with the SGML ideal.
Tutustu varhaisien HTML-versioiden historiaan sivun Help for HTML All johdanto-osa Document types
avulla.
; esimerkkihakemisto.HTML 2.0 toi jo mahdollisuuden käyttää kuvia, mutta elementtien ja attribuuttien määrä pysyi sangen pienenä. Vähitellen niihin haluttiin yhä lisää tekstinkäsittelyohjelmien (kuten Word, WordPerfect) tapaisia muotoiluja ja lisäelementtejä, jolloin elementtien ja attribuuttien määrää kasvatettiin, mikä näkyy HTML 3.2:ssa.
HTML 3.2:ssa kaikki attribuutit liitettiin aikaisempien versioiden tapaan
elementtien sisään ja siten myös osaksi asiakirjan runkoa (BODY).
Sisältö,
rakenne ja esittäminen ovat yleensä samassa
dokumentissa lukuun ottamatta linkitettyjä kuvia ja ns.
upotettuja (embed) elementtejä (kuten esim. ns.
Java-kielellä tehtyjä pienoissovelluksia
(applets), joita en käsittele näillä
sivulla lainkaan). Tällaisen HTML asiakirjan luominen on
erittäin helppoa. Ongelmana on muotoilun
staattisuus - kerran tehtyjä muotoiluja voi olla hidasta
muuttaa jälkikäteen varsinkin, jos esitysasua kuvaavia
elementtejä ja attribuutteja on paljon!
HTML 3.2 johti HTML:n käytön harhapoluille. HTML:ää itseään pyrittiin käyttämään sivuntaittokielenä (layout language), mihin sitä ei oltu alunperin suunniteltu ja mihin se soveltuu huonosti. HTML 3.2 oli väliaikaisratkaisu, josta ei koskaan pitänyt tulla niin yleisesti käytetty sivuntekotapa kuin siitä käytännössä tuli.
Tosin jos sivu muodostetaan automaattisesti generoituna tietokannasta (esim. Java-servleteillä (servlets) tai Perl -skripteillä), HTML 3.2 toimii ihan hyvin, sillä esim. automaattisesti luotu linkkilista tarvitsee vain yhden pohjatiedoston. HTML 3.2:lla ei kuitenkaan saa tehtyä kaikkea sitä, mihin CSS pystyy. Lisäksi CSS:ää käytettäessä lopullisen koodin määrä on useimmiten selvästi pienempi, jolloin sivut voivat latautua nopeammin.
Suurin etu CSS:llä saavutetaankin käsinkirjoitetuissa laajoissa opetus- ja opassivustoissa, kuten CSS-sivuissani. Toiseksi suurin etu on sivustoissa, joissa osa tuotetaan automaattisesti ja osa käsin. Joku voi tehdä automaattisesti tuotetun osa, joku toinen voi tehdä käsin kirjoitetut osan ja joku kolmas voi CSS:n avulla määritellä yhteisen esitysasun.
HTML 4.0:n ja CSS:n avulla sisältö ja sen ulko- eli esitysasu (esittämistapa) voidaan eriyttää osittain or lähes kokonaan toisistaan käyttäen CSS-koodausta. Lyhenne CSS tarkoittaa seuraavaa (käsitteet ovat loogisessa järjestyksessä):
tyylieli elementtien ulkoasun esittäminen käyttäen erityisiä tyylikuvauksia ja -sääntöjä (käsittelen niitä tarkemmin edempänä).
tyyliarkit= tyylikuvaukset ja -säännöt kootaan "tyyliarkeiksi" eli tyylisivuiksi (nykyisin tyylisivu on standardiksi muodostunut sanan
sheetvastine, mitä voi pitää oikeutettuna, sillä arkkikin on sivu); yksittäinen tyylisivu on paikka, jossa on yksi tai useampia varsinaisia or loogisia tyylisääntöjä, jotka määrittelevät dokumentin esitysasun (spesifikaatioissa on hieman epätarkat määritelmät; lue Alaviite 1
![[S]](../Kuvat/buttons/S.gif)
).
CSS:ssä on kyse useiden, eri
lähteistä
peräisin olevien tyylikuvauksien ja
-sääntöjen soveltamisesta samanaikaisesti.
Tämän vuoksi spesifikaatio kirjoittaa sheets
monikossa ja suomenkielessä tulee käyttää
monikkomuotoista ilmausta arkit
.
Tyylisäännöillä on toisiinsa nähden
ikään kuin porrastetut, tarkoin säädellyt
painoarvot (weigth).
CSS ei ole täyspiirteinen kieli, sillä se toimii vain toisten kielten apukielenä (yleisimmin HTML, XML ja XSL). Se ei se sisällä lainkaan HTML:n kaltaisia elementtimerkkauksia. CSS:n käyttöä voi verrata pikemminkin JavaScript ja ECMAScript ohjelmointikieliin, joita kutsutaan nimellä scripting languages. Sekä JavaScript-kieltä että CSS:ää voidaan käyttää dokumentin runko-osassa hyvin lyhyinä koodikatkelmina. CSS ei ole kuitenkaan ohjelmointikieli, vaikka sen syntaksi on niiden perua.
CSS1 on rajoitettu mekanismi käyttää erilaisia tyylejä Web-asiakirjoissa ja se on siten rajoittunut muotoilukieli (formatting language). CSS1:tä ei voi pitää varsinaisena sivuntaittokielenä.
Sen sijaan CSS2 on jo lähes
täysipainoinen sivuntaittokieli, sillä sen avulla pystyy luomaan suurimman osan Web-dokumenttien
tarvitsemista muotoiluista ja sivujen tarvitsemista kontrolleista. Tosin eräitä puutteita
siinäkin on. Nämä puutteet pyritään
korjaamaan CSS3:ssa
. Muotoilu merkitsee ensisijaisesti visuaalista muotoilua (visual formatting). CSS on
kuitenkin monessa muussakin
mielessä muotoilukieli.
Jos selain toteuttaisi täysin CSS2:n, kielellä voisi teoriassa määritellä useimpien HTML:n rakenneosien eli elementtien muotoilupiirteet kokonaan uudestaan. CSS käyttäisi tällöin HTML-elementtejä lähinnä vain merkkauskoodeina. HTML itsessään ei toimisi juuri lainkaan muotoilukielenä. Elementtien todellista järjestystä CSS:llä ei tosin pysty muuttamaan (kylläkin poistamaan elementtejä näytöltä tai sijoittamaan ne toisiin paikkoihin - miten se tapahtuu selviää myöhemmin).
Muotoilu- ja sivuntaittokielen keinoin CSS2 pyrkii seuraaviin tavoitteisiin:
Sisältö ja sen esittäminen voidaan irrottaa toisistaan.
Muotoilukeinoja käyttäen voidaan muuttaa myös dokumentin rakennetta. CSS ei ole kuitenkaan keino irrottaa rakenne ja sisältö kokonaan toisistaan, koska se ei kykene muuttamaan elementtien todellista järjestystä.
Sillä voidaan luoda tarkempia ja monipuolisempia esitysasumäärittelyjä elementeille kuin mitä HTML-kielellä yksinään on mahdollista.
Tiedostot voivat olla alaspäin yhteensopivia.
Perusasiakirjat voivat olla rakenteeltaan hyvin yksinkertaisia.
Sama asiakirja voidaan tarjota hyvin erilaisena erilaisille laitteille. Visuaalisen esittämisen sijaan tiedot voidaan syöttää näkövammaisia ajatellen erityiskirjoittimille tai puhesyntetisaattoreille. Tällöin kyseessä on kuuloon ja kosketukseen perustuva dokumenttien muotoilu.
CSS-tiedostoja voidaan käyttää muissakin kuin HTML-asiakirjoissa, kuten XML-asiakirjoissa.
CSS mahdollistaa palaamisen HTML:n alkuperäiseen ideaan
eli paluu juurille! äärimmilleen vietynä HTML 4.0
asiakirja ei itsessään sisällä ainuttakaan esitysasua kuvaavaa attribuuttia, vaan
lähinnä rakenne-
ja linkityselementtejä ja -attribuutteja. Sellaisia
elementtejä ja attribuutteja, jotka koskevat puhtaasti
tekstin esittämistyyliä (kuten esim. elementtejä
FONT, B, I, U
ja attribuutteja align, bgcolor) ei
käytetä. Osa em. elementeistä ovat
sinänsä sallittuja, mutta ne ovat joka tapauksessa
ei-suositeltavia, sillä elementtien ensisijaisena
tarkoituksena on ilmaista dokumenttien rakenne ja semantiikka, ei
sen esitystapa. Tämä sivu ei käytä edes
sallittuja esitysasullisia elementtejä.
Muotoilut linkitetään useimmiten
pääosin erillistiedostoon käyttäen muotoa
<LINK rel="stylesheet" type="text/css"
href="tyylisivutiedosto.css"> kuten tässä
esimerkissä (![[M]](../Kuvat/buttons/M.gif)
![[S]](../Kuvat/buttons/S.gif)
):
<DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">Asiakirjan otsikko
<HTML>
<HEAD>
<LINK rel="stylesheet" type="text/css" href="tyylisivutiedosto.css">
<TITLE></TITLE>Otsikkoteksti
</HEAD>
<BODY>
<H2></H2>Kappale
<P></P>Toinen kappale.
<P><A href="html_asiakirja.html">Linkki</A >. Ainoat välttämättä tarvittavat attribuutit ovat linkit sekä mahdolliset linkitettävät objektit kuten kuvat.</P>
</BODY>
</HTML>
Tiedostossa tyylisivutiedosto.css kuvataan,
miten esim. elementti H2 näytetään
tietokoneruudulla. Sama koskee tätä dokumenttia. CSS
mahdollistaa korvata HTML 3.2 tyyliset dokumentin esitysasua
koskevat attribuuttimäärittelyt paljon rikkaammalla
tavalla esittää asiakirjan ulkoasu.
Lopputuloksena voi olla äärimmäisen
pelkistetty, vähän koodia sisältävä ja
nopeasti latautuva asiakirja, joka on kaikesta huolimatta hyvin
näyttävä selaimelle, joka ymmärtää
CSS:ää - mutta samalla äärimmäisen karu
selaimelle, joka ei sitä ymmärrä. Todellisuudessa
esim. Netscape 3.x pudotetaan ulkonäön esittämisen
suhteen lähes alkuajan selainten tasolle. Tätä on
HTML 4.0 Strict (strict= ankara,
tinkimätön
)!
Vaikka rakenne on pääosin itse asiakirjassa, siihen voidaan periaatteessa joiltakin osin vaikuttaa myös CSS:n avulla. Koska elementtien ulkoasun määrittelyt ovat erillistiedostossa, sivuston ulkoasun ja eräiden rakenteiden muuttaminen on äärimmäisen helppoa! Sivun tekijän (author) ei tarvitse uudestaan koodata yksittäisiä elementtejä. Minimitapauksessa riittää, että muutat vain muutaman kirjainmerkin ja tuhansien sivujen ulkoasu muuttuu kerralla!
On mahdollista luoda myös löysiä
(loose), HTML 4.0 Transitional
asiakirjoja. Transitional
tarkoittaa "murrosvaiheen"
dokumenttityyppimäärittelyä. Asiakirja
sisältää muotoiluja, jotka HTML 4.0:ssa strict ei
tarvita ja jotka siinä voidaan korvata CSS:llä.
Tällaiset määrittelyt katsotaan vähitellen
poistuviksi ja korvautuviksi. Paremman yhteensopivuuden vuoksi
niitä käytetään vanhempia selaimia varten.
Tosin poistuvuuden suhteen olen hieman eri mieltä kuin
jyrkimmät CSS:n käyttäjät. Monin paikoin on
joustavampaa käyttää HTML 3.2 attribuutteja kuin
CSS:ää.
Tämä dokumentti on lähes
strict-kriteerit täyttävä. Olen
käyttänyt dokumentin varsinaisessa asiaosassa lähes yksinomaan sellaisia elementtejä ja
attribuutteja, jotka on mainittu HTML 4.0 strict.dtd asiakirjassa
(sen sijaan yksittäisissä linkkeissä ja linkkikokonaisuuksissa on strict-dokumenttityyppiin
kuulumattomia elementtejä ja attribuutteja, joihin kuuluu elementille A annettu attribuutti
target; lue viimeksi mainittuun attribuuttiin liittyvä Alaviite 2![[S]](../Kuvat/buttons/S.gif)
).
Tämän dokumentin näyttäminen riippuu
vanhoilla selaimilla niiden oletusasetuksista ja
käyttäjän niihin tekemistä mahdollisista
muutoksista. Testaa ero! Vertaa tiedostoa
tyylisivun kanssa (![[S]](../Kuvat/buttons/S.gif)
) ja ilman sitä (![[S]](../Kuvat/buttons/S.gif)
). Jälkimmäinen on kuin
HTML 2.0 asiakirja.
Huomautus. HTML 4.01 (HTML 4.0:n korjattu versio) ja CSS2 spesifikaatiot on suunniteltu toteuttamiskelpoisiksi. Selaimen pitää toimia mahdollisimman pitkälle niin, että sen tukemat spesifikaatiot pääsevät toteutumaan. On kuitenkin muistettava se, että HTML ja CSS spesifikaatiot kehittyvät ja niiden kesken tulee olla priorisointi.
Jos eri spesifikaatioiden välillä ilmenee ristiriitoja, toimitaan selaimen tukeman uusimman spesifikaation mukaan. Vanhempia spesifikaatioita toteutetaan siinä määrin kuin niitä voidaan toteuttaa aiheuttamatta ristiriitaa uudempien kanssa.
Koska CSS:n perusideana muualta käsin (kuten erillistiedostoista) pystyä poistamaan tai muuttamaan minkä tahansa esitysasua koskevan HTML-elementin tai -attribuutin vaikutusta, CSS:lle pitää antaa suhteessa HTML:ään etusija, mikäli sekä HTML että vastaava CSS on annettu tai HTML ylipäätänsä käsittelee jollakin tavalla samoja esitysasullisia piirteitä kuin CSS.
Käyn lävitse näillä sivuilla seuraavia asioita:
Yritän tällä sivulla selittää, mitä ovat tyylisivut.
Sivulla 2 käsittelen sitä, missä niitä voidaan määritellä. Annan joitakin käytännön esimerkkejä yksinkertaisista tyylisivuista.
Sivulla kolme käsittelen mahdollisia mittayksiköitä ja värejä.
Sivuilla 4-5 käsittelen sitä, milloin käyttäjäsovellukset (UA = User agents, useimmiten WWW-selaimet) käsittelevät niitä lopullisessa prosessissa.
Sivut 6-9 käsittelevät sivun yksityiskohtia (fontit, ankkurit ja linkit, tausta, reunukset ja listat).
Sivut 10-11 käsittelevät dokumentin perusrakenteiden hallintaa.
Sivu 12 on vilaus tulevaisuuteen.
Seuraava jakso käsittelee HTML 4.01:n jälkeisiä XHTML-spesifikaatiota sekä XML-dokumentteja. Mikäli et ole niistä kiinnostunut, voit hypätä sivulle 2.
John Allsop: The key ideas of CSS
. Edellinen sivu | Sivun jaksot: | Seuraava sivu![]() |
Alaviite 1. Seuraavat spesifikaatioiden määritelmät vaativat vähän selittämistä:
a collection of rulesCSS2:
A set of statements that specify presentation of a document.
Yksittäinen tyylisivu ei
sisällä
välttämättä useaa sääntöä
eli sääntö- tai lausekokoelmaa (a collection of
rules
(sama kuin a rule set
) tai a set of statements
). Yksinkertaisimmillaan se
sisältää joko yhden säännön tai se
ei sisällä lainkaan varsinaista
sääntöä, esim.
style="color:blue". Tällaisessa
tapauksessakin on kuitenkin kyse loogisesti
säännöstä, sillä tyylisivuilla on aina
suhteellinen painoarvo toisiin tyylisivuihin nähden.
CSS2-spesifikaation määritelmä on tosi, kun a set
of statements
(lausejoukko) määritellään
seuraavasti:
Lausejoukko = yksi tai useampi varsinainen tai looginen
CSS-sääntö
.
Alaviite 2.
Strict ei salli kehysten käyttöä.
Keskusteltuani erään W3C organisaation
HTML-työryhmän (working group) jäsenen kanssa
asiasta. Hänen mukaansa kehykset eivät ole
riittävän hyvin määriteltyjä, että
ne kelpaisivat tiukkaan dokumenttimäärittelyyn. Poistin
välillä joitakin linkkejä, jotta sain
tämän dokumentin hyväksytyksi. Totesin kuitenkin,
etten voi tehdä mielekkäällä tavalla
tehdä tämän kriteerin täyttäviä
dokumentteja. Tarvitsen aina target-attribuutteja
linkittäessäni muiden tekemiin asiakirjoihin
(käytän näillä sivuilla
target="new" ja yleinen tapa avata rinnakkaisikkuna
on target="_blank"). En katso ollenkaan hyväksi
ratkaisuksi sitä, että kehyksien käyttöä
pidettäisiin virheellisenä. Juuri
target-määritteet tuovat mahdollisuuden
monipuoliseen ikkunoiden käyttöön.
XML on syntynyt kaupallisten yhtiöiden erityistarpeiden takia. HTML-elementit ovat rajoittuneita eivätkä ne kuvaa aina itse asiaa riittävän hyvin. XML-dokumenteissa voi käyttää omia elementtejä, jotka kuvaavat itsessään käyttötarkoitusta, esim. <BOOK-CONTENTS>.

Erityisesti Microsoftin tarkoituksena on ollut luoda laajoja maailmanlaajuisia tietokantoja, joissa on mahdollista käyttää etsintäkriteereinä elementtejä ja elementtiryhmiä. Myös erilaiset tieteenalat, kuten matematikka ja kemia voisivat käyttää omia elementtejä. Koska mahdollisille elementeille ei ole mitään rajoituksia ei ole, XML kertoo jo nimenä tämän asian XML is extensible (eXtensible M arkup Language = 'laajennettavissa oleva merkkauskieli').
HTML-dokumenteissa elementeillä on esimääritellyt esitystavat. XML-elementeillä ei ole mitään oletusesitystapaa. Määrittelemätön XML-elementti ei tee yhtään mitään! Eräs tapa antaa XML-elementeille esitystapa on CSS. Jos XML-dokumentit käyttävät samoja elementtejä kuin
HTML-elementit, samaa CSS-tiedostoa voidaan käyttää niin HTML- kuin
XML-dokumenteillekin (tein lisäsivu:n tästä asiasta
).
Toinen keino on XSL (eXtensible Stylesheet Language), jossa on enemmän mahdollisuuksia vaikuttaa XML-dokumenttien rakenteeseen. Microsoft suosii sitä. Se antaa enemmän mahdollisuuksia asettaa elementit toiseen järjestykseen kuin CSS. On kuitenkin huomattava, XSL:n suosiminen johtuu osittain siitä, että Microsoft Internet Explorer:n CSS-tuki ei ole valmis. Puuttuvat piirteet olisivat XML-dokumenttien suhteen tärkeitä. CSS:llä ei voi saada MS IE -selaimille kunnon esitysasua.
Jos toteutus olisi parempi tilanne voisi olla toinen. Lyhyesti sanottuna MS IE ei CSS-tuen osalta täytä XML-vaatimuksia. Esim. Netscape 6.x+ ja Opera 4.x+ -selaimille on XML-dokumenteille luotavissa kunnollinen esitysasu. Käsittelen MS IE 5.5+n ongelmia eräällä lisäsivu:lla
).
XML-dokumenttien yhteensopivuus (compatibility) HTML 3.2 -tasoon kykenevien selainten kanssa riippuu XML-sivujen tekijästä. Pahimmassa tapauksessa XML-dokumentit ovat vanhoille selaimille toisiinsa liittynyttä tiivistä tekstiä ja erityiskoodeja (lue
alaviite 1![[S]](../Kuvat/buttons/S.gif)
, jos tahdot tietää mitä tarkoitan erityiskoodeilla) - käytännössä mahdotonta tai erittäin vaikea lukea. Itse asiassa sivujen tekijä voi luoda oman HTML:ää muistuttavat kielen - XML on ihanne kieli
"tee se itse" -ihmisille! XML-dokumentit voidaan kuitenkin laatia sangen luettaviksi myös vanhoille selaimille, jollin kaikki tai useimmat elementit ovat samoja kuin HTML-dokumenteissa (elementtien ei kuitenkaan tarvitse käyttäytyä samalla lailla kuin XML:ää osaavilla selaimilla).
Mitä XHTML (eXtensible Hyper Text M arkup Language) dokumentteihin tulee kyse on erityisistä XML-dokumenteista, jotka käyttävät pääosin täysin samoja elementtejä kuin HTML-dokumentit. Ne voidaan ilmoittaa joko HTML tai XML dokumentteina. XHTML-dokumentit pitää aina tehdä XML-sääntöjen mukaan, jotka ovat paljon tiukemmat kuin HTML-dokumenteilta edellytettävät vaatimukset. Ensinnäkin kaikki dokumentit täytyy olla hyvin muotoiltua (well-formed) - enää ei ole sallittua tehdä niin paljon virheitä kuin aiemmin! HTML-dokumenttien ja XHTML-dokumenttien välillä on esim. seuraavia eroja:
Dokumentissa voi olla XML-ilmoitus (<?xml ...?>), mutta se ei ole pakollinen. HTML-dokumentille ei ole olemassa vastaavaa ilmoitusta. HTML-dokumenttien tavoin dokumentit tulee ilmoittaa XHTML-dokumentiksi ainakin standardilla DTD-ilmoituksella, esim. <!DOCTYPE HTML PUBLIC "-//w3c//dtd xhtml 1.0 transitional//en"
"http://www.w3.org/TR/xhtml1/"/dtd/transitional.dtd"> (tiukassa DTD-ilmoituksessa on pieni virhe - lue alaviite 2![[S]](../Kuvat/buttons/S.gif)
).
Dokumentin juurielementti (root element) on aina html
ja siihen liittyy aina XML-nimiavaruusilmoitus:
<html xmlns="http://www.w3.org/TR/xhtml1/">.
Kaikki HTML-elementit ja -attribuutit kirjoitetaan pienillä kirjaimilla. Kaikki elementit ovat
pieni-iso-eroavia. Tämän kaltainen kombinaatio on XML-dokumenteissa laiton vaikka se on kelpaa HTML-dokumenteille:
<BODY>... </body>. Mikäli attribuutille on standardit arvot, nekin kirjoitetaan pienillä kirjaimilla (esim. align="center").
Kaikki attribuuttien arvot ympäröidään sitaateilla mukaan luettuina nekin, joissa arvot ovat vain numeroita. Attribuutti width=3 ei ole kelpaa XHTML-dokumentille, sen täytyy olla merkattu width="3".
Id-attribuuttien arvot ovat pieni-iso-eroavia (lisäksi on huomattava, että jos esim. elementille A antaa tunnisteen, name-attribuutti ei riitä vaan sen ohella tai sen sijaan tulee käyttää id-attribuuttia, jolla on täsmälleen sama arvo).
Elementit jaetaan tiukemmin normaaleihin ja ns. tyhjiin elementteihin. Tyhjät elementit eivät HTML-dokumenteissa kaipaa mitään päätösmerkkausta. Menettely ei kuitenkaan käy XML-dokumenteille. Myös tyhjillä elementeillä täytyy olla jonkinlainen päätösmerkkaus. Päätösmerkkaus sisällytetään elementin aloitusmerkkaukseen ennen sen päättävää
> -merkkiä, esim. <br /><img
scr="image.gif" /> (jos ennen etukenoviivaa (/) jätetään tyhjä väli kaikki selaimet osaavat lukea merkkauksen oikein). Siten elementin aloitusmerkkaus on samalla sen päätösmekkaus. HTML-dokumentissa esim. elementeiltä P ja
LI voidaan jättää pois päätösmerkkaus vaikka päätösmerkkaukset voidaan niihin laittaa (on jopa suositeltavaa laittaa elementille P päätösmerkkaus - käytän itse tälle elementille aina päätösmerkkausta). Menettely on laitonta XHTML-dokumenteille. Myös <p /> tai <li
/> merkkaukset ovat laittomia, sillä em. elementit eivät ole olemukseltaan tyhjiä elementtejä.
Alla on esimerkki hyvin yksinkertaisesta
XHTML-dokumentista (![[M]](../Kuvat/buttons/M.gif)
![[S]](../Kuvat/buttons/S.gif)
):
<!DOCTYPE HTML PUBLIC "-//w3c//dtd xhtml 1.0 transitional//en" http://www.w3.org/TR/xhtml1/"/DTD/transitional.dtd"> <html xmlns="http://www.w3.org/TR/xhtml1/"> <head> <meta name="keywords" content="Opera,Mozilla,Netscape,Internet Explorer,CSS" /> <title>Esimerkki XHTML-dokumentista</title> </head> <body> <h1>Pääotsikko</h1> <br /> <p>Tekstiä.</p> <p>Tekstiä.</p> <blockquote>Tekstiä lohkositaatin sisällä.</blockquote> <ol> <li>Tekstiä listan sisällä.</li> <li>Tekstiä listan sisällä.</li> </ol> </body> </html>
CSS-oppaan sivut ovat nykyisin XHTML 1.0 dokumentteja mallisivuja lukuun ottamatta. HTML-tiedostoja on helppo kääntää XHTML:ksi käyttämällä ilmaisen HTML-Kit-editorin HTML Tidy-toimintoa. Jos haluat käyttää samaa CSS-tiedostoa HTML, XHTML ja XML-dokumenteille, on järkevää kirjoittaa elementtien nimet aina pienillä kirjaimilla. Olen pyrkinyt tekemään esimerkkini siten, että niitä voi käyttää myös XHTML-dokumenteissa. Skriptien käyttö on kuitenkin ongelmallista, mutta olen käyttänyt niitä HTML-dokumenttien tapaan.
W3C: XHTML 1.0 (4.8 Script and Style elements and C.4 Embedded Style Sheets and Scripts), Namespaces in XML
.
.Seuraava sivu käsittele perus menetelmiä, joilla CSS liitetään Web-sivuille.
Alaviite 1.
XML-tiedostoille tarkoitetut DTD-tiedostot laaditaan pääsääntöisesti samoja periaatteita noudattaen kuin HTML-tiedostoillekin. Omat yleisentiteetit
(common entities - yleensä lyhenteitä) tulee ilmoittaa. On suositeltavaa käytää CDATA jaksoja
sections
(CDATA
sections) yleisentiteettien sijaan jos tarkoituksena on esittää näytöllä erityiskoodeja. Jos koodin tekijä luo omia entiteettejä, dokumentit ovat joiltakin osin vanhoille selaimille lukukelvottomia, sillä vanhat selaimet eivät tiedät mitä omat entiteetit merkitsevät.
Alaviite 2.
XHTML 1.0 Strict DTD-tiedostossa on virheellinen parametrientiteetti-ilmoitus (<!ENTITY % FrameTarget
"CDATA"> <!-- render in this frame
-->), koska se ei vastaa elementin A attribuuttilistaa kuten se tekee HTML
4.0 loose -dokumenttityypin DTD:ssä (target %FrameTarget; #IMPLIED -- render in
this frame --).
![Tämän sivun alkuun [Alku]](../Kuvat/buttons/TopImage.gif)
![Edellinen sivu tai jakso [Edell.]](../Kuvat/buttons/leftArrow.gif)
![Seuraava sivu tai jakso [Seur.]](../Kuvat/buttons/rightArrow.gif)
Etusivu
Mitä uutta?
Sanasto
Sisällysluettelo
Kaikki aihepiirit![[Palaute]](../Kuvat/buttons/Email.gif)
![Tulosta tämä sivu! [Tulosta]](../Kuvat/buttons/Print.gif)
![Sivun englanninkielinen versio - The English version of the page [En]](../Kuvat/buttons/En.gif)
![Kopiointioikeudet - Copyrights [Copyr.]](../Kuvat/buttons/copyright.gif)

![Tämän sivun alkuun [Alku]](../Kuvat/buttons/Top.gif)
