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: "Michael Kay michaelkay90@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 15 Mar 2024 17:22:34 -0000
> 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.

The syntax is composable, but operations only work if their operands have the
correct types. You can't subtract a date from a string.

For functions like concat(), the applicable types are defined by the function
signature.

As it happens, in 4.0 we have generalised the function signature of concat()
to accept any number of arguments, each of which can be a sequence containing
any number of items. But earlier releases limit it to 2 or more arguments,
each of which must be a sequence of zero or one items.

Composability in a language basically means that if an operation X B1 Y makes
sense, then you can replace X with any expression that evaluates to X, and you
can replace Y with any expression that evaluates to Y. It doesn't mean that
the operation B1 has to be applicable to any imaginable operands.

Michael Kay
Saxonica

Current Thread