[xquery-talk] What does [.] do.

Ihe Onwuka ihe.onwuka at gmail.com
Mon Feb 10 01:59:56 PST 2014


On Mon, Jan 27, 2014 at 1:59 PM, Ghislain Fourny <g at 28.io> wrote:
> Hi Ihe,
>
> You are right that it is a filter expression.
>
> However, I think [.] is not very common in "real world" code, except maybe for very precise use cases (like filtering out empty strings, etc). Usually you would put either a position or a boolean predicate inside a filter expression -- not just a context item expression.
>
> What [.] does, if I am not missing anything, is that it only keeps:
> 1. Numerics equal to their position in the left-hand-side sequence
> and
> 2. Non-numerics that have an Effective Boolean Value of true, like non-empty strings, nodes, the true boolean, etc.
>
> Example:
> (1, 2, 4, 3, 5, "", "foo", <a/>, true, false)[.]
>
> returns
>
> 1 (position matches)
> 2 (position matches)
> 5 (position matches)
> foo (EBV = true)
> <a/> (EBV = true)
> true (EBV = true)
>

In Zorba it does - but is that right?

In Saxon 9.3.0.5 it gives

Error on line 1 of *module with no systemId*:
  XPDY0002: The context item for axis step child::true is undefined
The context item for axis step child::true is undefined

In eXist it gives

err:XPDY0002 Undefined context sequence for 'child::{}true' [at line
1, column 34, source: String]



More information about the talk mailing list