以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 DOM/SAX/XPath 』  (http://bbs.xml.org.cn/list.asp?boardid=11)
----  XPath轴实例的表达式解释不明白  (http://bbs.xml.org.cn/dispbbs.asp?boardid=11&rootid=&id=68961)


--  作者:jianghui
--  发布时间:11/1/2008 2:11:00 PM

--  XPath轴实例的表达式解释不明白
XML文件如下:
<?xml version="1.0"?>
<records>
 <record id="001" level="0"/>
 <record id="002" level="1"/>
 <record id="003" level="2"/>
 <record id="004" level="3"/>
 <record id="005" level="3"/>
 <record id="006" level="2"/>
 <record id="007" level="3"/>
 <record id="008" level="2"/>
 <record id="009" level="1"/>
 <record id="010" level="1"/>
 <record id="011" level="2"/>
 <record id="012" level="3"/>
 <record id="013" level="1"/>
 <record id="014" level="2"/>
 <record id="015" level="2"/>
 <record id="016" level="1"/>
</records>


XPath轴文件如下:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:template match="/records">
  <xsl:apply-templates select="record[@level=0]"/>
 </xsl:template>
 <xsl:template match="*">
  <xsl:copy>
   <xsl:copy-of select="@id"/>
   <xsl:variable name="subLevel" select="@level+1"/>
   <xsl:apply-templates select="following-sibling::*[@level=$subLevel][count(preceding-sibling::*[@level=current()/@level][1] | current())=1]"/>
  </xsl:copy>
 </xsl:template>
</xsl:stylesheet>


表达式:
following-sibling::*[@level=$subLevel][count(preceding-sibling::*[@level=current()/@level][1] | current())=1]

我看不明白,希望大家帮忙!



--  作者:Qr
--  发布时间:11/1/2008 7:18:00 PM

--  
你的XSL似乎有问题,尽可能保持你的代码并做一定的修改后运行,发现运行结果与从XML猜题意并不一致,而且看你出你的愿意究竟是什么,所以很难说清你的表达式有没有意义。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
35.156ms