Bonjour,
A partir du fichier XML suivant :
Je cherche à obtenir une copie filtrée (le même fichier sans la déclaration xml-stylesheet et avec uniquement les éléments dont le nom contient “a”):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <?xml version="1.0" ?> <?xml-stylesheet href="monfichier.xsl" type="text/xsl" ?> <a> <ab x="x"><b>Test</b><a>z</a></ab> <z x="x"><a>z</a></z> </a>
Pour ça, j’examine les différences entre deux solutions possibles, les instructions ‘copy’ et ‘element’ :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <?xml version="1.0" encoding="ISO-8859-1"?> <a> <ab x="x"><a>z</a></ab> </a>
AVEC COPY :
Avec un ‘if’ :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" version="1.0" encoding="ISO-8859-1"/> <xsl:variable name="var" select="//[contains(name(),'a')]"/> <xsl:template match="/"> <xsl:copy select="$v"/> </xsl:template> </xsl:stylesheet>
AVEC ELEMENT:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" version="1.0" encoding="ISO-8859-1"/> <xsl:template match="/"> <xsl:if test="*[contains(name(),'a')]"> <xsl:copy select="."/> </xsl:if> </xsl:template> </xsl:stylesheet>
Malheureusement, les deux codes me renvoient la même erreur dans Firefox :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" version="1.0" encoding="ISO-8859-1"/> <xsl:variable name="ele" select="//[contains(name(),'a')]"/> <xsl:template match="/"> <xsl:element name="{$ele}"/> </xsl:template> </xsl:stylesheet>
« Erreur lors du chargement de la feuille de style : Échec de l'analyse XPath : test de Name ou de Nodetype attendu: »
Je dois dire que je ne comprends pas !!
Merci pour vos lumières !
Partager