Joerg, Thanks for the reply!
> > I am trying to use the document() function to "import" some data > > from an external XML file. > > > > I.e.: <xsl:value-of select="document('somefile.xml')/somenode"/> > > > > At the same time, I am using the catalog to resolve the DTD. However, > > I noticed that when using the document() function, the catalog > > resolver isn't used, > > That's true, the document() function does not use the catalogue > resolver. > > > so I actually have to hard code the location of the DTD directly > > into somefile.xml. > > But I do not understand how this should be related. You wrote above > you are already "using the catalog to resolve the DTD". Why you are > forced to hard code the path to the DTD? In 'somefile.xml', I found that I have to be able to point to the DTD as follows: <!DOCTYPE somenode PUBLIC "-//Some DTD//EN" "some/hardcoded/path/somedtd.dtd"> The reason I have to hardcode the path is because the DTD is not located otherwise. Really, I have two choices: (1) to completely leave out the DTD, or (2) to hard-code it. I don't like either choice. I want to have the DTD, but I don't want to have to hard-code it, either. What happens when I don't hard-code the DTD is that the system generates a TransformerException (see extract of core.log below) and won't return any value (or maybe returns "null", which for all practical purposes is the same thing in this case). In other words, <xsl:value-of select="document('somefile.xml')/somenode"/> returns null, when it should be returning some value. > Not that long ago someone else suggested to support the catalogues > in the document function, but it was not implemented since then. > I know that Ant supports it. Maybe someone has only to provide a > patch :) Is that a hint? ;-) If so, tell me where to look, and I'll see if I can make the time to look into that some day. Thanks! Dave Generated log (edited to "fit" into and email for readability and also to hide the actual local paths): DEBUG (2004-04-20) 05:39.11:119 [core.xslt-processor] (/ns/contract) PoolThread-4/XSLTProcessorImpl: resolve(href = some/href/somefile.xml, base = file:/some/base); resolver = [EMAIL PROTECTED] DEBUG (2004-04-20) 05:39.11:129 [core.xslt-processor] (/ns/contract) PoolThread-4/XSLTProcessorImpl: xslSource = [EMAIL PROTECTED], system id = file:/some/full/path/commission.xml WARN (2004-04-20) 05:39.11:399 [core.xslt-processor] (/ns/contract) PoolThread-4/TraxErrorHandler: Error in TraxTransformer: file:/some/application/path/contract/contract.xslt; Line 74; Column 99; ; SystemID: file:/some/application/path/contract/contract.xslt; Line#: 74; Column#: 99 javax.xml.transform.TransformerException: Can not load requested doc: location/of/dtd/somefile.dtd (The system cannot find the file specified) at org.apache.xalan.templates.FuncDocument.warn(FuncDocument.java:456) at org.apache.xalan.templates.FuncDocument.getDoc(FuncDocument.java:393) at org.apache.xalan.templates.FuncDocument.execute(FuncDocument.java:229) at org.apache.xpath.axes.FilterExprIteratorSimple.executeFilterExpr(FilterExprI teratorSimple.java:157) at org.apache.xpath.axes.FilterExprWalker.setRoot(FilterExprWalker.java:166) at org.apache.xpath.axes.WalkingIterator.setRoot(WalkingIterator.java:191) at org.apache.xpath.axes.NodeSequence.setRoot(NodeSequence.java:250) at org.apache.xpath.axes.LocPathIterator.execute(LocPathIterator.java:249) at org.apache.xpath.XPath.execute(XPath.java:306) at org.apache.xalan.templates.ElemVariable.getValue(ElemVariable.java:316) at org.apache.xalan.templates.ElemVariable.execute(ElemVariable.java:284) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Transform erImpl.java:2362) at org.apache.xalan.templates.ElemChoose.execute(ElemChoose.java:165) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApp lyTemplates.java:429) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.jav a:215) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Transform erImpl.java:2362) at org.apache.xalan.templates.ElemCopy.execute(ElemCopy.java:153) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApp lyTemplates.java:429) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.jav a:215) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Transform erImpl.java:2362) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java: 716) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApp lyTemplates.java:429) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.jav a:215) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Transform erImpl.java:2362) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java: 716) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApp lyTemplates.java:429) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.jav a:215) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Transform erImpl.java:2362) at org.apache.xalan.templates.ElemCopy.execute(ElemCopy.java:153) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApp lyTemplates.java:429) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.jav a:215) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Transform erImpl.java:2362) at org.apache.xalan.templates.ElemCopy.execute(ElemCopy.java:153) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApp lyTemplates.java:429) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.jav a:215) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Transform erImpl.java:2362) at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(Transformer Impl.java:2228) at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.j ava:1306) at org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java:3376) at org.apache.xalan.transformer.TransformerHandlerImpl.endDocument(TransformerH andlerImpl.java:427) at org.apache.cocoon.xml.AbstractXMLPipe.endDocument(AbstractXMLPipe.java:91) at org.apache.cocoon.transformation.TraxTransformer.endDocument(TraxTransformer .java:579) at org.apache.cocoon.xml.AbstractXMLPipe.endDocument(AbstractXMLPipe.java:91) 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(XMLByteStrea mInterpreter.java:120) at org.apache.cocoon.components.sax.XMLByteStreamInterpreter.deserialize(XMLByt eStreamInterpreter.java:110) at org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline .processXMLPipeline(AbstractCachingProcessingPipeline.java:270) at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process(Abs tractProcessingPipeline.java:501) at org.apache.cocoon.components.treeprocessor.sitemap.SerializeNode.invoke(Seri alizeNode.java:147) at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invo keNodes(AbstractParentProcessingNode.java:84) at org.apache.cocoon.components.treeprocessor.sitemap.PreparableMatchNode.invok e(PreparableMatchNode.java:164) at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invo keNodes(AbstractParentProcessingNode.java:108) at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(Pipel ineNode.java:163) at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invo keNodes(AbstractParentProcessingNode.java:108) at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(Pipe linesNode.java:152) at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcess or.java:354) at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcess or.java:307) at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNod e.java:133) at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invo keNodes(AbstractParentProcessingNode.java:84) at org.apache.cocoon.components.treeprocessor.sitemap.PreparableMatchNode.invok e(PreparableMatchNode.java:164) at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invo keNodes(AbstractParentProcessingNode.java:108) at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(Pipel ineNode.java:163) at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invo keNodes(AbstractParentProcessingNode.java:108) at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(Pipe linesNode.java:152) at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcess or.java:354) at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcess or.java:307) 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.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:360) at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandl er.java:294) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:558) at org.mortbay.http.HttpContext.handle(HttpContext.java:1714) at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext .java:507) at org.mortbay.http.HttpContext.handle(HttpContext.java:1664) at org.mortbay.http.HttpServer.service(HttpServer.java:863) at org.mortbay.http.HttpConnection.service(HttpConnection.java:775) at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:939) at org.mortbay.http.HttpConnection.handle(HttpConnection.java:792) at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:201) at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:289) at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:455) --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]