Subject: Re: [xsl] Is this a Saxon 8.0 bug ? From: Dimtre Novatchev <dnovatchev@xxxxxxxxx> Date: Mon, 28 Jun 2004 07:50:48 +1000 |
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/ > >
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Is this a Saxon 8.0 bug ?, Jeni Tennison | Thread | RE: [xsl] Is this a Saxon 8.0 bug ?, Michael Kay |
Re: [xsl] stylesheet params - stati, J.Pietschmann | Date | RE: [xsl] Is this a Saxon 8.0 bug ?, Michael Kay |
Month |