如何在for-each循环的每个元素之间添加定界符?

时间:2019-09-09 14:39:59

标签: xslt xslt-1.0 xslt-2.0 xslt-3.0

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

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

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

我想在每个元素之间添加定界符,例如;。该怎么办?

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

1 个答案:

答案 0 :(得分:1)

如果您使用的是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将返回“ select”语句返回的所有节点的值,但是在XSLT 1.0中,它仅返回第一个节点应该有多个。