Posted by
jpereza on
Jan 11, 2010; 5:02pm
URL: https://discuss.orbeon.com/XPointer-and-attributes-with-namespace-tp1011376.html
Hello,
I've got an error in a form using an xpointer expression on a XML with namespaces in attributes:
This is the original XML document (simplified):
<?xml version="1.0" encoding="ISO-8859-1"?>
<configuration xmlns:cfg="
http://rigel/configuration/XMLInclude"> <configurations>
<cfg:include url="rel:App/ConfigurationService.xml#/configuration/authenticationTypes" />
<cfg:include url="variableRel:App/cfg-LogonComponentsDefinition.xml#/configuration/components"/>
<cfg:include url="variableRel:App/cfg-policies.xml#/configuration/ldapServer/repositorytype" />
<manager>
<configuration cfg:include-url="variableRel:App/cfg-manager.xml" />
</manager>
<repository>
<configuration cfg:include-url="variableRel:App/cfg-repository.xml" />
</repository>
</configurations>
</configuration>
And this is the XPointer expression used in a XPL:
#conf-service#xpointer(/configuration/configurations)
This is the resulting XML document:
<configurations>
<cfg:include url="rel:App/ConfigurationService.xml#/configuration/authenticationTypes"
xmlns:cfg="
http://rigel/configuration/XMLInclude" />
<cfg:include url="variableRel:App/cfg-LogonComponentsDefinition.xml#/configuration/components"
xmlns:cfg="
http://rigel/configuration/XMLInclude" />
<cfg:include url="variableRel:App/cfg-policies.xml#/configuration/ldapServer/repositorytype"
xmlns:cfg="
http://rigel/configuration/XMLInclude" />
<manager>
<configuration cfg:include-url="variableRel:App/cfg-manager.xml" />
</manager>
<repository>
<configuration cfg:include-url="variableRel:App/cfg-repository.xml" />
</repository>
</configurations>
Note that the namespace declaration is included in every element that uses it, but it is not included for those elements that have an attribute with the namespace.
So, this exception is thrown:
org.xml.sax.SAXParseException: The prefix "cfg" for attribute "cfg:include-url" associated with an element type "configuration" is not bound.
at orbeon.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:196)
at orbeon.apache.xerces.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:175)
at orbeon.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:351)
at orbeon.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:281)
at orbeon.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:232)
at orbeon.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1654)
at orbeon.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:324)
at orbeon.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:845)
at orbeon.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:768)
at orbeon.apache.xerces.parsers.XMLParser.parse(XMLParser.java:108)
at orbeon.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1201)
at org.dom4j.io.SAXReader.read(SAXReader.java:465)
at org.dom4j.io.SAXReader.read(SAXReader.java:365)
at org.orbeon.oxf.xml.dom4j.Dom4jUtils.readDom4j(Dom4jUtils.java:243)
at org.orbeon.oxf.xforms.XFormsInstance.<init>(XFormsInstance.java:127)
at org.orbeon.oxf.xforms.XFormsModel.restoreInstances(XFormsModel.java:449)
at org.orbeon.oxf.xforms.XFormsModel.restoreState(XFormsModel.java:393)
at org.orbeon.oxf.xforms.xbl.XBLContainer.restoreModelsState(XBLContainer.java:624)
at org.orbeon.oxf.xforms.XFormsContainingDocument.restoreDynamicState(XFormsContainingDocument.java:1468)
at org.orbeon.oxf.xforms.XFormsContainingDocument.<init>(XFormsContainingDocument.java:261)
at org.orbeon.oxf.xforms.processor.XFormsServer.outputAjaxResponse(XFormsServer.java:816)
at org.orbeon.oxf.xforms.processor.XFormsServer.doIt(XFormsServer.java:351)
at org.orbeon.oxf.xforms.processor.XFormsServer.access$000(XFormsServer.java:62)
at org.orbeon.oxf.xforms.processor.XFormsServer$1.readImpl(XFormsServer.java:93)
at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl$1.read(ProcessorImpl.java:996)
at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1179)
at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:351)
at org.orbeon.oxf.processor.pipeline.TeeProcessor.access$200(TeeProcessor.java:35)
at org.orbeon.oxf.processor.pipeline.TeeProcessor$TeeProcessorOutputImpl.readImpl(TeeProcessor.java:89)
at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl$1.read(ProcessorImpl.java:996)
at org.orbeon.oxf.processor.ProcessorImpl$ProcessorOutputImpl.read(ProcessorImpl.java:1179)
at org.orbeon.oxf.processor.ProcessorImpl.readInputAsSAX(ProcessorImpl.java:351)
at org.orbeon.oxf.processor.ProcessorImpl.readInputAsTinyTree(ProcessorImpl.java:378)
at org.orbeon.oxf.processor.ProcessorImpl$4.read(ProcessorImpl.java:411)
at org.orbeon.oxf.processor.ProcessorImpl.readCacheInputAsObject(ProcessorImpl.java:457)
at org.orbeon.oxf.processor.ProcessorImpl.readCacheInputAsTinyTree(ProcessorImpl.java:409)
at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor.start(ConcreteChooseProcessor.java:189)
at org.orbeon.oxf.processor.pipeline.PipelineProcessor$5.run(PipelineProcessor.java:647)
at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:526)
at org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:644)
at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor.start(ConcreteChooseProcessor.java:245)
at org.orbeon.oxf.processor.pipeline.PipelineProcessor$5.run(PipelineProcessor.java:647)
at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:526)
at org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:644)
at org.orbeon.oxf.pipeline.InitUtils.runProcessor(InitUtils.java:90)
at org.orbeon.oxf.webapp.ProcessorService.service(ProcessorService.java:96)
at org.orbeon.oxf.servlet.OrbeonServletDelegate.service(OrbeonServletDelegate.java:138)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:567)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:595)
If I put the debug attribute in the XPL, the result of applying the XPointer expression is correct.
Why this different behaviour?
Thanks in advance.
jpereza