[xsl] XPath behaviour

Subject: [xsl] XPath behaviour
From: Lars Rönnbäck <lars@xxxxxxxxxxx>
Date: Thu, 28 Dec 2006 03:10:35 +0100 (CET)
Dear list,

I am having a problem with an XPath expression. The program I am using is
Stylus Studio 2007 and I am building an XSLT 1.0 stylesheet. Within the
program you have access to an XPath Query Editor. I used that together
with an XML file to build the following:

/calendar/year/month/day[@month = 3 and index =
21]/(.|following::day)[@phase = 2][1]/(.|following::day)[@weekday = 6][1]

This path will correctly find easter when I execute it in the query
editor. However, if I create a simple stylesheet that uses the path in a
<xsl:value-of select="..."> I get a compilation error.

Using the built-in processor I get the message:
Testing.xsl (5, 2): Expected node test in value-of

Using MSXML6 I get the message:
NodeTest expected here.

/calendar/year/month/day[@month = 3 and index =
21]/-->(<--.|following::day)[@phase = 2][1]/(.|following::day)[@weekday =
6][1]

Using Saxon 6.5.5 I get the message:
com.icl.saxon.expr.XPathException: Error in expression
/calendar/year/month/day[@month = 3 and index =
21]/(.|following::day)[@phase = 2][1]/(.|following::day)[@weekday = 6][1]:
Unexpected token [(] in path expression

Using the .NET XslTransform I get the message:
System.Xml.Xsl.XsltException: '/calendar/year/month/day[@month = 3 and
index = 21]/(.|following::day)[@phase = 2][1]/(.|following::day)[@weekday
= 6][1]' is an invalid XPath expression. --->
System.Xml.XPath.XPathException: Expression must evaluate to a node-set.

Current Thread