[xquery-talk] filling in an xquery

David Sinclair dsinclair at teleflex.com
Tue Sep 28 11:18:08 PDT 2004

Thanks to everyone who replied to my question.  I am using Tamino and 
just had a quick first trawl through their java API looking for a way to 
set variables.  I didnt see anything, but shall have a more detailed 
look when I have time. This approach sounds much better than what I have 
been doing, especially since all the substitutions currently done are 
simple strings.

David Sinclair.

Michael Kay wrote:

>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
>>I have found myself writing xqueries that need parts to vary 
>>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
>talk at xquery.com

More information about the talk mailing list