当前位置: 代码迷 >> XML/SOAP >> 怎么实现取循环的值。XSLT
  详细解决方案

怎么实现取循环的值。XSLT

热度:685   发布时间:2012-02-05 12:07:15.0
如何实现取循环的值。XSLT
有以下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>
这两种方法,或许调试起来不太完全正确,但是我只是想给你一个思路,希望能给你有所参考帮助