2013-07-28 59 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