Welcome to The Coding College! In this tutorial, we will focus on XPath Nodes, which form the building blocks of navigating and querying XML documents using XPath. Understanding the types of nodes and their characteristics is crucial for efficiently working with XPath.
What Are XPath Nodes?
In XPath, everything in an XML document is represented as a node. Nodes are the fundamental units of an XML document and can represent elements, attributes, text, comments, and more.
XPath operates on these nodes to locate specific parts of an XML document.
Types of Nodes in XPath
XPath defines seven types of nodes:
Node Type | Description |
---|---|
Root Node | Represents the entire document. |
Element Node | Represents each XML element (e.g., <book> , <author> ). |
Attribute Node | Represents attributes of an element (e.g., id="1" ). |
Text Node | Represents the text content of an element. |
Namespace Node | Represents XML namespaces (rarely used explicitly in XPath queries). |
Processing Instruction Node | Represents special instructions in the XML document. |
Comment Node | Represents comments in the XML document. |
Example XML Document
We will use the following XML document to explore XPath nodes:
<library>
<book id="1" genre="Programming">
<title>XML Basics</title>
<author>John Doe</author>
<description>An introductory guide to XML.</description>
</book>
<book id="2" genre="Programming">
<title>Learn JavaScript</title>
<author>Jane Smith</author>
<description>A comprehensive guide to JavaScript programming.</description>
</book>
<!-- This is a comment -->
</library>
Working with Different XPath Nodes
1. Root Node
The root node represents the entire document, starting from the top level.
XPath Expression:
/
Result:
Selects the root node <library>
:
<library>
...
</library>
2. Element Nodes
Element nodes represent the tags in the XML document.
XPath Expression:
/library/book
Result:
Selects all <book>
elements:
<book id="1" genre="Programming">
...
</book>
<book id="2" genre="Programming">
...
</book>
3. Attribute Nodes
Attribute nodes represent attributes inside an element. Attributes are not part of the element’s child nodes but can be accessed using the @
symbol.
XPath Expression:
/library/book/@id
Result:
Selects the id
attribute of all <book>
elements:
1
2
4. Text Nodes
Text nodes represent the content inside elements. Text nodes do not include the surrounding tags.
XPath Expression:
/library/book/title/text()
Result:
Selects the text content of all <title>
elements:
XML Basics
Learn JavaScript
5. Comment Nodes
Comment nodes represent XML comments. You can access comments using the comment()
function in XPath.
XPath Expression:
//comment()
Result:
Selects all comment nodes in the document:
<!-- This is a comment -->
6. Namespace Nodes
Namespace nodes are used when an XML document includes namespaces. For example:
<library xmlns:tech="https://example.com/tech">
<tech:book id="1">
<tech:title>XML Guide</tech:title>
</tech:book>
</library>
XPath Expression to Access Namespaces:
/library/namespace::*
Result:
Retrieves the xmlns:tech
namespace.
7. Processing Instruction Nodes
Processing instruction nodes represent special instructions in the XML. For example:
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
XPath Expression:
/processing-instruction()
Result:
Selects the processing instruction:
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
Practical Examples
Example 1: Select All Book Titles
XPath Expression:
/library/book/title
Result:
Selects all <title>
elements:
<title>XML Basics</title>
<title>Learn JavaScript</title>
Example 2: Select All Attributes of <book>
XPath Expression:
/library/book/@*
Result:
Selects all attributes of <book>
elements:
id="1" genre="Programming"
id="2" genre="Programming"
Example 3: Select Nodes Containing Specific Text
XPath Expression:
/library/book/description[contains(text(), 'guide')]
Result:
Selects all <description>
elements containing the word “guide”:
<description>An introductory guide to XML.</description>
<description>A comprehensive guide to JavaScript programming.</description>
Example 4: Count Nodes
XPath Expression:
count(/library/book)
Result:
Counts the number of <book>
elements:
2
Combining XPath Node Types
You can combine multiple node types in a single XPath expression to retrieve specific information.
Example: Get the Title of the Book with ID 1
XPath Expression:
/library/book[@id="1"]/title
Result:
<title>XML Basics</title>
Conclusion
XPath nodes provide the foundation for querying and navigating XML documents. Understanding node types like elements, attributes, and text is essential for writing powerful and efficient XPath expressions.