testováno na lidech

Na navigaci | Klávesové zkratky

RSS a problémové entity

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.

Mohlo by vás zajímat

Komentáře

  1. 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.

    před 20 lety | reagoval [5] JohnyB
  2. rony #2

    mozno problem este nevidime 😉

    Ale napriek nutnosti mat XML validny RSS je citacka RSS point najlepsie pripravena na cestinu 😉

    fuj zasa propagujem 😉

    před 20 lety | reagoval [3] OttY
  3. 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 :)

    před 20 lety | reagoval [5] JohnyB
  4. GmbH #4

    …jen ty ty entity mršíš.

    to by byl dobrej refrén nějaké písníčky od Semaforu 🙂

    před 20 lety
  5. 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.

    před 20 lety
  6. Risa #6

    avatar

    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).

    před 20 lety

Tento článek byl uzavřen. Už není možné k němu přidávat komentáře.