1
<list>
    <head>Fruit</head>
    <type>Consumables</type>
    <item>Apple</item>
    <item>Banana</item>
    <item>Coffee</item>
<list>
<list>
    <head>Airports</head>
    <label>SFO</label>
    <item>San Francisco</item>
    <label>LHR</label>
    <item>London</item>
<list>

匹配a出现在第一个 之前的所有<list>节点。上面的第一个列表不匹配;第二个会。<label><item>

我可以假设至少有一个<item>. 它可能是唯一的孩子。

(XPath/XSLT 1.0)

4

2 回答 2

3

使用

 /*/list[*[self::label or self::item][1][self::label]]

这可能比使用反向轴更有效,因为评估会在第一个找到的子节点处停止,listlabeloritem

于 2012-07-25T04:00:14.350 回答
0

啊,我明白了。到达时不要期待停下来。而是转到第一个并使用.labelitemitempreceding-sibling

match="list[item[1]/preceding-sibling::label]"
于 2012-07-25T01:13:10.897 回答