I use a lot of XPath when locating elements in web pages using Selenium, and have moved away from using node1//node2 towards using node1/descendant::node2 more recently. Wha
In your case
id('books')//td[@class='title']
and:
id('books')/descendant::td[@class='title']
return the same result.
But in fact, like it was already stated before, id('books')//td[@class='title']
means id('books')/descendant-or-self::node()/td[@class='title']
which is different from id('books')/descendant::td[@class='title']
in concept.
See the following note:
NOTE: The location path //para[1] does not mean the same as the location path /descendant::para[1]. The latter selects the first descendant para element; the former selects all descendant para elements that are the first para children of their parents.
this note was taken from http://www.w3.org/TR/xpath#path-abbrev