nog verder

het probleem van variabelen in links. ik had eventjes een probleem met de link voor de css validatie. het probleem is dat de link als variable een link meedraagt. zo je wilt, de link is:

http://jigsaw.w3.org/css-validator/validator

en de variablen die ze meedraagt zijn

uri = http://www.xii.be/12/styles-site.css
warning = 1
profile = css2

of, in een groep:

uri=http://www.xii.be/12/styles-site.css&warning=1&profile=css2

geen probleem, zei ik in mijn vorig stukje, je vervangt volgens de specs de & gewoon door & of nog beter, door %26 want dat vond ik eleganter. maar die vlieger gaat hier niet op. er worden immers drie variabelen meegestuurd, en een van die variabelen is een link.

volgens verdere specs moeten in URI’s alle gereserveerde tekens escaped worden. niet gereserveerde tekens zijn het basisalfabet (hoofd- en kleine letters) en een beperkte set van punctuatietekens en anders symbolen (“-” | “_” | “.” | “!” | “~” | “*” | “‘” | “(” | “)”)

voor het http protocol gebeurt dat (meestal) automatisch: je geeft een link in je browser in, en (ik vermoed) de browser vertaalt alle probleemtekens. op een of andere manier wordt er toch nog een onderscheid gemaakt tussen de tekens die door de browser worden vertaald, en de tekens die in de link zelf reeds aanwezig waren.

want wanneer je probeert om in onze variabelen, de & te vervangen door %26 krijgen we een foutmelding. immers, de variabele ziet er dan als volgt uit:

uri=http%3A%2F%2Fwww.xii.be%2F12%2Fstyles-site.css%26warning=1%26profile=css2

waardoor de validator slechts 1 variabele (uri) ontvangt ipv 3 (uri, warning, profile). die variabele ziet er dan overigens, een beetje leesbaarder, als volgt uit:

http://www.xii.be/12/styles-site.css&warning=1&profile=css2

het komt er dus blijkbaar op neer om zoveel mogelijk van die voor URI vertaalde tekens af te blijven, en steeds de html character entities te gebruiken. zo gebruik je dus nergens in je document &, maar steeds & (of zelfs &). de (voorlopig) enige plaats waar je URI escaped characters gebruikt in HTML of –meer specifiek– in links (%26 ipv &), is in de waarde van de variabelen die in je link voorkomen.

onze reeks variabelen zien er dan als volgt uit:

uri=http%3A%2F%2Fwww.xii.be%2F12%2Fstyles-site.css&warning=1&profile=css2

zeer handige links:
HTML Codes – Characters and symbols: Standard ASCII set, HTML Entity names, ISO 10646, ISO 8879, ISO 8859-1 Latin alphabet No. 1; Browser support: All browsers

A tutorial on character code issues

RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax