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

Michael Kay mike at saxonica.com
Mon Feb 10 03:14:09 PST 2014


On 10 Feb 2014, at 09:59, Ihe Onwuka <ihe.onwuka at gmail.com> wrote:

> 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?

It's right if there is a context item, which is context-dependent....

For true and false in this example, you probably meant true() and false().

Michael Kay
Saxoinca

> 
> 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]
> 
> _______________________________________________
> talk at x-query.com
> http://x-query.com/mailman/listinfo/talk




More information about the talk mailing list