XPath Node Test

XPath node test is a part of XPath expression for finding nodes in XML document.

XPath Node Test Examples

Following are some XPath node test examples.

Select Axis Description
//name/self::* Select the name context node.
child::* Select All child nodes of the context node.
child::node() Select all child nodes of the context node.
child::empinfo Select all child elements of empinfo node.
//employee/descendant::* Select all descendant of the employee node.
//descendant::employee Select all descendant of the employee node in context node.
//employee/descendant-or-self::* Select all descendant of the employee nodes and context node itself.
//descendant-or-self::employee Select all descendant of employee node with context node itself.

Ancestor

//employee/ancestor::* Select all ancestor node of the employee node.
//ancestor::name Select all ancestor of the name node in context node.
//employee/ancestor-or-self::* Select all ancestor of the employee nodes and context node itself.
//name/ancestor-or-self::employee Select all ancestor of name node with context node itself.
//name/parent::* Select parent node of the name context node.
//name/parent::employee Return result node if employee node is parent node of the context node, otherwise no node found.
//attribute::id Select all node with id attribute.
//attribute::* Select all node with any attribute.
//employee[@id=1]/following::* Select all nodes (with child nodes) after the context node.
//employee[@id=1]/following-sibling::* Select all sibling nodes after the context node.
//employee[@id=3]/preceding::* Select all nodes (with child nodes) before the context node.
//employee[@id=3]/preceding-sibling::* Select all sibling nodes before the context node.

//name/self::*: Select the name context node.

XPath selection: name node value (4, 9, 14 lines).

//name/self::*

<?xml version="1.0" standalone="yes"?>
<empinfo>
  <employee id="1">
    <name>Opal Kole</name>
    <designation discipline="web" experience="3 year">Senior Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="2">
    <name from="CA">Max Miller</name>
    <designation discipline="DBA" experience="2 year">DBA Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="3">
    <name>Beccaa Moss</name>
    <designation discipline="appdev">Application Developer</designation>
    <email>[email protected]</email>
  </employee>
</empinfo>

child::*: Select All child nodes of the context node.

XPath selection: 3 to 7, 8 to 12, 13 to 17 lines.

/empinfo/child::*

<?xml version="1.0" standalone="yes"?>
<empinfo>
  <employee id="1">
    <name>Opal Kole</name>
    <designation discipline="web" experience="3 year">Senior Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="2">
    <name from="CA">Max Miller</name>
    <designation discipline="DBA" experience="2 year">DBA Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="3">
    <name>Beccaa Moss</name>
    <designation discipline="appdev">Application Developer</designation>
    <email>[email protected]</email>
  </employee>
</empinfo>

child::node(): Select all child nodes of the context node.

XPath selection: name node value (4, 9, 14 lines).

child::node()

<?xml version="1.0" standalone="yes"?>
<empinfo>
  <employee id="1">
    <name>Opal Kole</name>
    <designation discipline="web" experience="3 year">Senior Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="2">
    <name from="CA">Max Miller</name>
    <designation discipline="DBA" experience="2 year">DBA Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="3">
    <name>Beccaa Moss</name>
    <designation discipline="appdev">Application Developer</designation>
    <email>[email protected]</email>
  </employee>
</empinfo>

child::empinfo: Select all child elements of empinfo node.

XPath selection: 2 to 18 lines.

child::empinfo

<?xml version="1.0" standalone="yes"?>
<empinfo>
  <employee id="1">
    <name>Opal Kole</name>
    <designation discipline="web" experience="3 year">Senior Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="2">
    <name from="CA">Max Miller</name>
    <designation discipline="DBA" experience="2 year">DBA Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="3">
    <name>Beccaa Moss</name>
    <designation discipline="appdev">Application Developer</designation>
    <email>[email protected]</email>
  </employee>
</empinfo>

//employee/descendant::*: Select all descendant of the employee node.

XPath selection: 4, 5, 6, 9, 10, 11, 14, 15, 16 lines.

//employee/descendant::*

<?xml version="1.0" standalone="yes"?>
<empinfo>
  <employee id="1">
    <name>Opal Kole</name>
    <designation discipline="web" experience="3 year">Senior Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="2">
    <name from="CA">Max Miller</name>
    <designation discipline="DBA" experience="2 year">DBA Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="3">
    <name>Beccaa Moss</name>
    <designation discipline="appdev">Application Developer</designation>
    <email>[email protected]</email>
  </employee>
</empinfo>

//descendant::employee: Select all descendant of the employee node in context node.

XPath selection: 3 to 7, 8 to 12, 13 to 17 lines.

//descendant::employee

