Kielimerkkaus, luku 4 Ongelmia kielimerkkauksen käytössä:

Teknisiä ongelmia: sisältöä määritteissä

Eräät HTML-merkkaukseen sisältyvät tekstit ovat määritteiden (attribuuttien) arvoja tai muuten sellaisia, että niiden tulee olla pelkkää tekstiä, niin että niiden sisällä ei voi olla merkkausta. Elementtiin saattaisi liittyä esimerkiksi määrite
title="Presidentti Richard Nixon"
Miten voitaisiin ilmoittaa, että määritteen arvon eri osat ovat eri kieltä? Eipä mitenkään. Sama koskee esimerkiksi option-elementin sisältöä, jonka tulee HTML:n määritelmän mukaan olla pelkkää tekstiä. Voimme kyllä kirjoittaa
<option>New York</option>
mutta entäpä jos elementin tekstissä pitäisikin olla kahta kieltä?

Tähän ei siis ole mitään yleistä käytännöllistä ratkaisua. Joskus kyllä ongelma voidaan kiertää käyttämällä HTML:ssä sellaista rakennetta, jossa merkkaus on sallittu; esimerkiksi select- ja option-elementeillä tehty valikko voidaan korvata joukolla input-elementtejä ja niihin liittyviä tekstejä.

Ongelma havainnollistaa sitä, että määritteissä ei pitäisi olla dokumentin sisältöön kuuluvaa asiaa. Teoreettiselta kannalta olen hiukan käsitellyt tätä HTML:n suunnitteluvirhettä kirjoituksessani Empty elements in SGML, HTML, XML, and XHTML, kohdassa Data hidden in attributes.

Eräs tähän liittyvä ongelma on kuitenkin osittain ratkaistavissa, joskin kömpelösti. Joskus määritteen kieli on toinen kuin elementin sisällön. Huomattakoon, että lang-määrite on määritelty niin, että se ilmoittaa elementin sisällön ja määritteiden kielen. Tämä täytynee tulkita niin, että se vaikuttaa myös taaksepäin määritteiden listassa. Esimerkiksi
<a title="HTML 4.01 specification" lang="en">
on tulkittava niin, että lang-määrite vaikuttaa myös sitä edeltävään title-määritteeseen. (Tosin käytännössä kannattaa varmaankin kirjoittaa määritteet toiseen järjestykseen.) Mutta miten menetellään, jos esimerkiksi linkin teksti suomea mutta title-määrite englantia, kuten luonnollista on, jos linkin kohde on englanninkielinen. Tällöin lienee ainoa tapa saada kielimerkkaus täysin oikeaksi se, että elementin sisällä käytetään ylimääräistä merkkausta, jolla sinne saadaan erilainen kielimäärite:
<a lang="en" title="HTML 4.01 specification"><span lang="fi">HTML-spesifikaatio</span></a>


Kirjoittamisen ajankohta: 2002-06-23. Päivitetty viimeksi 2007-12-03. Teknisiä korjauksia 2017-12-11.
Tämä sivu kuuluu Jukka "Yucca" Korpelan avoimeen tietosivustoon Datatekniikka ja viestintä.