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>