Subject: Re: [xsl] speed optimization|
From: "J.Pietschmann" <j3322ptm@xxxxxxxx>
Date: Mon, 27 Jan 2003 02:12:52 +0100
similarly a processor has to cache the result of document() (almost certainly, to get the node identity semantics right) so explictly saving it in a variable is unlikely to make much difference (but does make the code clearer)
Xalan had a different approach: it accessed the URL each time document() or a variable with a node set containing a document() was used. E.g. if you had <xsl:variable name="foo" select="document('foo.xml')/*"/> foo.xml would be accessed every time $foo was seen in an expression.
Even document('') was accessed and *parsed* every time. This made the performance drop through the bottom for certain use cases, in particular the date formatting using an XML structure as lookup table for month number to month name conversions.
Interestingly, the generate-id() identity was fulfilled, whether by caching the result from the first read and throwing away content from further accesses or by other means I don't know.
This was filed as a bug soon after 2.0 came out, and was still present in all 2.3 releases. I haven't checked whether it has been fixed in 2.4.x.