2013-07-28 32 views
1

我有这个XML文件:的XPath简单的理解例如

<?xml version="1.0" encoding="US-ASCII"?> 
<?xml-stylesheet type="text/css" href="positions-zaehlweise.css"?> 
<ul> 
<li>A</li> 
<li>    
<ol> 
    <li>B</li> 
    <li>C</li> 
</ol> 
</li> 
<li>D</li> 
</ul> 

这XPath查询:

/child::ul/descendant-or-self::*/child::li[position()=1] 

我从这个查询获得:AB

但我不知道它是如何做到这一点。用/descendant-or-self它取selfA,对吧?那么它就会在列表中占据一席之地。那么它是如何比较,我的理想是这样的:

self    descendant 
---------------------------- 
A,D     B, C 

是吗?有人可以请简单解释我如何工作?谢谢吨

回答

2

/child::ul返回ul

descendant-or-self::*返回self(ul再次)及其所有后代(li-Ali-ololli-Bli-Cli-D)。

child::li移动到前面的元素是li,这意味着li-Ali-olli-Duland利-B and利-C for ol`的孩子。

[position()=1]只选择那些第一个这样的孩子,即li-Ali-B

+0

太好了,谢谢! :) – doniyor