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:20:49 -0000
On 15/03/2024 15:12, Martin Honnen martin.honnen@xxxxxx wrote:
>
>
> 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?
>>
> 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.
>

concat can be used with


 B let $bv := //binary-value
return
apply(function-lookup(QName('http://www.w3.org/2005/xpath-functions',
'concat'), count($bv)), array { $bv })

Current Thread