有以下xml
<root>
<test>
<name>Liming</name>
</test>
<test>
<name>Wanghong</name>
</test>
<test>
<name>Zhangjin</name>
</test>
</root>
在xlst里想通过<xsl:for-each>取道所有的<name>下的值。
不知道大家有什么好办法?
------解决方案--------------------
是不是想实现输入“LimingWanghonZhangji” 的效果?
如果是的话,我觉得:
1:如果通过XSLT变量,可以实现,但是比较复杂,需要重新定义一个模板来自己循环调用自己
<xsl:call-template name="for-loop">
<xsl:with-param name="n">
<xsl:value-of select="name"/>
</xsl:with-param>
</xsl:call-template>
<xsl:template name="for-loop">
<xsl:param name="n"/>
<xsl:call-template name="for-loop">
<xsl:with-param name="n">
<xsl:value-of select="concat($n + n)"/>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
2:如果用script变量的话,就方便的很多,在for-each里调用script方法,当然script里的这个变量是全局的。
<msxsl:script language="C#" implements-prefix="myfun">
<![CDATA[
int allname ="";
public string ToNames(strname)
{
return allname+=strname;
}
]]>
</msxsl:script>
<xsl:for-each select="test">
<xsl:value-of select="myfun:ToNames(name)"/>
</xsl:for-each>
这两种方法,或许调试起来不太完全正确,但是我只是想给你一个思路,希望能给你有所参考帮助