apply-template me génère des xmlns vides [XSL] - HTML/CSS - Programmation
Marsh Posté le 19-07-2006 à 19:06:24
Argh !
Après avoir passé un temps pas possible dessus cet après-midi, je viens d'avoir une illumination.
J'ai shooté le xmlns="http://www.w3.org/1999/xhtml" qui se trouvait dans le tag <html>.
Et à la place, je l'ai mis sur toutes mes balises <xsl:template>.
Résultat, après le rendu, <html> a bien l'attribut, mais plus aucun autre tag ne l'a
Marsh Posté le 19-07-2006 à 17:53:41
En gros :
XML :
<?xml version="1.0" encoding="utf-8"?>
<root>
<toto>1</toto>
<toto>2</toto>
</root>
XSL :
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>toto</title></head><body>
<xsl:apply-templates select="root/toto"/>
</body><html>
</xsl:template>
<xsl:template match="toto">
<p><xsl:value-of select="."/></p>
<hr/>
</xsl:template>
<xsl:stylesheet>
Sortie :
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>toto</title></head><body>
<p xmlns="">1</p>
<hr/>
<p xmlns="">2</p>
<hr/>
</body><html>
=> La première balise contenue dans chacun de mes templates se retrouveavec un attribut xmlns vide.
Qu'il soit vide ou plein, je m'en fout. Mon problème, c'est qu'en XHTML, il n'est autorisé que pour la balise <html>
Et du coup je ne génère que des pages non valides.
J'arrive pas à trouver sur Google une solution à mon problème.
J'ai trouvé une solution pour <xsl:copy-of/> qui pose un problème similaire. Mais pas pour template (et le solution n'est pas applicable)