With optimization, it all depends....
You won't get any indexing optimizations. Those are done only for
equality predicates, not for contains().
If $map is a global variable, then Saxon-EE will recognize this as an
expression that depends only on global variables, and turn it into a
global variable itself. Or at least it will if you remove the
requirement to create a new copy of the nodes each time it's evaluated:
change it to
<xsl:variable name="topicChapters" select="$map//*[contains(@class, '
bookmap/chapter ')]
union $map//*[contains(@class, ' bookmap/appendix ')]
union $map//*[contains(@class, ' bookmap/preface ')]"/>
unless for some reason you really want a fresh copy to be made each time.
But if $map is local, no such luck. Your best bet then would be to turn
it into a memo function.
Michael Kay
Saxonica
On 05/02/2013 01:43, Steve Fogel wrote:
Hi, all...
I've got a PDF customization template that gets called maybe a couple of dozen
times during the processing of a DITA bookmap. It has the following code in it:
<xsl:variable name="topicChapters">
<xsl:copy-of select="$map//*[contains(@class, ' bookmap/chapter
')]
union $map//*[contains(@class, ' bookmap/appendix ')]
union $map//*[contains(@class, ' bookmap/preface ')]"/>
</xsl:variable>
This code will have to scan a good deal of the XML tree document represents the
book. The
document will not change between each execution of the template.
Will Saxon optimize/cache this and not calculate it each time? I can always set
this variable in a parent template (that executes only once) and pass it into
this one. For readability however, it makes more sense to have this variable
where it is.
Thanks
Steve
Steve Fogel | Information Architect, Oracle Database | 650.506.4914
Oracle Server Technologies Information Development
500 Oracle Parkway | M/S 4op1126 | Redwood Shores, CA 94065
--~------------------------------------------------------------------
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>
--~--
--~------------------------------------------------------------------
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>
--~--