[xquery-talk] filling in an xquery

Michael Kay mhk at mhk.me.uk
Mon Sep 27 19:34:59 PDT 2004

If the only variables are simple strings or numbers then you can declare
external variables (parameters) to the query and supply values for the
parameters at run-time.

You can also use this technique for some simple substitution of names in
path expressions, using the syntax *[name()=$param].

XSLT users with complex applications often use meta-stylesheets, which
transform the stylesheet before executing it. This is one of the main
benefits you get from using an XML syntax, and it can't really be done in
the same way with XQuery - the XML syntax, XQueryX, is far too low-level to
make this a realistic option.

Another technique is to use an evaluate() extension function which
constructs an (XPath/XQuery) expression on the fly from a string supplied at
run-time. Saxon is one of the products that offers such an extension.

Michael Kay

> -----Original Message-----
> From: talk-bounces at xquery.com 
> [mailto:talk-bounces at xquery.com] On Behalf Of David Sinclair
> Sent: 27 September 2004 17:14
> To: talk at xquery.com
> Subject: [xquery-talk] filling in an xquery
> Hi,
> I have found myself writing xqueries that need parts to vary 
> dynamically 
> at runtime based on user input.    For example, I might want 
> to use an 
> xquery to drive a user defined search of a library for all the books 
> containing a certain author, where the user types in this 
> surname in a 
> search field.
> The approach I have been taking is to write the xquery, and 
> then where I 
> want it to vary putting a JByte tag (see 
> http://javaby.sourceforge.net/).  So something like this:
>     for $book in input()/books
>     where $book/author/surname = {v:surname}
>         .. format the output I want ...
> And then getting JByte to fill in the {v:surname} (and any other 
> variable bits) for me.  This works,  but I think I would be more 
> comfortable with it if the xquery syntax and the JByte syntax 
> were not 
> so easy to confuse.  This must be quite a common nut, and was just 
> wondering if anyone had come up with a good way of cracking it?
> David Sinclair.
> _______________________________________________
> talk at xquery.com
> http://xquery.com/mailman/listinfo/talk

More information about the talk mailing list