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: "Dimitre Novatchev dnovatchev@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 15 Mar 2024 16:23:42 -0000
> Then, per the "composable language" capability I will embed that for-loop
inside the call to concat:
>
>   concat(for $i in //binary-value return $i)
>
>   But that doesn't work. Is XPath truly a composable language? If so, why
doesn't my XPath work?

This is because of how fn:concat is defined in XPath 3.1 (and
prior versions) - a call to it must specify at least 2 arguments, each with
cardinality of 1.

In XPath 4.0 this definition is extended and the following expression is
evaluated successfully:

   concat(for $i in 1 to 3 return $i)

and produces the expected result using BaseX v.11:

123

Thanks,
Dimitre

On Fri, Mar 15, 2024 at 9:11b/AM Roger L Costello costello@xxxxxxxxx <
xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> 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(...)
>
> and then inside the parentheses the entire XPath functionality is
> available to me. Right?
>
> Well, here is a fine XPath expression:
>
> for $i in //binary-value return $i
>
> Then, per the "composable language" capability I will embed that for-loop
> inside the call to concat:
>
> concat(for $i in //binary-value return $i)
>
> But that doesn't work. Is XPath truly a composable language? If so, why
> doesn't my XPath work?
>
> /Roger
>
>
>

--
Cheers,
Dimitre Novatchev
---------------------------------------
Truly great madness cannot be achieved without significant intelligence.
---------------------------------------
To invent, you need a good imagination and a pile of junk
-------------------------------------
Never fight an inanimate object
-------------------------------------
To avoid situations in which you might make mistakes may be the
biggest mistake of all
------------------------------------
Quality means doing it right when no one is looking.
-------------------------------------
You've achieved success in your field when you don't know whether what
you're doing is work or play
-------------------------------------
To achieve the impossible dream, try going to sleep.
-------------------------------------
Facts do not cease to exist because they are ignored.
-------------------------------------
Typing monkeys will write all Shakespeare's works in 200yrs.Will they write
all patents, too? :)
-------------------------------------
Sanity is madness put to good use.
-------------------------------------
I finally figured out the only reason to be alive is to enjoy it.

Current Thread