子串,xslt中的字符串长度函数
问题描述:
基本上我有一个由逗号分隔的循环创建的字符串,例如。 A,B,C, 我想摆脱最后一个逗号。子串,xslt中的字符串长度函数
<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。有人能告诉我发生了什么问题吗?
答
由于您格式化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
答
只要使用这种替代,这将纠正你的输出。
<xsl:value-of select="substring($myConcatString,1,$valueLength)"/>
与
<xsl:value-of select="substring($myConcatString,0,$valueLength)"/>
很大,U救了我小时! – chugh97 2009-06-18 13:16:33