<?xml version="1.0" standalone="yes"?>
<empinfo>
  <employee id="1">
    <name>Opal Kole</name>
    <designation discipline="web" experience="3 year">Senior Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="2">
    <name from="CA">Max Miller</name>
    <designation discipline="DBA" experience="2 year">DBA Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="3">
    <name>Beccaa Moss</name>
    <designation discipline="appdev">Application Developer</designation>
    <email>[email protected]</email>
  </employee>
</empinfo>

//employee/descendant-or-self::*: Select all descendant of the employee nodes and context node itself.

XPath selection: 4, 5, 6, 8, 9, 10, 11, 13, 14, 15, 16 lines.

//employee/descendant-or-self::*

<?xml version="1.0" standalone="yes"?>
<empinfo>
  <employee id="1">
    <name>Opal Kole</name>
    <designation discipline="web" experience="3 year">Senior Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="2">
    <name from="CA">Max Miller</name>
    <designation discipline="DBA" experience="2 year">DBA Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="3">
    <name>Beccaa Moss</name>
    <designation discipline="appdev">Application Developer</designation>
    <email>[email protected]</email>
  </employee>
</empinfo>

//descendant-or-self::employee: Select all descendant of employee node with context node itself.

XPath selection: 3 to 7, 8 to 12, 13 to 17 lines.

//descendant-or-self::employee

<?xml version="1.0" standalone="yes"?>
<empinfo>
  <employee id="1">
    <name>Opal Kole</name>
    <designation discipline="web" experience="3 year">Senior Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="2">
    <name from="CA">Max Miller</name>
    <designation discipline="DBA" experience="2 year">DBA Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="3">
    <name>Beccaa Moss</name>
    <designation discipline="appdev">Application Developer</designation>
    <email>[email protected]</email>
  </employee>
</empinfo>

//employee/ancestor::*: Select all ancestor node of the employee node.

XPath selection: 2 to 18 lines.

//employee/ancestor::*

<?xml version="1.0" standalone="yes"?>
<empinfo>
  <employee id="1">
    <name>Opal Kole</name>
    <designation discipline="web" experience="3 year">Senior Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="2">
    <name from="CA">Max Miller</name>
    <designation discipline="DBA" experience="2 year">DBA Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="3">
    <name>Beccaa Moss</name>
    <designation discipline="appdev">Application Developer</designation>
    <email>[email protected]</email>
  </employee>
</empinfo>

//ancestor::name: Select all ancestor of the name node in context node.

XPath selection: name node value (4, 9, 14 lines).

//ancestor::name

<?xml version="1.0" standalone="yes"?>
<empinfo>
  <employee id="1">
    <name>Opal Kole</name>
    <designation discipline="web" experience="3 year">Senior Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="2">
    <name from="CA">Max Miller</name>
    <designation discipline="DBA" experience="2 year">DBA Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="3">
    <name>Beccaa Moss</name>
    <designation discipline="appdev">Application Developer</designation>
    <email>[email protected]</email>
  </employee>
</empinfo>

//employee/ancestor-or-self::*: Select all ancestor of the employee nodes and context node itself.

XPath selection: 2, 3, 7, 8, 12, 13, 17, 18 lines (4 node select).

//employee/ancestor-or-self::*

<?xml version="1.0" standalone="yes"?>
<empinfo>
  <employee id="1">
    <name>Opal Kole</name>
    <designation discipline="web" experience="3 year">Senior Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="2">
    <name from="CA">Max Miller</name>
    <designation discipline="DBA" experience="2 year">DBA Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="3">
    <name>Beccaa Moss</name>
    <designation discipline="appdev">Application Developer</designation>
    <email>[email protected]</email>
  </employee>
</empinfo>

//name/ancestor-or-self::employee: Select all ancestor of name node with context node itself.

XPath selection: 3 to 7, 8 to 12, 13 to 17 lines (3 node select).

//name/ancestor-or-self::employee

<?xml version="1.0" standalone="yes"?>
<empinfo>
  <employee id="1">
    <name>Opal Kole</name>
    <designation discipline="web" experience="3 year">Senior Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="2">
    <name from="CA">Max Miller</name>
    <designation discipline="DBA" experience="2 year">DBA Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="3">
    <name>Beccaa Moss</name>
    <designation discipline="appdev">Application Developer</designation>
    <email>[email protected]</email>
  </employee>
</empinfo>

//name/parent::*: Select parent node of the name context node.

XPath selection : 3 to 7, 8 to 12, 13 to 17 lines (3 node select).

//name/parent::*

<?xml version="1.0" standalone="yes"?>
<empinfo>
  <employee id="1">
    <name>Opal Kole</name>
    <designation discipline="web" experience="3 year">Senior Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="2">
    <name from="CA">Max Miller</name>
    <designation discipline="DBA" experience="2 year">DBA Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="3">
    <name>Beccaa Moss</name>
    <designation discipline="appdev">Application Developer</designation>
    <email>[email protected]</email>
  </employee>
