You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by Scott Boag/CAM/Lotus <Sc...@lotus.com> on 2000/02/03 19:56:46 UTC
Re: WRONG_DOCUMENT_ERR
I think it's because I'm having the parser liaison create a document to use
as the result tree factory object. Yech. Argh. I ought to at least have
a setDOMFactory() method on the process, but for some reason I only put in
a getDOMFactory(). The &#*$^ DOM won't let you add a node to one document
that was created by another document.
The easiest workaround for this is to set the FormatterToDOM object
yourself:
public static void transformElement(Element xmlSource, Document xsl,
Element
xmlTarget)
throws SAXException
{
XSLTProcessor xsltProcessor
= XSLTProcessorFactory.getProcessor(new
org.apache.xalan.xpath.xdom.XercesLiaison());
org.apache.xalan.xpath.xml.FormatterToDOM domMaker
= new
org.apache.xalan.xpath.xml.FormatterToDOM(xmlTarget.getOwnerDocument(),
xmlTarget);
xsltProcessor.process( new XSLTInputSource(xmlSource),
new XSLTInputSource(xsl.getDocumentElement
()),
new XSLTResultTarget(domMaker)
);
} //transformElement
Please let me know if this works around the problem for you or not.
BTW, in general I'm having a pretty hard time keeping up with the mail on
all the Apache lists. You're a little better off sending mail that relates
to Xalan to the xalan dev list.
-scott
Brian Dupras
<briand@cente To: "Xml-Apache (E-mail)" <ge...@xml.apache.org>
ra.com> cc: (bcc: Scott Boag/CAM/Lotus)
Subject: WRONG_DOCUMENT_ERR
02/03/00
11:20 AM
Please
respond to
general
I'm trying to track down a bug in my code, but i'm having some trouble.
Any
help is greatly appreciated.
I've written the following function to transform an XML Element through an
XSL Document, and store the results as children of another XML Element:
public static void transformElement(Element xmlSource, Document xsl,
Element
xmlTarget)
throws SAXException {
XSLTProcessor xsltProcessor =
XSLTProcessorFactory.getProcessor(new
org.apache.xalan.xpath.xdom.XercesLiaison());
xsltProcessor.process( new XSLTInputSource(xmlSource),
new
XSLTInputSource(xsl.getDocumentElement()),
new
XSLTResultTarget(xmlTarget)
);
} //transformElement
However, I'm gettnig a WRONG_DOCUMENT_ERR. I'm not sure which part I'm
doing wrong. Any clues from the above?
For xmlSource, I'm passing an Element Node <pp:component> deep inside one
document tree.
For xmlTarget, I'm passing an Element Node <html:span> that is owned by a
different Document.
xsl is a new Document that holds the xsl transform.
the xsl:
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:html='http://www.w3.org/1999/xhtml'
exclude-result-prefixes="html"
>
<xsl:output
method="xml"
indent="yes"
omit-xml-declaration="yes"
/>
<xsl:template match="/">
</xsl:template>
</xsl:stylesheet>
I'm getting this on the stderr:
WRONG_DOCUMENT_ERR
org.apache.xerces.dom.DOMExceptionImpl: WRONG_DOCUMENT_ERR
at
org.apache.xerces.dom.NodeImpl.internalInsertBefore(NodeImpl.java, Compiled
Code)
at org.apache.xerces.dom.NodeImpl.insertBefore(NodeImpl.java,
Compiled Code)
at org.apache.xerces.dom.NodeImpl.appendChild(NodeImpl.java,
Compiled Code)
at
org.apache.xalan.xpath.xml.FormatterToDOM.append(FormatterToDOM.java:129)
at
org.apache.xalan.xpath.xml.FormatterToDOM.characters(FormatterToDOM.java:328
)
at
org.apache.xalan.xslt.XSLTEngineImpl$ResultTreeHandler.characters(XSLTEngine
Impl.java, Compiled Code)
at
org.apache.xalan.xslt.XSLTEngineImpl.cloneToResultTree(XSLTEngineImpl.java:1
810)
at
org.apache.xalan.xslt.ElemTemplateElement.transformChild(ElemTemplateElement
.java:976)
at
org.apache.xalan.xslt.ElemTemplateElement.transformSelectedChildren(ElemTemp
lateElement.java, Compiled Code)
at
org.apache.xalan.xslt.ElemApplyTemplates.execute(ElemApplyTemplates.java:147
)
at
org.apache.xalan.xslt.ElemTemplateElement.executeChildren(ElemTemplateElemen
t.java, Compiled Code)
at
org.apache.xalan.xslt.ElemTemplate.execute(ElemTemplate.java:141)
at
org.apache.xalan.xslt.StylesheetRoot.process(StylesheetRoot.java,
Compiled Code)
at
org.apache.xalan.xslt.XSLTEngineImpl.process(XSLTEngineImpl.java,
Compiled Code)
at com.medwired.pp.XmlHelper.transformElement(XmlHelper.java:65)
at
com.medwired.pp.components.StaticStory.render(StaticStory.java:27)
at
jsp.medwired.pagetest.pagegen.renderComponent(pagegen.java:312)
at jsp.medwired.pagetest.pagegen.renderComponents(pagegen.java,
Compiled Code)
at jsp.medwired.pagetest.pagegen._jspService(pagegen.java:130)
at
com.livesoftware.jsp.HttpJSPServlet.service(HttpJSPServlet.java:31)
at com.livesoftware.jsp.JSPServlet.service(JSPServlet.java:118)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:840)
at com.livesoftware.jrun.JRun.runServlet(JRun.java, Compiled
Code)
at
com.livesoftware.jrun.JRunGeneric.handleConnection(JRunGeneric.java:116)
at
com.livesoftware.jrun.JRunGeneric.handleProxyConnection(JRunGeneric.java:78)
at
com.livesoftware.jrun.service.proxy.JRunProxyServiceHandler.handleRequest(JR
unProxyServiceHandler.java:102)
at
com.livesoftware.jrun.service.ThreadConfigHandler.run(ThreadConfigHandler.ja
va, Compiled Code)
Brian Dupras
Centera Information Systems, Inc.
phone 303.939.0200 x294
fax 303.939.0111
web http://www.centera.com
email briand@centera.com