Bonjour,

Je génère donc un flux rss avec xslt à partir d'un fichier xml.

Tout fonctionne bien, sauf que les navigateurs ne reconnaissent pas le fichier généré comme xml...

Et pour cause, si je regarde le code source généré (avec web developper), je m'aperçois que l'entête

<?xml version="1.0" encoding="iso-8859-15"?>


N'est pas transmis dans la génération, ce qui fait que j'obtiens un gros pâté de texte au lieu d'une page standard d'un flux rss.

Pourtant, je précise bien que la sortie est en xml.

<?xml version="1.0" encoding="iso-8859-15"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="iso-8859-15"/>


Je ne vois pas où se situe mon erreur, si vous avez une idée, c'est avec plaisir.

Merci.
Bonjour!

Essaie d'ajouter l'attribut omit-xml-declaration="no" à ton output. Normalement, c'est la valeur par défaut donc tu ne devrais pas avoir besoin de le spécifier, mais tu peux toujours tenter le coup...
Modifié par Gilles (12 Sep 2009 - 18:24)
Malheureusement, cela n'a aucune incidence.

Je viens de faire un test avec opera pour voir, et lui m'indique carrément une erreur.

Echec de lecture du XML: erreur de syntaxe (Ligne : 1, Caractère : 0)

Réanalyser ce document en tant qu'HTML
Erreur :missing root element
Spécification :http://www.w3.org/TR/REC-xml/
  1: <?xml version="1.0"?>
  2: <?xml-stylesheet type="text/xsl" href="http://127.0.0.1/ENL/rss/rss.xsl"?><articles url="http://127.0.0.1/ENL/">
  3: <article id="14">
  4: <titre rewrite="test">test</titre>


Alors que mon fichier xml est conforme :\

Je vous montre mon code, mais je crains que cela ne puisse aider plus à résoudre le problème.

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="http://127.0.0.1/ENL/xsl/rss.xsl"?>
<articles url="http://127.0.0.1/ENL/">
   <article id="11">
      <titre rewrite="test">test</titre>
      <extrait>Loin, très loin, au delà des monts Mots, à mille lieues des pays Voyellie et Consonnia, demeurent les Bolos Bolos. Ils vivent en retrait, à ...</extrait>
   </article>
   <article id="5">
      <titre rewrite="toto-sur-la-lune">toto sur la lune</titre>
      <extrait>Pas même la toute puissante Ponctuation ne régit les Bolos Bolos - une vie on ne peut moins orthodoxographique. Un jour pourtant, une petite ligne de ...</extrait>
   </article>
   <article id="4">
      <titre rewrite="toto-va-a-la-peche">toto va à la pêche</titre>
      <extrait>Loin, très loin, au delà des monts Mots, à mille lieues des pays Voyellie et Consonnia, demeurent les Bolos Bolos. Ils vivent en retrait, à ...</extrait>
   </article>
   <article id="3">
      <titre rewrite="plop-plip-plaf">plop plip plaf</titre>
      <extrait>Loin, très loin, au delà des monts Mots, à mille lieues des pays Voyellie et Consonnia, demeurent les Bolos Bolos. Ils vivent en retrait, à ...</extrait>
   </article>
</articles>


Et le xsl

<?xml version="1.0" encoding="iso-8859-15"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="iso-8859-15" omit-xml-declaration="no" />
   
   <xsl:template match="articles">
      <rss version="2.0">
         <channel>
            <title>blog les derniers articles</title>
            <link>http://127.0.0.1/ENL/......</link>
            <description>WTF ?</description>
            <xsl:apply-templates>
               <xsl:with-param name="url" select="@url" />
            </xsl:apply-templates>
        </channel>
      </rss> 
   </xsl:template>
   
   <xsl:template match="article">
      <xsl:param name="url" />
      <item>
         <title><xsl:value-of select="titre" /></title>
         <link><xsl:value-of select="concat($url, '-', @id, '-', titre/@rewrite, '.html')" /></link> 
         <description><xsl:value-of select="extrait" /></description>
      </item>
   </xsl:template>

</xsl:stylesheet>


Bon, je crois ça reste insoluble Smiley sweatdrop
Modifié par splash (12 Sep 2009 - 19:22)
Je ne sais pas si cette fonctionnalité de visualisation du code source généré est fiable à 100% Smiley cligne

Je viens de tester, et quand tu fais une transformation "statique" (par création en dur du fichier de sortie...), tout a l'air normal. Essaie de déposer sur un serveur distant au lieu de ta machine?
Bonsoir,

Je ne comprends pas du tout alors, j'ai enregistré mes fichiers en statiques sur mon ordi, et pareil, l'affichage ne se fait pas de façon standard comme tout fichier xml sur FF.

Sur un autre serveur, cela fait pareil, pourtant les encodages sont corrects.

Je met deux adresses pour que vous constatiez.

.... => transformation par le serveur (xsltproc)
.... => transformation censée être faite par le navigateur

Toute l'application de ce blog est bâtie sur xml/xslt.
Donc je ne vois pas pourquoi ce fichier n'en fait qu'à sa tête Smiley biggol
Modifié par splash (14 Sep 2009 - 09:18)
Je ne vois aucun problème d'affichage pour le fichier transformé par le serveur; qui est bien affiché sous la forme d'une arborescence déployable sous Firefox.

Mais c'est vrai que la transformation côté client est incorrecte semble ne pas produire de prologue XML. C'est d'autant plus troublant que quand on copie le code source généré dans un nouveau fichier, et que l'on visualise ce dernier, il apparaît bien déployé.

Seule réponse que je vois à cette heure-ci, c'est que ce n'est pas un bug, mais un feature, et que le résultat d'une transformation XSLT, même s'il s'agit d'un fichier XML, n'est pas restitué en tant que tel par Firefox et Konqueror. Pour info en effet, cela ne marche pas non plus avec ces exemples ultra-simples:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="essai2.xsl"?>
<rac>
	<ex>bla</ex>
	<ex> ble</ex>
	<ex>bli</ex>
</rac>


... avec cette feuille de style:


<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" omit-xml-declaration="no" encoding="UTF-8"/>
	
	<xsl:template match="/">
		<re>
			<xsl:apply-templates/>
			</re>
	</xsl:template>
	
	<xsl:template match="ex">
		ex : <xsl:apply-templates/>
		
	</xsl:template>
</xsl:stylesheet>
Bonjour;

J'en conclu donc qu'il n'y a pas d'alternative, tant pis.
Je vais rechercher sur le site de mozilla pour voir si ce sujet a déjà été abordé.

Merci de t'être pencher sur mon problème Smiley smile