以文本方式查看主题

-  W3CHINA.ORG讨论区 - 语义网·描述逻辑·本体·RDF·OWL  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  XSLT <xsl:for-each>循环次数不对  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=71202)


--  作者:angelxg
--  发布时间:1/8/2009 7:12:00 PM

--  XSLT <xsl:for-each>循环次数不对
做了一个xsl
现在是
定义全局变量
<xsl:variable name="aaa" select="/ROOT/XXX" />

模板1
<xsl:for-each select="$aaa">
<call 模板2 />
</xsl:for-each>

模板1

模板2
<xsl:for-each select="$aaa">
aaaaaa
</xsl:for-each>
模板2

现在/ROOT/XXX返回2条结果集(用count()得到2)
但是在模板1中的for只循环了1次,而二中是2次(正确)
这是为什么呢?
xsltc用的是jdk5.0自带的


--  作者:angelxg
--  发布时间:1/8/2009 7:13:00 PM

--  
补充一下
如果模板1中
<xsl:for-each select="$aaa">
换成<xsl:for-each select="/ROOT/XXX">
得到正确循环2次

--  作者:Qr
--  发布时间:1/9/2009 9:16:00 AM

--  
一般不建议直接用select来将结点集通过xsl:variable赋变量值(似乎在xsl:for-each可以这么使用,但偶写代码很少用xsl:for-each,更不喜欢将结点集作为变量重用,这样做非常浪费资源,也不是XSL的强项),而是用xsl:apply-templates返回结点集。

所以,偶一般不会考虑解决这种问题,呵呵。


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
31.250ms