[Alku]
Testaa CSS-oppaan navigoinnin toimivuutta!
 
 Etsi sivuiltani: [Apua]
AihepiiriluetteloCSS-oppaan etusivuOpassivut > 1. Mikä on HTML ja XML asiakirjojen perusrakenne > Yleistä elementeistä ja HTML:n perusidea (jakso 1/7)

Yleistä elementeistä ja HTML:n perusidea

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][Pw]). Rakenteen merkityksen ymmärtää, jos vertaa seuraavia kahta asiakirjaa:
Ilman rakennetta oleva teksti: [M][S][Pw].
Asiakirja, jonka tekstillä on yksinkertainen rakenne: [M][S][Pw].

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.

Gentle Introduction to SGML.

SGML-dokumentaatiossa kirjoitetaan elementtimerkkauksista seuraavasti (lisäsin tekstiin hieman korosteita; voit katsoa myös sanan tag selityksen[S][Pw]):

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][Pw]). 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 modularisaatio­dokumentaatioiden sitaateista:

SGML:

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.
W3C: CSS2: 4 CSS2 syntax and basic data types, 4.1.3[Pw].
Modularization of XHTML.

Tosiasiassa elementin nimi yhdessä rajoittimien kanssa toimii tunnistimena (mitä tarkoitetaan rajoittimilla, tulee esille elementin käsitekaaviossa[S][Pw], 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][Pw]).

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.

Lehmä, jolla on HTML elementtimerkkaukset

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][S][Pw]).

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][S][Pw]):

<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>
[Alku]
 

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ö):

W3C: loose.dtd (HTML 4.01).

 

Elementit, <!ELEMENT ... >
Attribuuttilistat, <!ATTLIST ... >
Parametrientiteetit (parameter entities). Kyseessä ovat ns. DTD-makrot, joilla kootaan yhteen DTD-tiedostoissa käytetyjä arvoja, attribuutteja ja elementtejä, esim. <!ENTITY % formctrl "INPUT | SELECT | TEXTAREA | LABEL | BUTTON">. Selitän niiden käyttöä eräässä parissa englanninkielisessä sivussa (Help for HTML All[S] ja Help for TM ../HTMLKit/wappush[S]). Yritän löytää termiluetteloon[S][Pw] termille mielekkään suomenkielisen vastineen.
Henri Ruini: XML sanasto[Pw].

Yleisentiteetit (common entities/ general entities), esim. <!ENTITY amp "&#38;#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. ä = &auml; ja ç = &ccedil; (espanjalais-portugalilainen kirjain). Tekstiä, jossa entiteetit käännetään tietyiksi kirjaimiksi, kutsutaan nimellä PCDATA (Parsed Character Data; katso myös selitys viittaukselle #PCDATA[S]).
 

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[S] toteuttavat joillakin selaimilla saman asian.

[Alku]