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

Subject: Re: [xsl] 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 14:11:51 -0000
On 15/03/2024 14:53, Roger L Costello costello@xxxxxxxxx wrote:
> I have an XML document containing an arbitrary number of <binary-value>
elements:
>
> <Document>
>      <binary-value>0100</binary-value>
>      <binary-value>11</binary-value>
>      <binary-value>1010001</binary-value>
>      ...
> </Document>
>
> I want an XPath expression which concatenates the binary values into one
long string:
>
> 0100111010001...
>
> I thought this would work:
>
> concat(for $i in //binary-value return $i)
>
> but that gives an error, "Cannot find a 1-argument function named concat"
>
> What is the correct XPath, please?
>
string-join was already suggested but you could also pretend to be
sophisticated in higher-order functions and XPath 3.1 operators like ||
doing e.g.

 B B B B B B B B B B  fold-left(//binary-value, '', function($a, $b) { $a ||
$b })


I wonder whether XPath 4 allows you to use concat in a more
sophisticated way then predefining the number of args with e.g.

 B B B B B B B  apply(concat(?,?,?), array { //binary-value })

would work for your posted input sample.

Current Thread