XML

Co mi to milá RSS čtečko, co mi to děláš? Všechny browsery si s HTML entitami perfektně rozumí, jen ty ty entity mršíš.

To Vám prostě takhle ráno napíše Jiří Bureš, že jeho čtečka nekousne La Trinní RSS. Tak jsem si prohlédl generovaný dokument a na první pohled se zdál být ok. Našel jsem si na webu Feed Validátor a ejhle! Diagnóza zní: nedefinované entity. Ale jen v některých verzích RSS.

Tak nezbývalo, než se seznámit s problematikou RSS více do hloubky, abych dospěl k zjištění, že existuje hromada různých verzí, které mají společnou snad jen tu vlastnost, že jsou vzájemně nekompatibilní. Paráda. A protože odlišné verze staví na odlišných DTD, mají také (ne)definované jiné entity. Tedy např. ­ v jedné verzi funguje, v druhé nikoliv.

Řešením by bylo přidat do DOCTYPE další DTD. Myšlenka je to elegantní, bohužel téměř žádná čtečka to nekousne. Takže rychle ze slepé uličky ven.

Jak na to

Problém lze vyřešit jednoduchou fintou: místo zápisu   použít ekvivalentní  . Ale to už jsme jen krůček od úplného odstranění entit – místo   lze prostě přímo vložit znak s kódem 160. Pokud je RSS kódované v UTF-8, je taková transformace bezztrátová (vnější tvář dokument zůstane nezměněna). Samozřejmě entity & < > znakem nahradit nelze, je třeba zůstat u mezikroku, tedy & < >.

Mám pocit, že tvůrce RSS kanálů a čteček nenapadlo, že existují i jiné znaky, než jen ty z anglické abecedy. Ach jo.