基本上我有一个用逗号分隔的循环创建的字符串,例如。 A,B,C, 我想摆脱最后一个逗号。
<xsl:variable name="myConcatString">
<xsl:for-each select="valueinElement">
<xsl:value-of select="@attributeValue"/>,
</xsl:for-each>
</xsl:variable>
<xsl:variable name="valueLength" select="string-length($myConcatString)-1"/>
<xsl:value-of select="substring($myConcatString,1,$valueLength)"/>
现在最后一行应该给我A,B,C而不是最后一个“,”。有人能告诉我出了什么问题吗?
答案 0 :(得分:7)
由于格式化XML的方式,您输出的是空格。您可以通过两种方式修复它。一种是删除格式:
<xsl:for-each select="valueinElement"><xsl:value-of select="@attributeValue"/>,</xsl:for-each>
另一种更强大的方法是改变你处理空格的方式:
<xsl:for-each select="valueinElement">
<xsl:value-of select="@attributeValue"/>
<xsl:text>,</xsl:text>
</xsl:for-each>
这样做只是将逗号视为一个元素,以便忽略周围的空格,而不是将for-each
循环内的所有空格视为输出的一部分。
作为参考,我针对以下XML文件运行了上述XSLT片段:
<root>
<valueinElement attributeValue="dogs"/>
<valueinElement attributeValue="cats"/>
<valueinElement attributeValue="mice"/>
<valueinElement attributeValue="lasers"/>
<valueinElement attributeValue="frogs"/>
</root>
在这两种情况下得到以下输出:
dogs,cats,mice,lasers,frogs
答案 1 :(得分:4)
只需使用此替换,它将纠正您的输出。
<xsl:value-of select="substring($myConcatString,1,$valueLength)"/>
带
<xsl:value-of select="substring($myConcatString,0,$valueLength)"/>