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.
Komentáře
Mormegil #1
Zajímalo by mě, jestli opravdu existuje „XML parser“, který zvládá číselné entity, ale nezvládá amp, lt a gt, které jsou (spolu s apos a quot) definovány přímo v XML specifikaci.
rony #2
mozno problem este nevidime 😉
Ale napriek nutnosti mat XML validny RSS je citacka RSS point najlepsie pripravena na cestinu 😉
fuj zasa propagujem 😉
OttY #3
#2 rony, Propaguješ a dobre robíš. Ja som prešiel postupne cez FeedReader, NewzCrawler, FeedDemon a skončil som pri RSS Point, pričom sporadicky používam aj LiveBookmarks vo FireFoxe len pre vybrané feedy :)
GmbH #4
…jen ty ty entity mršíš.
to by byl dobrej refrén nějaké písníčky od Semaforu 🙂
JohnyB #5
To same je i v XSLT – kdo s tim nekdy prisel do styku, nebude tim prekvapen ani v RSS…
#1 Mormegile, Treba MSXML ;) Odmitne takovy dokument parsovat.
#3 OttY, Ja pouzivam ctecku v Opere, ale je pravda, ze cestina je v ni misty zmrsena.
Risa #6
A jsou vubec entity „nbsp“ a „#160“ shodne? Pokud si dobre pamatuji tak „nbsp“ je nedelitelna mezera (pokud ji spojim dve slova ty se pak napr. na konci bloku [stranky] nedeli, ale presunou se na zacatek nasledujiciho radku).
Tento článek byl uzavřen. Už není možné k němu přidávat komentáře.