RE: ORA-XQ-409-B: Introduce identity-less operations as a feature

In the general case I think it would be very difficult to define a
workable semantics for path expressions and other node operations that
didn't rely on node identity.

I have always felt, however, that there might be room for relaxing the
identity rules on node creation: something along the lines of "if an
expression is evaluated more than once, and returns a sequence of nodes
on each occasion, and if the sequence of nodes returned on one occasion
is deep equal to the sequence returned on another occasion, then if the
weak-identity option is set there is no guarantee that the nodes
returned on the two occasions will be distinct."

This basically allows you to move node-creation expressions out of a
loop, in the same way as you can move any other expression.  

Michael Kay

> -----Original Message-----
> From: public-qt-comments-request@w3.org 
> [mailto:public-qt-comments-request@w3.org] On Behalf Of Stephen Buxton
> Sent: 20 February 2004 18:22
> To: public-qt-comments@w3.org
> Subject: ORA-XQ-409-B: Introduce identity-less operations as a feature
> 
> 
> 
> SECTION 2.6: Optional Features
> 
>   Today XQuery requires node identities to be preserved in 
> the language quite strongly. All nodes that are from an 
> external source or created in the language require node 
> identities to be preserved. This is a strict requirement that 
> is not necessary for a large number of applications that need 
> to deal only with the values contained in the nodes rather 
> than the nodes' identity. 
> 
>  This is also a great burden for implementations that can 
> otherwise use streaming mechanisms for XML processing.
>  
>  This is also a problem for implementations that choose to 
> push down the query to be evaluated in native systems like 
> relational databases or other non-XML value based systems.
> 
> Suggestion:
>  Include a static context flag that specifies whether node 
> identities need to be preserved. If the option is true, then 
> no node based operations such as "is", "<<" , ">>" etc.. 
> should be allowed. Further this could also restrict 
> non-forward axes like parent(), sibling(), root(), etc.. 
> 
>  
> 
> - Steve B.
> 

Received on Saturday, 21 February 2004 04:38:09 UTC