Votre XML n'a qu'un seul entry
Ainsi, le code dans la section xsl:for-each
ne sera exécuté qu'une seule fois. Et en faisant <xsl:value-of select="title" />
ne sélectionnera que le premier title
dans ce cadre entry
(En supposant que XSLT 1.0, c'est-à-dire)
Changez-le en ceci...
<xsl:for-each select="entry/title">
<xsl:if test="position() > 1">, </xsl:if>
<xsl:value-of select="."/>
</xsl:for-each>
Notez que dans XSTL 2.0, vous pourriez remplacer entièrement le bout de code ci-dessus par ceci...
<xsl:value-of select="entry/title" separator="," />
EDIT : Supposons que votre XSLT ressemble à ceci...
<iavmNotice xmlns="http://stuff.com" noticeId="138643">
<title>Cisco Vulnerability</title>
<techOverview>
<entry>
<title>2012-2490</title>
<description>Cisco ID 71.</description>
</entry>
<entry>
<title>2012-2525</title>
<description>Cisco ID 69.</description>
</entry>
</techOverview>
</iavmNotice>
Ensuite, pour utiliser xsl:for-each
dans le contexte, vous ajouteriez un modèle comme celui-ci :
<xsl:template match="stuff:techOverview">
<xsl:copy>
<xsl:for-each select="stuff:entry/stuff:title">
<xsl:if test="position() > 1">, </xsl:if>
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:copy>
</xsl:template>
Veuillez noter ce qui suit :
- Assurez-vous que le
stuff
est lié à l'espace de nom correct, conformément au XML d'entrée.
- Assurez-vous que vous n'avez pas d'autres modèles correspondant
stuff:techOverview