RE: [xsl] [XPath 2.0] Two XPath expressions to the same node, yielding different results with "instance of text()"

Subject: RE: [xsl] [XPath 2.0] Two XPath expressions to the same node, yielding different results with "instance of text()"
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 7 Oct 2009 22:09:23 +0100
> Why does this XPath expression return true:
> 
> /FitnessCenter/Member[1]/MembershipFee/node() instance of text()
> 
> whereas this returns false:
> 
> //MembershipFee[1]/node() instance of text()
> 
> Both reference the node within the first MembershipFee 
> element; so I would think they should both return true.

Probably because the first expression selects the singleton text child of a
single MembershipFee element, whereas the second expression selects the
children of every MembershipFee element that is the first child of its
parent. Try "instance of text()*" to verify this.

//X[1] is a common error when (//X)[1] is intended. Or it may be better to
write /descendant::X[1] for clarity.

Regards,

Michael Kay
http://www.saxonica.com/
http://twitter.com/michaelhkay 

Current Thread