You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cocoon.apache.org by Tobia Conforto <to...@linux.it> on 2007/11/07 12:31:56 UTC
document() and xsltc
I think I stumbled upon a bug in the XSLTC transfomer regarding the
document() function. Here is a minimal example:
--- sitemap fragment: --------------------------------------
<match pattern="test">
<generate src="foo.xml"/>
<transform src="foo-bar.xsl" type="xsltc"/>
<serialize type="xml"/>
</match>
--- foo.xml: -----------------------------------------------
<foo/>
--- bar.xml: -----------------------------------------------
<bar/>
--- foo-bar.xsl: -------------------------------------------
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="foo" select="/"/>
<xsl:variable name="bar" select="document('bar.xml')"/>
<xsl:template match="/">
<output>
<foo><xsl:value-of select="name($foo/*)"/></foo>
<bar><xsl:value-of select="name($bar/*)"/></bar>
</output>
</xsl:template>
</xsl:stylesheet>
------------------------------------------------------------
The output I would expect, which is also the output I get using the
default xslt (Xalan-J interpretive) transformer is:
<output>
<foo>foo</foo>
<bar>bar</bar>
</output>
But if I use the xsltc (Xalan-J compiled) transformer the output is:
<output>
<foo>bar</foo>
<bar>bar</bar>
</output>
It would appear that the document() call overwrites the source document
of the transformation, including all existing references to it.
Is this a known bug? Can anybody confirm/reproduce it?
Tobia
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org
Re: document() and xsltc
Posted by Alexander Daniel <al...@gmx.at>.
This is a known Xalan-J XSLTC issue [1]. Instead of using the XSLT
document() function you could use the Include transformer [2] which
supports caching. We use it successfully in our project.
Alex
[1] http://issues.apache.org/jira/browse/XALANJ-1928
[2] http://cocoon.apache.org/2.1/apidocs/org/apache/cocoon/
transformation/IncludeTransformer.html
[3] http://cocoon.apache.org/2.2/core-modules/core/2.2/1048_1_1.html
On 07.11.2007, at 12:31, Tobia Conforto wrote:
> I think I stumbled upon a bug in the XSLTC transfomer regarding the
> document() function. Here is a minimal example:
>
>
> --- sitemap fragment: --------------------------------------
>
> <match pattern="test">
> <generate src="foo.xml"/>
> <transform src="foo-bar.xsl" type="xsltc"/>
> <serialize type="xml"/>
> </match>
>
> --- foo.xml: -----------------------------------------------
>
> <foo/>
>
> --- bar.xml: -----------------------------------------------
>
> <bar/>
>
> --- foo-bar.xsl: -------------------------------------------
>
> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/
> Transform">
>
> <xsl:variable name="foo" select="/"/>
> <xsl:variable name="bar" select="document('bar.xml')"/>
>
> <xsl:template match="/">
> <output>
> <foo><xsl:value-of select="name($foo/*)"/></foo>
> <bar><xsl:value-of select="name($bar/*)"/></bar>
> </output>
> </xsl:template>
>
> </xsl:stylesheet>
>
> ------------------------------------------------------------
>
>
> The output I would expect, which is also the output I get using the
> default xslt (Xalan-J interpretive) transformer is:
>
> <output>
> <foo>foo</foo>
> <bar>bar</bar>
> </output>
>
> But if I use the xsltc (Xalan-J compiled) transformer the output is:
>
> <output>
> <foo>bar</foo>
> <bar>bar</bar>
> </output>
>
> It would appear that the document() call overwrites the source
> document
> of the transformation, including all existing references to it.
>
> Is this a known bug? Can anybody confirm/reproduce it?
>
>
> Tobia
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org