我试图在XSL中模拟StringBuilder行为.有没有办法做到这一点.鉴于XSLT是一种函数式编程语言,这似乎很难
解决方法
如果你正在查看一个节点集(只要你可以构造xpath来找到节点集),你就可以通过一点点的递归简单地获得累积的concats,这样做你可以添加任意位并且流入和流出它开始变得凌乱.
尝试这个为初学者(也加入):
<xsl:template match="/"> <xsl:variable name="s"> <xsl:call-template name="stringbuilder"> <xsl:with-param name="data" select="*" /><!-- your path here --> </xsl:call-template> </xsl:variable> <xsl:value-of select="$s" /><!-- Now contains a big concat string --> </xsl:template> <xsl:template name="stringbuilder"> <xsl:param name="data"/> <xsl:param name="join" select="''"/> <xsl:for-each select="$data/*"> <xsl:choose> <xsl:when test="not(position()=1)"> <xsl:value-of select="concat($join,child::text())"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="child::text()"/> </xsl:otherwise> </xsl:choose> </xsl:for-each> </xsl:template>
可能需要对此进行各种扩展:也许您想要修剪,也许您想要通过层次结构进行隧道传输.我不确定是否存在防弹通用解决方案.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。