为一个需求中,需要用到xslt的字符串拼接,换成java的思维可以这样去说这个问题:
假设有个对象叫Return,它有period和value属性,想把Return的数组(假设叫Return[] returns)中period取出来拼接成字符串,java中很简单,声明一个StringBuilder 或者 StringBuffer,把returns进行循环,把其中的period的值取出来,用append()方法追加到stringbuild/stringbuffer对象中去;这样基本就完事了...
但是xslt不是java,没有StringBuilder/StringBuffer,也许可以通过xslt调用java的方式去实现,但资源有限,没有精力去做,所以还是选择xslt原生的方法去做:
用xslt中的for-each来代替java中的for循环,原先受java思维所限制,我也想着去声明一个变量,把值拼接好之后,放到循环中去继续拼接,但最终被证明,这种方式是错误的;后来在
http://www.cnblogs.com/goody9807/archive/2007/08/15/856363.html找到了一种适合我的解决方案:
如何在xsl拼接字符串
:
<xsl:if test="position()>1">,</xsl:if>
<xsl:value-of select="Name"/>
</xsl:for-each>
position方法是xsl内置的方法,意思是取得每次循环中的位置,上面的循环可以达到拼接字符串的效果