1

我有这个 xml 文件:

<?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

我对吗?有人可以简要解释一下这是如何工作的吗?感谢吨

4

1 回答 1

2

/child::ul返回ul.

descendant-or-self::*返回 self (ul再次)加上它的所有后代(li-A, li-ol, ol, li-B, li-C, li-D)。

child::li移动到先前元素的子元素,即,li这意味着li-A,li-olli-D, li-B li-C ol`。ulandandfor

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

于 2013-07-28T18:29:20.837 回答