[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: XPath behaviour

Subject: RE: XPath behaviour
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 28 Dec 2006 22:54:12 -0000
RE:  XPath behaviour
XPath 2.0 allows a parenthesized expression to appear as a step in a path
expression; XPath 1.0 does not.

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

> -----Original Message-----
> From: Lars Rvnnbdck [mailto:lars@xxxxxxxxxxx]
> Sent: 28 December 2006 02:11
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject:  XPath behaviour
>
> 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.
>
> From this I gather that it doesn't like the parenthesis.
> However, if I remove them I do not get the desired behaviour.
> Instead, three days are matched and none of them correctly.
>
> How am I supposed to group the union in such a way that I can
> apply the subset rules (within brackets) to it? It would also
> be interesting to know why this works in the query editor,
> but none of the processors.
>
> Any help is appreciated,
> Regards,
> Lars Rvnnbdck

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.