Re: Fwd: Spurious error on recursive invocation of fn:transform
Martin Honnen <[email protected]> Tue, 24 Nov 2020 21:49:35 +0100
| Newsgroups | gmane.text.xml.saxon.help |
|---|---|
| Organization | Liberty Development |
| Message-ID | <[email protected]> |
On 24.11.2020 15:57, Ihe Onwuka wrote: > > On Tue, Nov 24, 2020 at 7:32 AM Michael Kay <[email protected] > <mailto:[email protected]>> wrote: > Having said that, if you can put together a repro we'll be happy to > look at it. I think it's fairly clear the problem is happening > because the base URI is being lost through the call on > fn:transform(), but whether losing it is a bug or an application > error is something we can only determine if we study the detail. > Here. > > Here is bug.xsl > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform > <http://www.w3.org/1999/XSL/Transform>" > xmlns:fn="http://www.w3.org/2005/xpath-functions > <http://www.w3.org/2005/xpath-functions>" > xmlns:xs="http://www.w3.org/2001/XMLSchema > <http://www.w3.org/2001/XMLSchema>" > xmlns:local="urn:local" > version="3.0" > > > <xsl:mode on-no-match="shallow-copy"/> > <xsl:function name="local:generateNextVersion" as="document-node()"> > <xsl:param name="currentVersion" as="document-node()"/> > <xsl:variable name="isFinalVersion" as="xs:boolean" > select="$currentVersion/* eq '3'"/> > <xsl:sequence select="if ($isFinalVersion) > then $currentVersion > else > local:generateNextVersion(fn:transform(map { > > 'stylesheet-node' : doc(''), > 'source-node' : > $currentVersion > })?output)"/> > </xsl:function> > > <xsl:template match="*"> > <xsl:message select="."/> > <xsl:copy> > <xsl:sequence select="let $customizedResult := fn:transform(map { > > 'stylesheet-node' : doc('bugs2.xsl'), > > 'source-node' : / > })?output > return > local:generateNextVersion($customizedResult)"/> > </xsl:copy> > </xsl:template> > > </xsl:stylesheet> > > Here is bugs2.xsl > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform > <http://www.w3.org/1999/XSL/Transform>" > xmlns:fn="http://www.w3.org/2005/xpath-functions > <http://www.w3.org/2005/xpath-functions>" > version="3.0" > > > <xsl:mode on-no-match="shallow-copy"/> > <xsl:template match="*"> > <xsl:copy> > <xsl:value-of select=". + 1"/> > </xsl:copy> > </xsl:template> > > </xsl:stylesheet> > > Here is input XML > > <bug>1</bug> > > Reproduction instructions. > > Run the transform bug.xsl against input bug.xml and see the xsl:message > output below > > <bug>1</bug> > <bug>2</bug> > > Change bug.xsl to test for $currentVersion eq '4' instead of 3 > > crashes as below > > <bug>1</bug> > <bug>2</bug> > Error in bugs2.xsl: > XTSE0150 The supplied file does not appear to be a stylesheet > Static error in bugs2.xsl: > XTSE0150 The supplied file does not appear to be a stylesheet > Error in bugs2.xsl: > XTSE0150 The supplied file does not appear to be a stylesheet > at function local:generateNextVersion in bug.xsl: > invoked by function call > In template rule with match="*" of bug.xsl > invoked by built-in template rule (shallow-copy) > The supplied file does not appear to be a stylesheet It seems to be a regression in 10.3, with lower 10.x versions it runs through, with 9.9 (9.9.1.8J) as well. _______________________________________________ saxon-help mailing list archived at http://saxon.markmail.org/ [email protected] https://lists.sourceforge.net/lists/listinfo/saxon-help