In addition to giving most nodes names , each node in XPath is considered to have a string (that is, text) value. For example, the string value of a comment node is the simple text content of the comment itself. Here's how to get the string value for each of the various types of nodes:
Root nodes The string value is the concatenated (joined) string value of all text nodes.
Element nodes The string value is the concatenated value of all contained text nodes, including the text nodes in descendant elements.
Attribute nodes The string value is the normalized attribute value. (The normalized value of a text string is the same text with leading and trailing whitespace removed, as well as converting multiple consecutive whitespace into a single whitespace characterunless the text string is considered XML character data, CDATA, in which case whitespace is not removed.)
Processing instruction nodes The string value is everything in the processing instruction between the target and the closing ?> . For example, in the processing instruction <?xml-stylesheet type="text/xsl" href="ch01_02.xsl"?> , the string value is "type="text/xsl" href="ch01_02.xsl" .
Comment nodes The string value is the comment's content.
Text nodes The string value is simply the character data in the text node.
Namespace nodes The string value is the namespace URI.
For example, take a look at this short XML document:
<?xml version="1.0"?> <!--Here are the words--> <words copyright = "(c) 2003 Starpowder Inc."> <term>Hello</term> <term>there.</term> </words>
The string value of the root node of this XML document is the joined string value of the document's text nodes. That looks like this (including whitespace) :
So far, then, we've seen how XPath views the nodes in an XML document. But how are those nodes arranged? There are a few different ways of looking at the order of nodes in an XML document, and the first one we should discuss is document order .