"David Tolpin" <dvd(_at_)davidashen(_dot_)net> wrote in message
news:200312022033(_dot_)hB2KXmfr061117(_at_)adat(_dot_)davidashen(_dot_)net(_dot_)(_dot_)(_dot_)
I think you're not making difference between a match pattern and an
XPath
expression. Match paterns are only a restricted subset of the set of
syntactically correct XPath expressions.
As Wendell pointed out, this distinction is at the heart of XSLT.
Dimitre,
I was commenting on the exact cause due to which node() cannot match the
root
node. I was trying to show that the cause is not that node() is required
to be
a child of something, as another poster had suggested, but is that node()
is a
short way to write child::node().
Yes, what you said was:
Because not specifying an axis is the same as specifying child:: axis.
There is no context in wich the root node resides on the child axis.
Yes.
self::node() in the context of the root element will match the root node.
-----------------------------------------------------------^^^^
In XSLT the verb "to match" is used with match patterns. Because only the
"child" and "attribute" axis are allowed in a match pattern (except within
predicates), the expression:
self:node
cannot *match* anything as it simply is not allowed as a match pattern.
Another problem with this statement is that it uses the term "root element",
but the root node in fact is not an element node.
The expression self::node() in the context of (any) element will never
select the root node of the document.
What *is* true is that the above expression in the context of the root node
(not the root element) will *select* (not match) the root node.
=====
Cheers,
Dimitre Novatchev.
http://fxsl.sourceforge.net/ -- the home of FXSL
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list