Bon, ben déjà merci pour ta réponse rapide. Malheureusement, ce n'était pas ça.
J'ai finalement compris le pourquoi du comment.
En fait, j'utilise firefox pour afficher le résultat de la transformation xsl, et je pense qu'il comporte quelques bugs (d'autant que j'ai quelques extensions qui peuvent mettre la panique dans le lot, telles que firebug, greasemonkey ou webdevelopper). Mais bref, passons.
Voici deux fichiers qui fonctionnent et vont me servir de base pour la suite.
D'abord le fichier xml :
Alors, quelques explications pour ceux la postérité et pour ceux qui tomberaient sur le même problème que moi.
D'une, il faut sortir quelque chose avant <xsl:apply-templates select="./html:*"/> sinon, firefox n'applique pas le template. Déjà, ça m'a pris un moment avant de comprendre ça. D'où l'idée de mettre ce qu'il faut pour avoir un document html à peu près bien formé.
Ensuite, le code se lit de lui-même : pour chaque élément de l'espace de noms html, on applique le template générique qui matche html:*, lequel se contente de recopier l'élément tel quel avec ses attributs.
Voilà, ça fonctionne, je suis content, je vais pouvoir continuer.
Merci en tout cas pour ton aide.
[^] # Re: Pfffff.
Posté par Gyro Gearllose . En réponse au message Problème de transformation xslt.. Évalué à 2.
J'ai finalement compris le pourquoi du comment.
En fait, j'utilise firefox pour afficher le résultat de la transformation xsl, et je pense qu'il comporte quelques bugs (d'autant que j'ai quelques extensions qui peuvent mettre la panique dans le lot, telles que firebug, greasemonkey ou webdevelopper). Mais bref, passons.
Voici deux fichiers qui fonctionnent et vont me servir de base pour la suite.
D'abord le fichier xml :
<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet href="./e1.xsl" type="text/xsl"?>
<root:racine xmlns:root="http://localhost/root" xmlns:html="http://www.w3.org/1999/xhtml">
<html:h1> Essai</html:h1>
<html:h2>Un sous-titre quelconque</html:h2>
<html:p class="bleu">Voilà un paragraphe</html:p>
<root:branche>Voilà une branche</root:branche>
</root:racine>
Ensuite la feuille de style :
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="2.0"
xmlns:root="http://localhost/root"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output method="html" version="1.0" encoding="iso-8859-1" doctype-public="-//W3C//DTD XHTML 1.1//EN" doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" indent="yes"/>
<xsl:template match="/root:racine">
<html>
<head>
<title> Essai </title>
<style type="text/css">
p {color:yellow}
h1{color:lightgreen}
</style>
</head>
<body>
<xsl:apply-templates select="./html:*"/>
<!--<xsl:apply-templates select="./html:p"/>-->
<p style="color:red;"><xsl:value-of select="./root:branche" /></p>
</body>
</html>
</xsl:template>
<xsl:template match="html:*">
<xsl:copy-of select="." />
</xsl:template>
</xsl:stylesheet>
Alors, quelques explications pour ceux la postérité et pour ceux qui tomberaient sur le même problème que moi.
D'une, il faut sortir quelque chose avant <xsl:apply-templates select="./html:*"/> sinon, firefox n'applique pas le template. Déjà, ça m'a pris un moment avant de comprendre ça. D'où l'idée de mettre ce qu'il faut pour avoir un document html à peu près bien formé.
Ensuite, le code se lit de lui-même : pour chaque élément de l'espace de noms html, on applique le template générique qui matche html:*, lequel se contente de recopier l'élément tel quel avec ses attributs.
Voilà, ça fonctionne, je suis content, je vais pouvoir continuer.
Merci en tout cas pour ton aide.