Salut les gens Smiley cligne , j'ai un fichier xml source, et je veux faire un petit tableau pour récuperer quelques informations de mon fichier, voici un petit extrait de mon fichier:

...
<inst ......../>
..
<Part id="01" name="lolo lala" ..../>
....


et voici mon fichier xslt:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
        <xsl:output method='html' encoding='ISO-8859-1' indent='yes'/>
<xsl:template match="/">
<html>
<body>
<h2>Liste ids noms</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>id</th>
<th>noms</th>
</tr>

<xsl:for-each select="//Part">
<tr>
<td><xsl:copy-of select="id"/></td>
<td><xsl:copy-of select="nom"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>


avec mon xslt, j'ai mon tableau mais il est vide, je ne comprend pas pourqoui !!!
aidez moi please
Smiley decu
Modifié par aadari (17 Oct 2007 - 16:23)
j'ai peut etre avancé, en fait quand je change mon xml ça marche:

...
<inst>
<nom>....</nom>
...
</inst>
....
<Part>
<id>01</id>
<name>lolo lala</name>
...
</Part>
....


j'aimerai bien comprendre pour quoi ??? Smiley rolleyes , normalement c'est la même chose,non???? Smiley decu
Modifié par aadari (17 Oct 2007 - 09:16)
Bonjour!

Non, xsl-copy-of sert à copier le contenu d'un noeud. Ce que tu cherches est xsl:value-of. Dans ton cas (avec le fichier initial avec les attributs), cela donnera :

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
        <xsl:output method='html' encoding='ISO-8859-1' indent='yes'/>
<xsl:template match="/">
<html>
<body>
<h2>Liste ids noms</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>id</th>
<th>noms</th>
</tr>

<xsl:for-each select="//Part">
<tr>
<td><xsl:value-of select="id"/></td>
<td><xsl:value-of select="name"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>

</xsl:template>
</xsl:stylesheet>


Tu peux consulter mon introduction à XSL pour en savoir plus.
Modifié par Gilles (17 Oct 2007 - 09:53)
Oui, c'est juste une petite faute de ma part (j'ai voulu tout essayé :d ), mais ça marche pas même avec value-of, voici le résultat que j'obtien:

<html><body>
<h2>Liste ids noms</h2>
<table border="1"><tr bgcolor="#9acd32">
<th>id</th>
<th>noms</th>
</tr></table>
</body></html>


normalement, il n y'a pas diférence entre ce code:

<inst nom="lol" id="41" ...../>

et celui-ci:

<inst>
<nom>lhglhghg</nom>
<id>kjhgjh</id>
...
</inst>


et bin, ça marche avec le 2ème mais pas avec le premier !!!!!
Modifié par aadari (17 Oct 2007 - 15:31)
Euh, oui, oups, au temps pour moi, j'ai oublié un truc important en faisant le copier/coller. Pour accéder à un attribut, il faut utiliser le caractère @ comme ceci :

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
        <xsl:output method='html' encoding='ISO-8859-1' indent='yes'/>
<xsl:template match="/">
<html>
<body>

<h2>Liste ids noms</h2>

<table border="1">
<tr bgcolor="#9acd32">
<th>id</th>
<th>noms</th>
</tr>

<xsl:for-each select="//Part">
<tr>
<td><xsl:value-of select="@id"/></td>
<td><xsl:value-of select="@name"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>

</xsl:template>
</xsl:stylesheet>


Désolé Smiley confused !
ça marche impéc, mais je veux programmer plus proprement, en récursif,
voici mon essai, mais ça marche pas encore Smiley sweatdrop

<xsl:template match="/">
<html>
<body>

<h2>Liste ids noms</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>id</th>
<th>instanceRefs</th>
</tr>

<xsl:apply-templates/>

</table>
</body>
</html>
</xsl:template>

<xsl:template match="//Part[@id]">
<tr>
<td><xsl:value-of select="."/></td>
</tr>
</xsl:template>
<xsl:template match="//Part[@instanceRefs]">
<tr>
<td><xsl:value-of select="."/></td>
</tr>
</xsl:template>

<xsl:template match="text()"></xsl:template>
</xsl:stylesheet>


je crois que le problème est dans le match du template, mais comment dire que c'est les valeurs des attributs que je veux?! Smiley ohwell
Modifié par aadari (17 Oct 2007 - 15:27)
Bingoooo Smiley lol

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
        <xsl:output method='html' encoding='ISO-8859-1' indent='yes'/>

<xsl:template match="/">
<html>
<body>

<h2>Liste ids noms</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>id</th>
<th>instanceRefs</th>
</tr>

<xsl:apply-templates/>

</table>
</body>
</html>
</xsl:template>

<xsl:template match="//Part">
<tr>
<td><xsl:value-of select="@id"/></td>
<td><xsl:value-of select="@instanceRefs"/></td>
</tr>
</xsl:template>

<xsl:template match="text()"></xsl:template>
</xsl:stylesheet>