0

In //header[.//span[contains(text(), 'part_title')]]//label[contains(@class, 'start')], what does the . dot in .// mean?

halfer
  • 19,471
  • 17
  • 87
  • 173
codyc4321
  • 8,012
  • 21
  • 75
  • 152
  • Have you learned about XPath syntax yet? https://msdn.microsoft.com/en-us/library/ms256122(v=vs.110).aspx – 4castle Mar 13 '17 at 21:37

1 Answers1

9

You need to learn about the concept of the XPath "context" node. When navigating an XPath expression, every step identifies a context node or node-set from which the subsequent expression is evaluated, except for absolute paths such as //.

The construction .//span means "starting at the current node find the next descendant span at any level below the current context node. Contrast with ./span, which would mean an immediate child span of the current context node.

Without the leading dot /span means the root node if it's a span, and //span means the first span in the document at any level.

Or, to put it more simply, the leading dot has exactly the same meaning as the . entry in a Linux directory.

Jim Garrison
  • 83,534
  • 20
  • 149
  • 186
  • This is correct (+1). See also [What is the difference between .// and //* in XPath?](http://stackoverflow.com/q/35606708/290085) – kjhughes Mar 13 '17 at 23:11