我通过xslt渲染一个代码清单到html,我希望列表是逗号取消。假设我打算使用xsl:for-each ......
<xsl:for-each select="/Tickers/Ticker">
<xsl:value-of select="TickerSymbol"/>,
</xsl:for-each>
摆脱尾随逗号的最佳方法是什么?有没有比xsl更好的东西:for-each?
答案 0 :(得分:17)
<xsl:for-each select="/Tickers/Ticker">
<xsl:if test="position() > 1">, </xsl:if>
<xsl:value-of select="TickerSymbol"/>
</xsl:for-each>
答案 1 :(得分:6)
在 XSLT 2.0 中,您可以使用string-join function执行此操作(没有for-each ):
<xsl:value-of select="string-join(/Tickers/Ticker, ',')"/>
答案 2 :(得分:2)
在XSLT 1.0中,使用xsl:for-each的另一种方法是使用xsl:apply-templates
<xsl:template match="/">
<!-- Output first element without a preceding comma -->
<xsl:apply-templates select="/Tickers/Ticker[position()=1]" />
<!-- Output subsequent elements with a preceding comma -->
<xsl:apply-templates select="/Tickers/Ticker[position()>1]">
<xsl:with-param name="separator">,</xsl:with-param>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="Ticker">
<xsl:param name="separator" />
<xsl:value-of select="$separator" /><xsl:value-of select="TickerSymbol" />
</xsl:template>
答案 3 :(得分:1)
我知道你说xsl 2.0不是一个选项,问题问题已经有很长一段时间了,但是对于那些寻找可行性去做你想要达到的目标的人来说:
在xsl 2.0或更高版本中有一种更简单的方法
<xsl:value-of separator=", " select="/Tickers/Ticker/TickerSymbol" />
这将读取您的/ Tickers / Ticker元素,并在需要时插入','作为分隔符
如果有更简单的方法可以做到这一点,我期待着提出建议
问候凯文