Как отобразить каналы Atom/RSS в браузере с пользовательским XSLT?
Примерно в 2006 году я написал хороший XSLT, который преобразовал мои RSS-каналы в пользовательский HTML. Таким образом, если пользователь щелкнет по браузеру, он будет отображаться как простая страница, а не как куча ненужного XML. Если тот же URL-адрес использовался в программе чтения каналов, он был обработан правильно, и все было гладко.
В наши дни большинство браузеров (IE, Firefox, Safari, Opera), кажется, хватают стили и не отпускают. А Chrome просто игнорирует преобразование таблицы стилей.
Учитывая, что прошло несколько лет, я просто забыл некоторые детали? Разве раньше это не было так просто?
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="/atom2html.xslt"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<!-- ... -->
</feed>
Кто-нибудь знает, есть ли способ переопределить эти браузеры с очень конкретными идеями стилей подачи? И есть ли способ получить что-то хорошее из Chrome?
3 ответа
Похоже, что Chrome применяет инструкцию обработки XSLT только в том случае, если для Content-Type для ответа канала задано значение XML, а не Atom.
Это отображает XSLT в Chrome:
Content-Type: application/xml
Это не отображает стили (это технически более правильный тип):
Content-Type: application/atom+xml
Теперь поведение большинства браузеров по умолчанию заключается в применении собственного XSLT к любому каналу Atom/RSS, с которым они сталкиваются, что очень раздражает. Канал определяется через тип mime application/atom+xml для Atom и application/rss+xml для RSS
Раньше вы могли обойти это, заполнив первые 512 байт потока с помощью crud в виде комментария. Это исключило бы перехват фида в браузере и позволило бы вам применить свою собственную таблицу стилей XSL. Для меня это работало годами, но в IE8 это поведение исчезло из окна, и комментарий в 512 байт больше не работает. Теперь я переключился на обработку на стороне сервера, но я все еще оплакиваю это решение от браузера.
Я не знаю, как обмануть автоматическое отображение IE / FF и Safari каналов RSS/Atom, но в Chrome XSLT правильно применяется через xml-stylesheet
инструкция по обработке; Вот пример из пула Randonneur Group на Flickr.