0

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

halfer
  • 19,824
  • 17
  • 99
  • 186
codyc4321
  • 9,014
  • 22
  • 92
  • 165
  • 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
  • 85,615
  • 20
  • 155
  • 190
  • 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