以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XML基础 』  (http://bbs.xml.org.cn/list.asp?boardid=1)
----  请教:xsl的following方法有没有参数可选?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=1&rootid=&id=42399)


--  作者:HookedApi
--  发布时间:1/17/2007 10:15:00 AM

--  请教:xsl的following方法有没有参数可选?
xml是这样的:
<root>
  <wrapper>
    <a>
       <no>1</no>
    </a>
    <a>
       <no>2<no>
    </a>
    <a>
       <no>1<no>
     </a>
  </wrapper>

  <wrapper>
    <a>
       <no>1</no>
    </a>
    <a>
       <no>2<no>
    </a>
    <a>
       <no>1<no>
     </a>
  </wrapper>

</root>

我想实现的目的:
对于每一个wrapper
xsl:for-each select="/root/wrapper"
我想取出其中的a,条件为a的no不相同
我这样写的:
for-each select="./a[not(./no=./preceding::a/no)]"
但是这样有一个问题
就是遍历到第二个wrapper的时候
里面的a节点,调用preceding方法的时候,会去全文搜索,就是也会去查第一个wrapper里的a,这样比较的结果会错误
而我想,让每个wrapper里的a,只去判断这个wrapper里的上下文的a是否no一样

不知大家能否听懂我的意思,还望谁能帮下忙,多谢了!


--  作者:HookedApi
--  发布时间:1/22/2007 11:06:00 AM

--  
anyone help me..
--  作者:Qr
--  发布时间:1/22/2007 11:51:00 AM

--  
拿这个试试看是不是你要的(为方便调试,加了些额外的输出):
<xsl:template match="/">
 <xsl:for-each select="root/wrapper">
  none<xsl:value-of select="position()"/>:
  <xsl:for-each select="a[not(./no=./preceding-sibling::a/no)]">
   <xsl:value-of select="position()"/>-<xsl:value-of

select="no"/>,
  </xsl:for-each><br/>
 </xsl:for-each>
</xsl:template>


--  作者:HookedApi
--  发布时间:1/23/2007 10:27:00 AM

--  
谢谢您!好像可以了
总结是:要用全路径,不能用//
然后将preceding换成preceding-sibling
虽然我不太懂。。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
1,238.281ms