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>ノードに一致します。上記の最初のリストは一致しません。2番目はそうするでしょう。<label><item>

少なくとも 1 つあると推測できます<item>。そして一人っ子かもしれません。

(XPath/XSLT 1.0)

4

2 に答える 2

3

使用:

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

これは、またはのlistいずれかである最初に見つかった子で評価が停止するため、逆軸を使用するよりも効率的である可能性がありますlabelitem

于 2012-07-25T04:00:14.350 に答える
0

ああ、私はそれを参照してください。を楽しみにせずlabel、 に到達したら停止しitemます。代わりに、最初に移動し、を使用して後ろitemを見てください。preceding-sibling

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