On 10 Feb 2014, at 09:59, Ihe Onwuka <[email protected]> wrote:
> On Mon, Jan 27, 2014 at 1:59 PM, Ghislain Fourny <[email protected]> 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]
>
> _______________________________________________
> [email protected]
> http://x-query.com/mailman/listinfo/talk
_______________________________________________
[email protected]
http://x-query.com/mailman/listinfo/talk