如何在 for-each 循环中的每个元素之间添加分隔符?

How to add a delimiter between each element in a for-each loop?

我正在遍历列表中的每个元素并输出特定值:

<xsl:for-each select="properties/property">
    <xsl:value-of select="name"/>
</xsl:for-each>

这只是输出 属性 的 name 节点的串联。

我想在每个元素之间添加分隔符,例如;。如何做到这一点?

我列出了 XSLT 版本 1.0、2.0 和 3.0,因为不同版本之间的功能可能有所不同。

如果您使用的是 XSLT 2.0 或更高版本,您可以删除 xsl:for-each 并在一个语句中完成

<xsl:value-of select="properties/property/name" separator=";" />

在 XSLT 1.0 中,您需要做更多的工作....

<xsl:for-each select="properties/property">
   <xsl:if test="position() > 1">;</xsl:if>
   <xsl:value-of select="name"/>
</xsl:for-each>

XSLT 2.0 和 XSLT 1.0 之间的区别是因为在 XSLT 2.0 中,xsl:value-of 将 return 由 "select" 语句编辑的所有节点的值 return , 但在 XSLT 1.0 中,它只有 return 第一个节点的值应该有多个。