cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Henry Zongaro (JIRA)" <j...@apache.org>
Subject [jira] Commented: (COCOON-831) XSLTC doesn't work with nodeset functions
Date Fri, 06 Oct 2006 15:25:20 GMT
    [ http://issues.apache.org/jira/browse/COCOON-831?page=comments#action_12440484 ] 
            
Henry Zongaro commented on COCOON-831:
--------------------------------------

Looking at the code in org.apache.cocoon.generation.ProfilerGenerator.generate, which appears
in Nils's traceback, I think it would help me if somebody could try serializing the SAX events
that are sent into this.contentHandler by that code.  For example, change the following code:

        } else {
            // Start the document and set the PROFILER_NS.
            this.contentHandler.startDocument();
            this.contentHandler.startPrefixMapping(PREFIX, PROFILER_NS);

            generateProfilerInfo();

            // End the document.
            this.contentHandler.endPrefixMapping(PREFIX);
            this.contentHandler.endDocument();
        }

to the following, which will write the SAX events serialized as XML to System.err

        } else {
            org.xml.sax.ContentHandler oldHandler = this.contentHandler;

            try {
                this.contentHandler = ((javax.xml.transform.sax.SAXTransformerFactory)
                                                           javax.xml.transform.TransformerFactory.newInstance())
                                                                  .newTransformerHandler();
            } catch (javax.xml.transform.TransformerConfigurationException tce) {
                throw new SAXException(tce.toString());
            }

            java.io.StringWriter sw = new java.io.StringWriter();
            ((javax.xml.transform.sax.TransformerHandler) this.contentHandler)
                  .setResult(new StreamResult(sw));

            // Start the document and set the PROFILER_NS.
            this.contentHandler.startDocument();
            this.contentHandler.startPrefixMapping(PREFIX, PROFILER_NS);

            generateProfilerInfo();

            // End the document.
            this.contentHandler.endPrefixMapping(PREFIX);
            this.contentHandler.endDocument();

            String result = sw.toString();
            System.err.println(result);
            this.contentHandler = oldHandler;
            org.xml.sax.XMLReader rdr = org.xml.sax.helpers.XMLReaderFactory.createXMLReader();
            rdr.setContentHandler(oldHandler);
            try {
                rdr.parse(new org.xml.sax.InputSource(new java.io.StringReader(result)));
            } catch (java.io.IOException ioe) {
                throw new SAXException(ioe.toString());
            }
        }



> XSLTC doesn't work with nodeset functions
> -----------------------------------------
>
>                 Key: COCOON-831
>                 URL: http://issues.apache.org/jira/browse/COCOON-831
>             Project: Cocoon
>          Issue Type: Bug
>          Components: - Components: Sitemap
>    Affects Versions: 2.1, 2.1.8
>         Environment: Operating System: other
> Platform: Other
>            Reporter: Peter Broschwitz
>         Assigned To: Cocoon Developers Team
>            Priority: Critical
>
> we are using cocoon 2.1 with xsltc (version 1.4, xalan 2.5.0) as default
> transformer. Now we want to use the xalan or exslt nodeset function, but
> this is only possible with xalan xslt.
> For testing purposes we tried a simple nodeset transformation from the
> command line. We did that with the same libraries as cocoon, like:
> 	$>java -Djava.endorsed.dirs=<path/to/endorsed/directory>
> org.apache.xalan.xsltc.cmdline.Transform -x node-set-test.xml node_set_test
> That way, the transformation succeeds. (Compilation before suceeded also, of
> course.)
> Trying to process this stylesheet within the cocoon pipeline throws a null
> pointer exception without any entries in the cocoon-log-files. Changing to
> xalan-xslt the transformation works without any problems.
> The stylesheet we used is from the xsltc-documentation:
> ==============================================
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>   xmlns:xsltc-extension="http://xml.apache.org/xalan/xsltc"
>   xmlns:xalan="http://xml.apache.org/xalan"
>   xmlns:exslt="http://exslt.org/common"
>   version="1.0">
>   <xsl:template match="/">
>     <xsl:variable name="rtf">
>       <docelem>
>         <elem1>elem1 gefunden!</elem1>
>         <elem2>elem2 gefunden!</elem2>
>       </docelem>
>     </xsl:variable>
>     <!-- Use nodeset as an XSLTC extension function -->
>     <xsl:value-of select="xsltc-extension:nodeset($rtf)/docelem/elem1"/>
>     <!-- Use nodeset as a Xalan-Java extension function -->
>     <xsl:value-of select="xalan:nodeset($rtf)/docelem/elem1"/>
>     <!-- Use nodeset as an EXSLT extension function -->
>     <xsl:value-of select="exslt:node-set($rtf)/docelem/elem1"/>
>     <!-- Use nodeset as standard function -->
>     <xsl:value-of select="nodeset($rtf)/docelem/elem1"/>
>   </xsl:template>
> </xsl:stylesheet>
> ==============================================
> I should add, that none of these nodeset-functions worked, i tested every one 
> of his one and commented out the others.
> I posted this message already to the cocoon-user-list, and this behaviour could 
> be reproduced by others.
> Peter

-- 
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

        

Mime
View raw message