2010-01-11 5 views
3

Vers 2006, j'ai écrit un joli XSLT qui a transformé mes flux RSS en HTML personnalisé. De cette façon, si un utilisateur cliquait à partir d'un navigateur, il s'afficherait comme une simple page plutôt que comme un tas de fichiers XML indésirables. Si cette même URL était utilisée dans un lecteur de flux, elle était gérée correctement et tout était lisse.Comment afficher les flux Atom/RSS dans le navigateur avec XSLT personnalisé?

De nos jours, la plupart des navigateurs (IE, Firefox, Safari, Opera) semblent s'emparer des styles et ne les lâcheront pas. Et Chrome ignore tout simplement la transformation de la feuille de style.

Étant donné que cela fait plusieurs années, est-ce que j'oublie tout simplement certains détails? N'étais-ce pas habitué à être aussi simple?

<?xml version="1.0" encoding="utf-8"?> 
<?xml-stylesheet type="text/xsl" href="/atom2html.xslt"?> 
<feed xmlns="http://www.w3.org/2005/Atom"> 
    <!-- ... --> 
</feed> 

Quelqu'un sait s'il y a un moyen de passer outre ces navigateurs avec des idées très précises de style d'alimentation? Et y a-t-il un moyen de tirer quelque chose de bien de Chrome?

+0

Non, cela semble être aussi le cas pour Feedburner. – brianary

+0

Est-ce que cela ne fonctionne que pour RSS? pas Atom? – mckamey

+0

Voir ci-dessous pourquoi Chrome ne fonctionnait pas. Quelqu'un a-t-il des idées sur la façon de faire fonctionner les autres navigateurs? – mckamey

Répondre

1

Je ne suis pas au courant d'une façon de tromper IE & FF & Safari affichage automatique de des flux RSS/Atom, mais dans Chrome le XSLT est correctement appliqué par l'instruction de traitement xml-stylesheet; here is an example du groupe Randonneur au flickr.

+0

Je ne vois aucun lien de flux Atom sur cette page Flickr par exemple. Êtes-vous sûr que c'est la bonne URL? – mckamey

+0

Ops, un collé la mauvaise URL dans le lien. Ceci est la page avec la copie du flux: http://linusmat.com/files/stackoverflow/atom.xml et ceci est le xsl appliqué: http://linusmat.com/files/stackoverflow/atom .xsl – bolk

+0

+1 votre exemple m'a donné un bon point de départ pour déterminer pourquoi le mien ne fonctionnait pas. Merci! – mckamey

4

Chrome semble appliquer uniquement l'instruction de traitement XSLT si le type de contenu de la réponse de flux est défini sur XML, et non sur Atom.

Cette affiche XSLT dans Chrome:

Content-Type: application/xml 

Cela ne présente aucun style (ce qui est techniquement plus type correct):

Content-Type: application/atom+xml 
2

Il est maintenant le comportement par défaut pour la plupart navigateur pour appliquer leur propre XSLT à tout flux Atom/RSS qu'ils rencontrent, très ennuyeux. Un flux est identifié par le type application/atom + xml mime pour Atom et application/rss + xml pour RSS

Vous aviez l'habitude de contourner cela en remplissant les premiers 512 octets de l'alimentation avec crud sous la forme de un commentaire. Cela mettrait fin au reniflage de flux du navigateur et vous permettrait d'appliquer votre propre feuille de style XSL. Cela a fonctionné pendant des années pour moi mais avec IE8 ce comportement est sorti de la fenêtre et le commentaire de 512 octets ne fonctionne plus. Je suis maintenant passé au traitement côté serveur mais je déplore toujours cette décision de la part des navigateurs.

+1

Cela fonctionne toujours dans Firefox et est en fait [le seul moyen] (https://developer.mozilla.org/en/XSL_Transformations_in_Mozilla_FAQ) de contourner le style de flux par défaut. – kynan

+0

Non seulement c'est une "solution de contournement" vraiment moche, mais cela rompt également la compatibilité avec les autres navigateurs.Ajoutant que crud casse l'alimentation en chrome pour moi. – kynan

Questions connexes