RE: [xsl] Beginning an XPath expression with a function call?

Subject: RE: [xsl] Beginning an XPath expression with a function call?
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Fri, 7 Mar 2003 18:04:53 -0000
The expression substring-before(//foo/foo2, '-') is a valid XPath 1.0
expression.

In XPath 2.0 it is valid only if //foo/foo2 returns a single node. The
Saxon error message implies that it is selecting more than one node. If
you want to select only the first node, use
substring-before((//foo/foo2)[1], '-'). If you want to process all the
nodes (in XPath 2.0) use

for $x in //foo/foo2 return substring-before($x, '-')

Michael Kay
Software AG
home: Michael.H.Kay@xxxxxxxxxxxx
work: Michael.Kay@xxxxxxxxxxxxxx 

> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx 
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of 
> Monier, Yves
> Sent: 07 March 2003 16:46
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Beginning an XPath expression with a function call?
> 
> 
> Hello,
> 
> Given an XPath expression (for example //foo/foo2) that works 
> for a given xml, I would like to use the substring-before 
> function, to keep only the characters in //foo/foo2 before 
> '-'. The XPath would then become substring-before(//foo/foo2, '-')
> 
> It seems that both XPath 1.0 specs, MSXML 4, Saxon 7.4 and 
> XalanJ 2.5 refuse such construction (e.g. having a function 
> call as root of an XPath expression). Note that it works with 
> Xalan C++ 1.4. Should it, or not, regarding the specs?
> 
> Do you know if there is a simple "legal" XPath-only-based 
> solution to achieve the same result?
> 
> Many thanks,
> 
> Yves
> 
> PS:
> For MSXML 4 I use an XMLDOMDocument + the selectSingleNode function. 
> For Saxon and XalanJ I wrote programs derived from their 
> respective XPathExample and ApplyXPath samples. 
> For XalanC I wrote a program derived from its XPathWrapper sample).
> 
> Saxon error is "A sequence of more than one item is not 
> allowed here". XalanJ error is "Can not convert #STRING to a 
> NodeList!".
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> 


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread