You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by "Henry Zongaro (JIRA)" <xa...@xml.apache.org> on 2005/06/06 21:22:45 UTC
[jira] Commented: (XALANJ-2140) Re-use the same transformer with stylesheet containing xsl:key doesn't work correctly
[ http://issues.apache.org/jira/browse/XALANJ-2140?page=comments#action_12312785 ]
Henry Zongaro commented on XALANJ-2140:
---------------------------------------
It looks like information built for xsl:key from one transformation is contaminating subsequent transformations. I've attached a patch [1] that will clear any xsl:key information gathered at the end of a transformation.
[1] http://issues.apache.org/jira/secure/attachment/12310557/j2140.patch.txt
> Re-use the same transformer with stylesheet containing xsl:key doesn't work correctly
> -------------------------------------------------------------------------------------
>
> Key: XALANJ-2140
> URL: http://issues.apache.org/jira/browse/XALANJ-2140
> Project: XalanJ2
> Type: Bug
> Components: XSLTC
> Versions: 2.6
> Environment: windows jdk 1.4.2_06 xsltc
> Reporter: arn44
> Priority: Critical
> Attachments: j2140.patch.txt
>
> Hello,
> I have a problem with a stylesheet containing a xsl:key.
> I have the impression that the Transformer object guard into memory preceding xml source.
> Here a testcase to reproduce the problem.
> The first transformation and the third should produce the same thing.
> It is true with Xalan interpretive.
> It is not the case in xsltc.
> _________________________
> package test;
> import junit.framework.TestCase;
> import java.io.ByteArrayOutputStream;
> import java.io.File;
> import java.util.Properties;
> import javax.xml.transform.Source;
> import javax.xml.transform.Transformer;
> import javax.xml.transform.TransformerFactory;
> import javax.xml.transform.stream.StreamResult;
> import javax.xml.transform.stream.StreamSource;
> public class XSLTTest extends TestCase {
> public XSLTTest(String arg0) {
> super(arg0);
> }
> public void testKey() throws Exception {
> String key = "javax.xml.transform.TransformerFactory";
> String value = "org.apache.xalan.xsltc.trax.TransformerFactoryImpl";
> Properties props = System.getProperties();
> props.put(key, value);
> System.setProperties(props);
> TransformerFactory tFactory = TransformerFactory.newInstance();
> String xsl = getClass().getResource("test.xsl").getPath();
> //1 transformation
> Source xml = new StreamSource(new File(getClass()
> .getResource("habP1.xml")
> .getPath()));
> ByteArrayOutputStream out = new ByteArrayOutputStream();
> Transformer transformer = tFactory.newTransformer(new StreamSource(xsl));
> transformer.transform(xml, new StreamResult(out));
> System.out.println(out.toString());
> //2 transformation
> xml = new StreamSource(new File(getClass().getResource("habP0.xml")
> .getPath()));
> ByteArrayOutputStream out2 = new ByteArrayOutputStream();
> transformer.transform(xml, new StreamResult(out2));
> System.out.println(out2.toString());
> //3 transformation
> xml = new StreamSource(new File(getClass().getResource("habP1.xml")
> .getPath()));
> ByteArrayOutputStream out3 = new ByteArrayOutputStream();
> transformer.transform(xml, new StreamResult(out3));
> System.out.println(out3.toString());
> assertEquals(out.toString(),out3.toString());
> }
> }
> --------test.xsl----------------------
> <?xml version="1.0"?>
> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> <xsl:output method="text" encoding="ISO-8859-1" indent="yes" />
> <xsl:key name="clef_habilitations" match ="action" use = "nom" />
> <xsl:template match="/">
>
> -<xsl:value-of select="key('clef_habilitations','nom1')/nom" />-
> -<xsl:value-of select="key('clef_habilitations','nom2')/nom" />-
> </xsl:template>
> </xsl:stylesheet>
> ---------habP0.xml------------------------
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <habilitation>
> <action>
> <nom>nom1</nom>
> </action>
> <action>
> <nom>nom2</nom>
> </action>
> <action>
> <nom>nom3</nom>
> </action>
> <action>
> <nom>nom4</nom>
> </action>
>
> </habilitation>
> ------------habP1.xml--------------
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <habilitation>
> <action>
> <nom>nom1</nom>
> </action>
> <action>
> <nom>nom3</nom>
> </action>
> <action>
> <nom>nom4</nom>
> </action>
>
>
> </habilitation>
> ----------System.out---------------------
>
> -nom1-
> --
>
>
>
> -nom1-
> -nom2-
>
>
>
> -nom1-
> -nom3-
>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-dev-help@xml.apache.org