以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  [求助]测试http://www.webdn.com/web_file/3sword/xml/0602016042/  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=40505)


--  作者:txnnh
--  发布时间:11/25/2006 9:32:00 PM

--  [求助]测试http://www.webdn.com/web_file/3sword/xml/0602016042/
<A id="a1">
  <B id="b1">
    <C id="c1">
      <B name="b"/>
      <D id="d1"/>
      <E id="e1"/>
      <E id="e2"/>
    </C>
  </B>
  <B id="b2"/>
  <C id="c2">
    <B/>
    <D id="d2"/>
    <F/>
  </C>
  <E/>
</A>

位置匹配
举  例 含  义 匹配结果
/A/B/C[1] A元素→B元素→C元素的第一个子元素 name值为b的B元素
/A/B/C[last()] A元素→B元素→C元素的最后一个子元素 id值为e2的E元素
/A/B/C[position()>1] A元素→B元素→C元素之下的位置号大于1的元素 id值为d1的D元素和两个具有id值的E元素

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:template match="/">
  <xsl:value-of select="A/B/C[position()gt;1]"/>
 </xsl:template>
</xsl:stylesheet>



<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:template match="/">
  <xsl:value-of select="A/B/C[position()>1]"/>
 </xsl:template>
</xsl:stylesheet>
为什么没有得到结果::/A/B/C[position()>1] A元素→B元素→C元素之下的位置号大于1的元素 id值为d1的D元素和两个具有id值的E元素    



--  作者:Qr
--  发布时间:11/27/2006 12:25:00 PM

--  
因为A元素→B元素下只有一个C元素(即属性id="c1"的那个),而position()值始于0,故就以上XML来说,永远不可能有匹配项。
--  作者:txnnh
--  发布时间:11/27/2006 6:33:00 PM

--  
那么这个网站里所说的东西,很多错的是不?http://www.webdn.com/web_file/3sword/xml/0602016042


因为我是根本它给出的结果来试的!


--  作者:Qr
--  发布时间:11/28/2006 9:07:00 AM

--  
那个网站上的东东也是COPY来的,其实,讲的内容也没错,只是那个XML不够完整。

  <B id="b1">
    <C id="c1">
      <B name="b"/>
      <D id="d1"/>
      <E id="e1"/>
      <E id="e2"/>
    </C>
    <C id="c2">
      <B name="b"/>
     </C>

    <C id="c3">
      <B name="b"/>
    </C>

  </B>
这样改就好了。


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