On 15/03/2024 17:11, Roger L Costello costello@xxxxxxxxx wrote:
> Hi Folks,
>
> Thank you for your replies. The string-join solution works fine.
>
> But, but, but, ...
>
> Why doesn't my XPath work: concat(for $i in //binary-value return $i)
>
> I thought that I was simply employing XPath's "composable language"
capability.
>
> The XPath specification says this:
>
> XPath is a composable language
>
> What does that mean?
>
> It means that every operator and language construct allows any XPath
expression to appear as its operand.
>
> So, what that means to me is that I can call the concat function:
>
> concat(...)
The concat function is not defined as taking a sequence of values,
instead its definition in
https://www.w3.org/TR/xpath-functions-31/#func-concat says
The fn:concat function is specified to allow two or more arguments,
which are concatenated together. This is the only function specified in
this document that allows a variable number of arguments. This
capability is retained for compatibility with [XML Path Language (XPath)
Version 1.0].
Contrast that with string-join taking a sequence i.e.
https://www.w3.org/TR/xpath-functions-31/#func-string-join declaring
fn:string-join($arg1 as xs:anyAtomicType*) as xs:string
fn:string-join($arg1 as xs:anyAtomicType*, $arg2 as xs:string) as xs:string
|