Home. 
.

transparent

transparent

transparent

Altova Mailing List Archives


RE: [xsl] Design of inheritance in XML and resolving it with XSLT

From: "Michael Kay" <mike@------------>
To:
Date: 8/2/2006 10:04:00 AM
> Two designs come into mind:
> 
> Design I:
>    <style name="A">
>        <style-props prop-1="x" prop-2="y" prop-3="z"/>
>    </style>
>    <style name="B" parent="A">
>        <style-props prop-1="v" prop-22="yy" prop-33="zz"/>
>    </style>
> 
> Design II:
>    <style name="A">
>        <style-props prop-1="x" prop-2="y" prop-3="z"/>
>        <style name="B">
>            <style-props prop-1="v" prop-22="yy" prop-33="zz"/>
>        </style>
>    </style>
> 
> 
> In both design the style properties should be interpreted as:
> style 'A': prop-1=x, prop-2=y, prop-3=z
> style 'B': prop-1=v, prop-2=y, prop-3=z, prop-22=yy, prop-33=zz
> 
> What do you imagine is a better design?

I would tend to prefer II, but either is quite viable. The advantage of II
is that you can easily search for the nearest attribute using 

(ancestor-or-self::style/@prop-1)[last()]

whereas design I needs a recursive function (or template) to do the
navigation.

> 
> How can I map it most efficiently to absolute styles?
> Creating a large variable for all mapped styles right at the 
> beginning or map them just-in-time when found accepting 
> redundancy in multiple mapping of the same style?

With Saxon you could get the best of both worlds with a memo-function.

Otherwise it essentially depends on the average number of times each style
is "computed". If the average is much less than one, do it on-demand, if
it's much greater than one, do it eagerly; otherwise, you'll have to measure
to see where the cut-off comes.
> 
> In case the only way is the empiric approach to implement 
> both ways and test which is faster in an XSLT engine, any 
> links to such performance harness to reuse (preferable Java)?
> 

Remember that performance measurements will vary from one XSLT processor to
another. With Java, remember that warm-up time can dominate the measurement
- any measurement run should execute for at least 30 seconds to get
reproducible results.

Michael Kay
http://www.saxonica.com/


transparent
Print
Mail
Digg
delicious
Disclaimer
.

These Archives are provided for informational purposes only and have been generated directly from the Altova mailing list archive system and are comprised of the lists set forth on www.altova.com/list/index.html. Therefore, Altova does not warrant or guarantee the accuracy, reliability, completeness, usefulness, non-infringement of intellectual property rights, or quality of any content on the Altova Mailing List Archive(s), regardless of who originates that content. You expressly understand and agree that you bear all risks associated with using or relying on that content. Altova will not be liable or responsible in any way for any content posted including, but not limited to, any errors or omissions in content, or for any losses or damage of any kind incurred as a result of the use of or reliance on any content. This disclaimer and limitation on liability is in addition to the disclaimers and limitations contained in the Website Terms of Use and elsewhere on the site.

.
.

transparent

transparent