[
Lists Home |
Date Index |
Thread Index
]
Jonathan Robie wrote:
> I think that optimization of // is a more compelling way to use knowledge
> of complex types. Suppose you have a pattern like this:
>
> //address
>
> Without knowledge of the complex types involved, this requires examination
> of all elements in the document to see if they are "address" elements.
> Looking at the schema for a particular invoice document, it is easy to see
> that the above pattern can only match shipping or billing addresses found
> in customers. The optimizer can rewrite the above pattern as follows:
>
> /customer/billing/address | /customer/shipping/address
>
This might be expressed using a general constraint system
(but using an xpath to name a class) as:
intersectionOf(//address , schema) =
unionOf( /customer/billing/address,
/customer/shipping/address)
The effect is that a (static) analysis using such
straightforward logical devices results in the "rewriting"
of a query/transform, making it _easier_ for the
XSLT programmer, who can then feel free to use "//address"
without worrying about speed, etc. just like why we have
compilers _and_ interpreters, rather than programming in
machine language.
Jonathan
|