Bonjour,

J'ai un document XML temporaire qui me sert à structurer des données. Il ne contient pas de DOCTYPE :

<?xml version="1.0" encoding="utf-8" ?>

<page>
	<balise>Texte</balise>
</page>


Lorsque ce fichier est affiché dans un navigateur (MSIE ou FF), il est bien considéré comme du XML (les balises peut-être développées/réduites en cliquant dessus).

Je voudrais maintenant transformer ce XML en un autre, pour cela j'ajoute une feuille de style XSL.

Le XML devient :

<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="test.xsl" ?>

<page>
	<balise>Texte</balise>
</page>


et le XSL :

<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output encoding="utf-8" method="xml" media-type="text/xml"/>

<xsl:template match="page">
<nouvellebalise>Je modifie le <xsl:value-of select="titre"/> un peu.</nouvellebalise>
</xsl:template>

</xsl:stylesheet>


Normalement, les résultat devrait être le même que ce fichier XML fictif :

<?xml version="1.0" encoding="utf-8" ?>

<nouvellebalise>Je modifie le Texte un peu.</nouvellebalise>


Mais, lorsque le XML de départ (avec sa feuille XSL) est affiché dans un navigateur (MSIE ou FF), il n'est pas reconnu comme du XML : au lieu d'avoir la hiérarchie des balises, on obtient les données brutes :

Je modifie le Texte un peu.


Pourtant, FF indique que le type mime servi est bien text/xml.

(PS: ce sujet ressemble un peu à http://forum.alsacreations.com/topic.php?fid=3&tid=3481 mais bon je reprends à zéro pour comprendre où ça cloche)

Savez-vous comment résoudre ce problème ?
(Mon but est de créer un fil RSS 2.0 à partir d'un XML perso, mais le problème est le même : les données brutes sont affichées à la suite quelque soit le navigateur)

Merci d'avance Smiley biggrin
Modifié par Chase (31 May 2005 - 20:41)
Bin c'est normal, le fait de mettre un fichier .xsl

c'est pour avoir un résultat comme une page normale Smiley smile

Donc c'est du texte brute et si tu veux qu'il soit bien agencer pour qu'on le regarde, tu insert du CSS pour le mettre en forme Smiley smile

Si tu veux faire un fichier RSS il te faut une définition speciale (fin quelque balise en plus bien définie et une déclaration différente...

D'ailleurs je t'envoie vers un petit tuto : http://www.siteduzero.com/vostutos/?s=viewtuto&tutoid=357

Bonne lecture Smiley cligne
Merci pour ta réponse Dib258.

Donc si j'ai bien compris, le XSL ne sait pas faire XML -> XML brut, mais uniquement XML -> XML particulier avec doctype (ex: XHTML mais pas XML brut).

C'est bien ça ?
(Mais alors à quoi peut bien servir method="xml" dans un xsl:output ?)

Donc je ne pourrai jamais transformer un XML en RSS parce que les RSS 2.0 n'ont pas de doctype).

Tant pis, si tu me confirmes que c'est bien ça, je ferai la transformation côté serveur.

En tout cas merci Smiley cligne
Modifié par Chase (28 May 2005 - 15:46)
Chase a écrit :
Donc si j'ai bien compris, le XSL ne sait pas faire XML -> XML brut, mais uniquement XML -> XML particulier avec doctype (ex: XHTML mais pas XML brut).

Non, pas tout à fait... ça c'est le comportement assez particulier que prennent les navigateur lorsqu'il reçoivent un fichier XML lié à une feuille XSL ! (un comportement très discutable au demeurant !)

Chase a écrit :
Donc je ne pourrai jamais transformer un XML en RSS parce que les RSS 2.0 n'ont pas de doctype).

Biensur que si... mais là encore, tout dépend du parser que tu utilises. Si tu utilises un navigateur, tu auras le comportement ci-dessus. Par contre, si tu utilises d'autres logiciels ou un langage coté serveur (PHP, ASP, CGI...) c'est parfaitement possible !
Smiley smile
Modifié par Jep (28 May 2005 - 16:00)
Comme le dit jep, c'est uniquement le cas parce que tu transforme avec IE ou firefox.

Si tu utilise un processeur xslt avec php, java, ou en ligne de commande, ça aura le comportement attendu Smiley smile
ça fait plaisir d'avoir des réponses de connaisseurs pour cette technologie si peu répandue Smiley cligne

Je me basais sur le comportement des navigateurs pour savoir si mon XSL était correct ou pas ; finalement il est correct puisque PHP me fabrique un RSS parfait (à partir d'une structure perso).

merci beaucoup à vous ! Smiley biggrin
Modifié par Chase (28 May 2005 - 17:26)