</empinfo>

//name/parent::employee: Return result node if employee node is parent node of the context node, otherwise no node found.

XPath selection: 3 to 7, 8 to 12, 13 to 17 lines (3 node select).

//name/parent::employee

<?xml version="1.0" standalone="yes"?>
<empinfo>
  <employee id="1">
    <name>Opal Kole</name>
    <designation discipline="web" experience="3 year">Senior Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="2">
    <name from="CA">Max Miller</name>
    <designation discipline="DBA" experience="2 year">DBA Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="3">
    <name>Beccaa Moss</name>
    <designation discipline="appdev">Application Developer</designation>
    <email>[email protected]</email>
  </employee>
</empinfo>

//attribute::id: Select all node with id attribute.

XPath selection: id attribute value (3, 8, 13 lines).

//attribute::id

<?xml version="1.0" standalone="yes"?>
<empinfo>
  <employee id="1">
    <name>Opal Kole</name>
    <designation discipline="web" experience="3 year">Senior Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="2">
    <name from="CA">Max Miller</name>
    <designation discipline="DBA" experience="2 year">DBA Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="3">
    <name>Beccaa Moss</name>
    <designation discipline="appdev">Application Developer</designation>
    <email>[email protected]</email>
  </employee>
</empinfo>

//attribute::*: Select all node with any attribute.

XPath selection: select all attribute value in highlighted lines.

//attribute::*

<?xml version="1.0" standalone="yes"?>
<empinfo>
  <employee id="1">
    <name>Opal Kole</name>
    <designation discipline="web" experience="3 year">Senior Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="2">
    <name from="CA">Max Miller</name>
    <designation discipline="DBA" experience="2 year">DBA Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="3">
    <name>Beccaa Moss</name>
    <designation discipline="appdev">Application Developer</designation>
    <email>[email protected]</email>
  </employee>
</empinfo>

//employee[@id=1]/following::*: Select all nodes (with child nodes) after the context node.

XPath selection: 8 to 12, 9, 10, 11, 13 to 17, 14, 15, 16 lines (8 node select).

//employee[@id=1]/following::*

<?xml version="1.0" standalone="yes"?>
<empinfo>
  <employee id="1">
    <name>Opal Kole</name>
    <designation discipline="web" experience="3 year">Senior Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="2">
    <name from="CA">Max Miller</name>
    <designation discipline="DBA" experience="2 year">DBA Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="3">
    <name>Beccaa Moss</name>
    <designation discipline="appdev">Application Developer</designation>
    <email>[email protected]</email>
  </employee>
</empinfo>

//employee[@id=1]/following-sibling::*: Select all sibling nodes after the context node.

XPath selection: 8 to 12, 13 to 17 lines (2 node select).

//employee[@id=1]/following-sibling::*

<?xml version="1.0" standalone="yes"?>
<empinfo>
  <employee id="1">
    <name>Opal Kole</name>
    <designation discipline="web" experience="3 year">Senior Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="2">
    <name from="CA">Max Miller</name>
    <designation discipline="DBA" experience="2 year">DBA Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="3">
    <name>Beccaa Moss</name>
    <designation discipline="appdev">Application Developer</designation>
    <email>[email protected]</email>
  </employee>
</empinfo>

//employee[@id=3]/preceding::*: Select all nodes (with child nodes) before the context node.

XPath selection: 3 to 7, 4, 5, 6, 8 to 12, 9, 10, 11 lines (8 node select).

//employee[@id=3]/preceding::*

<?xml version="1.0" standalone="yes"?>
<empinfo>
  <employee id="1">
    <name>Opal Kole</name>
    <designation discipline="web" experience="3 year">Senior Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="2">
    <name from="CA">Max Miller</name>
    <designation discipline="DBA" experience="2 year">DBA Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="3">
    <name>Beccaa Moss</name>
    <designation discipline="appdev">Application Developer</designation>
    <email>[email protected]</email>
  </employee>
</empinfo>

//employee[@id=3]/preceding-sibling::*: Select all sibling nodes before the context node.

XPath selection: 3 to 7, 8 to 12 lines (2 node select).

//employee[@id=3]/preceding-sibling::*

<?xml version="1.0" standalone="yes"?>
<empinfo>
  <employee id="1">
    <name>Opal Kole</name>
    <designation discipline="web" experience="3 year">Senior Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="2">
    <name from="CA">Max Miller</name>
    <designation discipline="DBA" experience="2 year">DBA Engineer</designation>
    <email>[email protected]</email>
  </employee>
  <employee id="3">
    <name>Beccaa Moss</name>
    <designation discipline="appdev">Application Developer</designation>
    <email>[email protected]</email>
  </employee>
</empinfo>