<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>
匹配在<list>
之前出现<label>
的所有<item>
个节点。上面的第一个列表不匹配;第二个会。
我可以假设至少有一个<item>
。它可能是唯一的孩子。
(XPath / XSLT 1.0)
答案 0 :(得分:3)
使用强>:
/*/list[*[self::label or self::item][1][self::label]]
这可能比使用反向轴更有效,因为评估在list
label
或item
{{1}}的第一个找到的孩子处停止
答案 1 :(得分:0)
label
的转发,并在访问item
时停止。而是使用item
转到第一个preceding-sibling
并向后看 。
match="list[item[1]/preceding-sibling::label]"