[xquery-talk] Using functions in replacement argument withfn:replace()?

David Sewell dsewell at virginia.edu
Thu Jan 12 13:24:56 PST 2006


On Thu, 12 Jan 2006, Michael Kay wrote:

> > and this produces a run-time error:
> >
> >    replace("abc", ".", upper-case($0))
>
> It should be a static error: $0 is not a valid XPath expression.

My mistake, I mean to say "static error".

> It can be any expression evaluating to a string.
>
> I think that what you haven't grasped is that the argument is evaluated
> first, and then any $0 in the resulting string is interpreted. So you could
> for example do
>
> replace("123", "2", concat("[$", 1 + 2 - 3, "]"))
>
> and the result would be "1[2]3".
>
> Your examples suggest that you're thinking of $0 as an XPath expression that
> can be evaluated in its own right, that isn't the case.

Thanks (to Martin also), that clarifies things.

-- 
David Sewell, Editorial and Technical Manager
Electronic Imprint, The University of Virginia Press
PO Box 400318, Charlottesville, VA 22904-4318 USA
Courier: 310 Old Ivy Way, Suite 302, Charlottesville VA 22903
Email: dsewell at virginia.edu   Tel: +1 434 924 9973
Web: http://www.ei.virginia.edu/


More information about the talk mailing list