I am a new Cocoon developer and new to SAX. I have
developed my first custom Transformer. The transformer
works great when it is followed by an XML Serializer
but it gets a runtime error when it is followed by an
XSL Transformer.
My transformer queries a back-end system which returns
XML. I want to simply replace the original query in my
XML with the resulting XML from the back-end system
(like the SQL Transformer does).
I think my problem is with the parser.parse call. When
I just spit the XML into the output with characters()
I get the XML but with entities instead of angle
brackets and no runtime error. When I use the
parser.parse call I get the runtime error.
I've saved a local copy of the XML from the back-end
and have successfully transformed it with the same
stylesheet, so the stylesheet is okay.
Any help is appreciated. Environment info,
LogTransformer output, full RuntimeException, and
Transformer code snipped are attached below.
Thanks,
Jeff
Environment:
- Windows XP Pro, SP1
- Cocoon 2.1.4
- Tomcat 4.1.27
- MS IE 6.0
LogTransformer output============================
[setup] ---------------------------- [Fri Jun 11
13:50:46 CDT 2004] ----------------------------
[setDocumentLocator]
systemid=file:/C:/apache/build/tomcat-4.1/webapps/cocoon/ddash/resources/sampledqlquery.xml,publicid=
[startDocument]
[startElement] uri=,local=testquery,raw=testquery
[characters]
[startPrefixMapping]
prefix=xdql,uri=http://com.navigatorsystems.cocoon.dctm.xdql
[characters]
[characters]
[characters]
[startElement]
uri=http://com.somehost.cocoon.dctm.xdql,local=execute-query,raw=execute-query
[setDocumentLocator] systemid=null,publicid=null
[startDocument]
[startElement] uri=,local=root,raw=root
[characters]
[startElement] uri=,local=object,raw=object
[ ] 1.
uri=,local=ID,qname=ID,type=CDATA,value=09011f0880003245
[characters]
[startElement] uri=,local=r_object_id,raw=r_object_id
[characters] 09011f0880003245
[endElement] uri=,local=r_object_id,raw=r_object_id
[characters]
[startElement] uri=,local=object_name,raw=object_name
[characters] sub-food.gif
[endElement] uri=,local=object_name,raw=object_name
[characters]
[endElement] uri=,local=object,raw=object
[characters]
[startElement] uri=,local=object,raw=object
[ ] 1.
uri=,local=ID,qname=ID,type=CDATA,value=09011f0880003370
[characters]
[startElement] uri=,local=r_object_id,raw=r_object_id
[characters] 09011f0880003370
[endElement] uri=,local=r_object_id,raw=r_object_id
[characters]
[startElement] uri=,local=object_name,raw=object_name
[characters] sub-food.gif
[endElement] uri=,local=object_name,raw=object_name
[characters]
[endElement] uri=,local=object,raw=object
[characters]
[endElement] uri=,local=root,raw=root
[endDocument]
[endElement]
uri=http://com.somehost.cocoon.dctm.xdql,local=execute-query,raw=execute-query
[endPrefixMapping] prefix=xdql
[characters]
[endElement] uri=,local=testquery,raw=testquery
[endDocument]
RuntimeException==============================
Original Exception: java.lang.RuntimeException
at
org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java:3363)
at
org.apache.xalan.transformer.TransformerHandlerImpl.endDocument(TransformerHandlerImpl.java:427)
at
org.apache.cocoon.xml.AbstractXMLPipe.endDocument(AbstractXMLPipe.java:91)
at
org.apache.cocoon.transformation.TraxTransformer.endDocument(TraxTransformer.java:583)
at
org.apache.cocoon.transformation.LogTransformer.endDocument(LogTransformer.java:181)
at
org.apache.cocoon.xml.AbstractXMLPipe.endDocument(AbstractXMLPipe.java:91)
at
org.apache.cocoon.components.sax.XMLTeePipe.endDocument(XMLTeePipe.java:102)
at
org.apache.cocoon.components.sax.XMLByteStreamInterpreter.parse(XMLByteStreamInterpreter.java:118)
at
org.apache.cocoon.components.sax.XMLByteStreamInterpreter.deserialize(XMLByteStreamInterpreter.java:108)
at
org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.processXMLPipeline(AbstractCachingProcessingPipeline.java:270)
at
org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process(AbstractProcessingPipeline.java:525)
at
org.apache.cocoon.components.treeprocessor.sitemap.SerializeNode.invoke(SerializeNode.java:155)
at
org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:84)
at
org.apache.cocoon.components.treeprocessor.sitemap.PreparableMatchNode.invoke(PreparableMatchNode.java:165)
at
org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:107)
at
org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:162)
at
org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:107)
at
org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:136)
at
org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:371)
at
org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:312)
at
org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:133)
at
org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:84)
at
org.apache.cocoon.components.treeprocessor.sitemap.PreparableMatchNode.invoke(PreparableMatchNode.java:165)
at
org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:107)
at
org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:162)
at
org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:107)
at
org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:136)
at
org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:371)
at
org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:312)
at org.apache.cocoon.Cocoon.process(Cocoon.java:656)
at
org.apache.cocoon.servlet.CocoonServlet.service(CocoonServlet.java:1112)
at
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:601)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
at java.lang.Thread.run(Thread.java:536)
Transformer snippet (from endElement method)==========
text = qry.getXMLString(); //
a chunk of
well-formed XML StringReader stringReader = new
StringReader(text);
InputSource source = new InputSource(stringReader);
parser = (SAXParser)
this.manager.lookup(SAXParser.ROLE);
super.startElement(NAMESPACE, EXECUTE_QUERY_ELEMENT,
EXECUTE_QUERY_ELEMENT, new AttributesImpl());
parser.parse(source, this.xmlConsumer);
super.endElement(NAMESPACE, EXECUTE_QUERY_ELEMENT,
EXECUTE_QUERY_ELEMENT);
__________________________________
Do you Yahoo!?
Friends. Fun. Try the all-new Yahoo! Messenger.
http://messenger.yahoo.com/
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]