What is the difference between .// and //* in XPath?

后端 未结 4 1771
梦如初夏
梦如初夏 2020-11-22 10:39

While finding the relative XPath via Firebug : it creates like

  1. .//*[@id=\'Passwd\']--------- what if we dont use dot at the start what it sign

4条回答
  •  误落风尘
    2020-11-22 11:29

    There are several distinct, key XPath concepts in play here...

    Absolute vs relative XPaths (/ vs .)

    • / introduces an absolute location path, starting at the root of the document.
    • . introduces a relative location path, starting at the context node.

    Named element vs any element (ename vs *)

    • /ename selects an ename root element
      • ./ename selects all ename child elements of the current node.
    • /* selects the root element, regardless of name.
      • ./* or * selects all child elements of the context node, regardless of name.

    descendant-or-self axis (//*)

    • //ename selects all ename elements in a document.
      • .//ename selects all ename elements at or beneath the context node.
    • //* selects all elements in a document, regardless of name.
      • .//* selects all elements, regardless of name, at or beneath the context node.

    With these concepts in mind, here are answers to your specific questions...

    • .//*[@id='Passwd'] means to select all elements at or beneath the current context node that have an id attribute value equal to 'Passwd'.
    • //child::input[@type='password'] can be simplified to //input[@type='password'] and means to select all input elements in the document that have an type attribute value equal to 'password'.

提交回复
热议问题