[xquery-talk] simple map operator

Jens Østergaard Petersen oesterg at gmail.com
Mon Jul 9 03:30:44 PDT 2012


Thank you, Michael,

I see that this is a syntactic categorisation and that the semantics of the definition does not carry as much weight as the order of precedence.

When the order of precedence changes in the next draft, will "/" and "//" become map operators?

Waiting to have syntax and semantics linked up again, in the next edition of your book,

Jens

On Jul 9, 2012, at 11:26 AM, Michael Kay wrote:

> 
> A!B is a RelativePathExpr in the BNF grammar, but so are 29, count($x), and (1 to 10)[3].
> 
> Similarly, the way the grammar works, "a and b" is an instance of OrExpr, and 2+2 is an instance of ValueComp.
> 
> So you need to distinguish the names of productions in the grammar, which affect the precedence of expressions, from the semantics of the operators appearing in those expressions. Generally productions are named after the lowest-precedence operator that is allowed to appear in the expression.
> 
> In fact, since XPath 3.0 was last published, we have decided to change the precedence of the new "!" operator to be lower than the precedence of "/", so this will change.
> 
> As for my book, see the discussion of the terminological problems around the phrase "path expression" on the first page of chapter 9; also see page 523. In common parlance, a "path expression" is an expression that uses the "/" operator, just as an "or expression" is one that uses the "or" operator; but that doesn't correspond to the BNF symbols PathExpr and OrExpr.
> 
> The term "sequence expression" is used as a chapter heading in my book, as a convenient title for the set of constructs I chose to describe in that chapter, but it is not a term that appears in the XPath language specification itself.
> 
> Michael Kay
> Saxonica
> 
> 
> On 09/07/2012 09:43, Jens Østergaard Petersen wrote:
>> Thanks, Michael,
>> 
>> If the simple map operator "does not locate any special nodes within trees, but works on sequences of items you specify by expressions", does that not make it into a sequence expression in the terms of Michael Kay's Reference, Chapter 10 (which also has "/" as a simple mapping expression when it works on atomic values)? Also, the draft defines a path expression as something that "can be used to locate nodes within trees", so I still wonder what the meaning behind this categorisation is.
>> 
>> Cheers,
>> 
>> Jens
>> 
>> On Jul 9, 2012, at 10:01 AM, Michael Seiferle wrote:
>> 
>>> Hi Jens,
>>> 
>>> they are relative, such that each step (E1 ! E2) will serve as the input sequence E'1 for the next operation (E'1 ! E'2), hence:
>>> 
>>>> <foo>
>>>>  <bar>hello</bar>
>>>>  <bar>world</bar>
>>>>  <bar>and</bar>
>>>>  <bar>hello</bar>
>>>>  <bar>universe</bar>
>>>> </foo>/bar ! (: here we locate each <bar /> child of <foo /> :)
>>>>    upper-case(.) !  (: we return a sequence of their text() in upper-case :)
>>>>          substring(.,2,string-length(.)) (: we return a sequence of the upper case text and strip the first character :)
>>> the map operator redefines the context items (inner focus) for each subsequent operation.
>>> 
>>> So it does not locate any special nodes within trees, but works on sequences of items you specify by expressions, for example:
>>>> (1 to 5) ! (. + 1) ! (. * 2)
>>> will work as well and returns (4, 6, 8, 10, 12).
>>> 
>>> Hope this helped to clear things up a little :-).
>>> I guess others on this list will correct me if I got something wrong.
>>> 
>>> Kind regards
>>> 
>>> Michael
>>> 
>>> 
>>> 
>>> Am 09.07.2012 um 09:41 schrieb Jens Østergaard Petersen:
>>> 
>>>> Hi,
>>>> 
>>>> Can anyone explain to me why the XQuery 3.0 simple map operator <http://www.w3.org/TR/xquery-30/#id-map-operator> is a relative path expression? Which nodes within trees does it locate?
>>>> 
>>>> Thanks in advance for any enlightenment,
>>>> 
>>>> Jens
>>>> _______________________________________________
>>>> talk at x-query.com
>>>> http://x-query.com/mailman/listinfo/talk
>> 
>> _______________________________________________
>> talk at x-query.com
>> http://x-query.com/mailman/listinfo/talk
>> 
> 
> 
> _______________________________________________
> talk at x-query.com
> http://x-query.com/mailman/listinfo/talk




More information about the talk mailing list