Bonjour à tous !
Le contexte est simple : j'ai un menu identique que je charge dans chacune des pages. Ce menu est généré par un template menu.xsl :
Pas de problème du côté du xml.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" encoding="utf-8"/> <xsl:template name="menu"> <xsl:element name="ul"> <xsl:for-each select="document('../data/menu.xml')/menu/item"> <xsl:element name="li"> <xsl:variable name="cpage"><xsl:value-of select="link" /></xsl:variable> <xsl:if test="$page = $cpage"> <xsl:attribute name="class">selected</xsl:attribute> </xsl:if> <xsl:element name="a"> <xsl:attribute name="href"><xsl:value-of select="link" /></xsl:attribute> <xsl:attribute name="class"><xsl:value-of select="class" /></xsl:attribute> <xsl:value-of select="text" /> </xsl:element> </xsl:element> </xsl:for-each> </xsl:element> </xsl:template> </xsl:stylesheet>
Sauf que voila, lorsque j'appelle ce template dans un autre (news.xsl par exemple) avec la fonction <xs:call-template name="menu" />, le code retourné renvoie un <ul xmlns=""> au lieu d'un simple <ul>. Le code n'est donc plus validé et le menu ne s'affiche pas (je travaille avec output method="xml" et un content-type en application/xhtml+xml... qu'il ne faut pas que je modifie !)...
Par contre, si j'insère directement le contenu de mon template menu dans les pages où je veux l'afficher, ben là çà marche bien. Le problème vient bien de ce xmlns donc... J'ai peut être oublié un paramètre quelque part dans mon template menu... C'est pas très clair...
PS : Je précise que cela marche très bien chez moi en local avec WAMP mais que çà ne marche pas avec OVH qui à l'air d'être plus strict... Les fichiers xhtml sont générés par processeur XSLT de php...
Partager