[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