getting first node in xpath result set

35,138

Use the following:

(//dl)[1]

The parentheses are significant. You want the first node that results from //dl (not the set of dl elements that are the first child of their parent (which is what //dl[1] (no parens) returns)).

This is easier to see when one realizes that // is shorthand for (i.e. expands fully to) /descendant-or-self::node()/ so that //dl[1] is equivalent to:

/descendant-or-self::node()/dl[1]

...which is more obviously not what you want. Instead, you're looking for:

(/descendant-or-self::node()/dl)[1]
Share:
35,138
tipu
Author by

tipu

code n stuff

Updated on April 11, 2020

Comments

  • tipu
    tipu about 4 years

    I am trying to select the first element in a set of resulting nodes after executing an xpath query.

    When I do this:

    //dl
    

    I get the following result set:

    [<dl>​…​</dl>​, <dl>​…​</dl>​]
    

    How can I get the first one? Neither of these work:

    //dl[1]
    //dl[position()=1]
    

    I am executing this in Chrome's Web Inspector.

  • tipu
    tipu over 12 years
    i didn't know that was possible. what other examples are there that i can do with (//dl) ?