Nope, you can't do that. XSP requires a single non-xsp-namespace element under xsp:page to be the root element for the output. A simple workaround is to simply pass the output through an XSLT stylesheet (XSLT transformer). You only need one very simple, fast template:
<xsl:template match="/text">
<xsl:copy-of select="*"/>
</xsl:template>
but you probably already knew that, so perhaps you were looking for a way around it? You could write your own generator, but of course you'd have to do your own JDBC calls. The other way, I suppose, is to hack the XSP generation code (probably just the file org/apache/cocoon/components/language/markup/xsp/java/xsp.xsl) to allow a flag passed as an attribute to the xsp:page element, something like
<xsp:page ignore-root-element="true">
<text>
<esql:connection>
...
and so forth. Then submit your change back to the project :) Looking at the xsp.xsl should provide many insight into how the XSP generation works, so I recommend it anyway.
-Christopher
| "g[R]eK" <[EMAIL PROTECTED]>
09/06/2003 01:59 PM
|
To: "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> cc: Subject: get-xml in ESQL problem |
<. Hi users! .>
I have strange problem with ESQL. I want read xml from database as full xml
document (not fragment). So I decided to use <esql:get-xml>, it works almost
fine. 'Almost' because I must insert the xml from database in some tag, the
root element of xml in database can't be root element in returned document.
:-(
My XSP and log are included below.
This XSP works good:
<?xml version="1.0" encoding="UTF-8"?>
<xsp:page language="java" xmlns:xsp="http://apache.org/xsp" xmlns:esql="http://apache.org/cocoon/SQL/v2">
<text>
<esql:connection>
<esql:pool>warsztat</esql:pool>
<esql:execute-query>
<esql:query>SELECT * FROM artykuly</esql:query>
<esql:results>
<esql:row-results>
<esql:get-xml column="text"/>
</esql:row-results>
</esql:results>
</esql:execute-query>
</esql:connection>
</text>
</xsp:page>
This XSP:
<?xml version="1.0" encoding="UTF-8"?>
<xsp:page language="java" xmlns:xsp="http://apache.org/xsp" xmlns:esql="http://apache.org/cocoon/SQL/v2">
<esql:connection>
<esql:pool>warsztat</esql:pool>
<esql:execute-query>
<esql:query>SELECT * FROM artykuly</esql:query>
<esql:results>
<esql:row-results>
<esql:get-xml column="text"/>
</esql:row-results>
</esql:results>
</esql:execute-query>
</esql:connection>
</xsp:page>
raise exception:
DEBUG (2003-09-06) 19:53.25:402 [core.program-generator] (/cocoon/cvs-local/warsztat/plain/artykuly/get-article.xml) Thread-11/ProgramGeneratorImpl: Got Language Exception
org.apache.cocoon.components.language.LanguageException: Error compiling get_article_template_xml:
ERROR 1 (org\apache\cocoon\www\cvs_local\warsztat\artykuly\get_article_template_xml.java):
...
if (_esql_query != null) {
_esql_queries.push(_esql_query);
}
// start error (lines 306-306) "Unhandled exception type SQLException"
_esql_query = _esql_connection.createQuery(
// end error
String.valueOf(""),
String.valueOf(
""
...
ERROR 2 (org\apache\cocoon\www\cvs_local\warsztat\artykuly\get_article_template_xml.java):
...
if (!_esql_connection.getAutoCommit()) {
_esql_connection.rollback();
}
} catch (Exception _esql_exception_N10012_2) {}
// start error (lines 408-408) "Unhandled exception type SQLException"
throw new RuntimeException("Error executing statement: " + _esql_query.getQueryString() + ": "+_esql_exception_N10012);
// end error
} finally {
_esql_query.cleanUp();
}
...
Line 306, column 0: Unhandled exception type SQLException
Line 408, column 0: Unhandled exception type SQLException
at org.apache.cocoon.components.language.programming.java.JavaLanguage.compile(JavaLanguage.java:236)
at org.apache.cocoon.components.language.programming.CompiledProgrammingLanguage.load(CompiledProgrammingLanguage.java:208)
at org.apache.cocoon.components.language.generator.ProgramGeneratorImpl.loadProgram(ProgramGeneratorImpl.java:427)
at org.apache.cocoon.components.language.generator.ProgramGeneratorImpl.load(ProgramGeneratorImpl.java:339)
at org.apache.cocoon.generation.ServerPagesGenerator.setup(ServerPagesGenerator.java:202)
at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.setupPipeline(AbstractProcessingPipeline.java:381)
at org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.setupPipeline(AbstractCachingProcessingPipeline.java:652)
at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.preparePipeline(AbstractProcessingPipeline.java:508)
at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.prepareInternal(AbstractProcessingPipeline.java:520)
at org.apache.cocoon.components.source.impl.SitemapSource.init(SitemapSource.java:387)
at org.apache.cocoon.components.source.impl.SitemapSource.<init>(SitemapSource.java:248)
at org.apache.cocoon.components.source.impl.SitemapSourceFactory.getSource(SitemapSourceFactory.java:99)
at org.apache.excalibur.source.impl.SourceResolverImpl.resolveURI(SourceResolverImpl.java:247)
at org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:503)
at org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:503)
at org.apache.cocoon.environment.AbstractEnvironment.resolveURI(AbstractEnvironment.java:513)
at org.apache.cocoon.environment.AbstractEnvironment.resolveURI(AbstractEnvironment.java:500)
at org.apache.cocoon.generation.FileGenerator.setup(FileGenerator.java:104)
at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.setupPipeline(AbstractProcessingPipeline.java:381)
at org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.setupPipeline(AbstractCachingProcessingPipeline.java:652)
at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.preparePipeline(AbstractProcessingPipeline.java:508)
at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process(AbstractProcessingPipeline.java:470)
at org.apache.cocoon.components.treeprocessor.sitemap.SerializeNode.invoke(SerializeNode.java:147)
at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:84)
at org.apache.cocoon.components.treeprocessor.sitemap.PreparableMatchNode.invoke(PreparableMatchNode.java:164)
at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:108)
at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:164)
at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:108)
at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:161)
at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:327)
at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:309)
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:164)
at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:108)
at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:164)
at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:108)
at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:161)
at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:327)
at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:309)
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:164)
at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:108)
at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:164)
at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:108)
at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:161)
at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:327)
at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:309)
at org.apache.cocoon.Cocoon.process(Cocoon.java:639)
at org.apache.cocoon.servlet.CocoonServlet.service(CocoonServlet.java:1096)
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:260)
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:2415)
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:170)
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:432)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530)
at java.lang.Thread.run(Thread.java:536)
--
Best regards
<. g[R]eK mailto:[EMAIL PROTECTED] .>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
