The Context Location Paths

page 44 This template selects the context node, represented by a period. To complete our tour of very simple location paths, we can use the double period .. to select the parent of the context node: xsl:value-of select=.. All these XPath expressions have one thing in common: they dont use element names. As you might have noticed in our Hello World example, you can use element names to select elements that have a particular name: xsl:apply-templates select=greeting In this example, we select all of the greeting elements in the current context and apply the appropriate template to each of them. Turning to our XML sonnet, we can create location paths that specify more than one level in the document hierarchy: xsl:apply-templates select=linesline This example selects all line elements that are contained in any lines elements in the current context. If the current context doesnt have any lines elements, then this expression returns an empty node-set. If the current context has plenty of lines elements, but none of them contain any line elements, this expression also returns an empty node-set.

3.2.3 Relative and Absolute Expressions

The XPath specification talks about two kinds of XPath expressions, relative and absolute. Our previous example is a relative XPath expression because the nodes it specifies depend on the current context. An absolute XPath expression begins with a slash , which tells the XSLT processor to start at the root of the document, regardless of the current context. In other words, you can evaluate an absolute XPath expression from any context node you want, and the results will be the same. Heres an absolute XPath expression: xsl:apply-templates select=sonnetlinesline The good thing about an absolute expression is that you dont have to worry about the context node. Another benefit is that it makes it easy for the XSLT processor to find all nodes that match this expression: what weve said in this expression is that there must be a sonnet element at the root of the document, that element must contain at least one lines element, and that at least one of those lines elements must contain at least one line element. If any of those conditions fail, the XSLT processor can stop looking through the tree and return an empty node-set. A possible disadvantage of using absolute XPath expressions is that it could make your templates more difficult to reuse. Both of these templates process line elements, but the second one is more difficult to reuse: xsl:template match=line ... xsl:template xsl:template match=sonnetlinesline ... xsl:template If the second template has wonderful code for processing line elements, but your document contains line elements that dont match the absolute XPath expression, you cant reuse that template. You should keep that in mind as you design your templates.

3.2.4 Selecting Things Besides Elements with Location Paths

Up until now, weve discussed XPath expressions that used either element names sonnetlinesline or special characters or .. to select elements from an XML