Re: [xsl] Re: Seek an XPath expression which concatenates an arbitrary number of strings

Subject: Re: [xsl] Re: Seek an XPath expression which concatenates an arbitrary number of strings
From: "Martin Honnen martin.honnen@xxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 15 Mar 2024 16:18:24 -0000
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

Current Thread