xsl-list
[Top] [All Lists]

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

2006-08-02 03:04:10

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/


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>