XSLT使用逗号(,)连接值

14

我需要循环遍历XML文档中的所有节点,并使用逗号(,)将值附加到后面。在最后一个元素之后,我不应该有逗号(,)。

请问有谁能帮助我呢?

谢谢, Ramana Kumar。


可能是重复的问题,参考如何使用XSLT / XPath生成逗号分隔列表? - 200_success
3个回答

29

您可以像这样做:

<xsl:for-each select="element">
    <xsl:value-of select="whatever" />
    <xsl:if test="position() != last()">, </xsl:if>
</xsl:for-each>
position()函数返回在for-each上下文中当前元素的索引,last()返回最后一个元素的索引。
XSLT文档中的xsl:if条件处理部分提供了有关此示例的更多信息。

12

XSLT 2.0(或更高版本)中,你可以使用string-join函数

<xsl:value-of  select="string-join(/element/whatever, ',')"/>

我想知道,.NET 3.5是否支持XSLT 2.0。 - Ramana kumar
2
.NET没有本地的XSLT 2.0支持,但是Saxon是.NET 2.0或更高版本的一个选择:http://saxon.sourceforge.net/ - Mads Hansen
Saxon非常慢,我建议你坚持使用XSLT 1.0。 - astrojuanlu
@astrojuanlu:我建议您要么用可靠的引用来支持您没有证据的主张,要么删除您的评论。就目前而言,这比Saxon更反映了您自己的不好。谢谢。 - kjhughes

2
XSLT 2.0 (或更高版本)中,您可以使用带有分隔符的 xsl:value-of
<xsl:value-of select="/element/whatever" separator=","/>

如果存在separator属性,则该属性的有效值用于分隔结果序列中相邻的项。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接