[xquery-talk] Using a string parameter as path expression

Michael Kay mhk at mhk.me.uk
Mon Feb 14 18:52:49 PST 2005


You can't do this in standard XQuery. The ability to take a path expression
and interpret it at run-time is provided in some products by a vendor
extension function: in Saxon this is called saxon:evaluate(). The precise
rules for how it works (specifically, the rules for establishing the static
and dynamic context of the expression) will vary from one product to
another. You need to take particular care if the path expression contains
namespace prefixes.
 
You would typically write
 
return doc("sample.xml")/saxon:evaluate($path)
 
Michael Kay
http://www.saxonica.com/


  _____  

From: talk-bounces at xquery.com [mailto:talk-bounces at xquery.com] On Behalf Of
Mathias Seifert
Sent: 14 February 2005 18:31
To: talk at xquery.com
Subject: [xquery-talk] Using a string parameter as path expression



Hello, 

I have a question for a rather simple task which I couldn't find any
solution to. What I want to have is a function that takes an xpath as string
parameter and then evaluates this xpath on a document. This could look
something like the following: 

declare function local:evalPath($path as xs:string) as node() 
{ 
        let $a := doc("sample.xml")/$path 
        return $a 
} 

Unfortunately I couldn't get this simple function to work, so my question
now is: Is it possible with xquery at all to have a variable as the path
expression of a for/let clause? And if so, how? 

Thanks in advance. 

Mathias


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://xquery.com/pipermail/talk/attachments/20050214/9edfe639/attachment.htm


More information about the talk mailing list