|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Is this a Saxon 8.0 bug ?
Hi Jeni,
Thanks a lot -- this is a typical mistake with the use of the idenity template.
Now the solution to Mike Trotman's problem works and looks like this:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:f="http://fxsl.sf.net/"
exclude-result-prefixes="f"
>
<xsl:import href="identity.xsl"/>
<xsl:import href="func-maxDepth.xsl"/>
<xsl:output omit-xml-declaration="yes"/>
<xsl:strip-space elements="*"/>
<!-- This transformation must be applied to:
testMaximum3.xml
-->
<xsl:template match="*[folder]">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates select="folder">
<xsl:sort select="f:maxDepth(.)" data-type="number"
order="descending"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
where the identity rule has been moved in its own file and is imported
first among all other imports.
The reason I wrote this solution was to ask the obvious question about
memoisation. This solution is top-down and will be extremely
inefficient because the maximum depth of subtrees will be
re-calculated many times.
I haven't tried to transform a big and deep-nested tree, but this is
the case where memoisation will be really helpful.
Cheers,
Dimitre.
On Sun, 27 Jun 2004 21:19:23 +0100, Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> wrote:
>
> Hi Dimitre,
>
> > So, my question is if I'm doing something wrong in the top-most
> > (first in this message) transformation, or is this a bug in Saxon 8
> > and if this is a bug, what is the recommended workaround.
>
> You're doing something wrong in the top-most transformation: your
> identity template is overriding the imported template matching
> MyMaxDepth:* in func-maxDepth. Thus the f:apply() function is
> returning a copy of the <MyMaxDepth:MyMaxDepth> element and the
> f:map() function is returning a sequence of those elements. The max()
> function is attempting to get a maximum of their values and giving an
> error because it can't convert an empty string into a number.
>
> You're not getting an error with your second top-most stylesheet
> because it doesn't have this overriding identity template.
>
> Cheers,
>
> Jeni
>
> ---
> Jeni Tennison
> http://www.jenitennison.com/
>
>
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








