Minulý týden jsem zaznamenal problémy s RSS kanálem na conBLOGu. RSS čtečky přestaly načítat některé spoty. Následkem toho mj. klesla návštěvnost. Proto jsem začal pátrat. Chybu jsem udělal samozřejmě já, ale prohlížeče mi rozhodně v jejím řešení nepomohly. Jsou totiž až moc chytré.
Na vině je příliš inteligentní zobrazování chybně zapsaných znakových entit v prohlížečích. Znakové entity slouží třeba k zápisu speciálních znaků (např. & < > ©). Znaková entita se zapisuje ve formátu &KOD;
. Důležitý je onen středník na konci. Oznamuje konec kódové sekvence (může se jednat např o anglický akronym znaku nebo o numerický kód znaku). Prohlížeče napravují chyby tvůrců stránek a středník si domyslí.
Domyšlený středník není problém pro prohlížeč, ale je to problém pro RSS čtečku, která v lepším případě ignoruje položky v RSS kanále. Mnohé RSS kanály jsou generovány automaticky z textu dokumentu nebo jsou při ručním vytváření RSS kopírovány autorem. Při validování spotů používám pochopitelně používám náhled v prohlížeči, který zobrazí i chybně zapsané entity.
Moje chyba byla způsobena chybějícím středníkem v entitě pro nedělitelnou mezeru ( ). Např. zápis v lese
prohlížeč interpretuje jako v lese
. Pro RSS čtečku může být přítomnost chybně zadané entity fatální.
Testoval jsem na prohlížečích IE 5.5, IE 6, Opera 6, Mozilla 1.0 a Firebird. Všechny prohlížeče chybně interpretovaly bez povinného koncového středníku zapsané zankové entity – zobrazily je, jako by tam středník byl.