xmlxsltxpath

xpath get element by index


I have the below xpath expression

//div[@class="post-content"]//img

which runs on a html page, scanning for images. The above query returns a lot of images but I only want the second in the list.

I have tried these with no luck:

//div[@class="post-content"]//img[1] and
//div[@class="post-content"]//img[position()=1]

Solution

  • In XPath index starts from 1 position, therefore

    //div[@class="post-content"]//img[2]
    

    should work correctly if you have to select each 2nd img in div[@class="post-content"].
    If you want to select only 2nd img from all images that are in div[@class="post-content"], use:

    (//div[@class="post-content"]//img)[2]