Re: [xsl] Pattern "node()" and document nodes

Subject: Re: [xsl] Pattern "node()" and document nodes
From: David Carlisle <davidc@xxxxxxxxx>
Date: Thu, 25 Feb 2010 20:54:18 +0000
On 25/02/2010 19:09, Dimitre Novatchev wrote:
Well, I wanted to simplify things too much :)

However, the spec says this exactly:

" node() matches any node other than an attribute node, namespace
node, or document node." (the 12th bullet).

And David Carlisle provided the precise explanation why this is so.

well actually I gave the precise reason why the pattern node doesn't match in xslt 1 but in xslt2 the situation is a little bit more complicated because in xslt2 a pattern with no explicit axis doesn't default to the child:: axis because they wanted match="foo" to match all foo elements even if the foo element is the root of the tree (which can't happen in xslt 1).

The spec says:

The pattern node() matches all nodes selected by the expression root(.)//(child-or-top::node()), that is, all element, text, comment, and processing instruction nodes, whether or not they have a parent. It does not match attribute or namespace nodes because the expression does not select nodes using the attribute or namespace axes. It does not match document nodes because for backwards compatibility reasons the child-or-top axis does not match a document node.


Current Thread