You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by bu...@apache.org on 2003/12/18 02:32:31 UTC
DO NOT REPLY [Bug 25608] -
DOMResult(Node) fails for Element when transform outputs more than one root node.
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=25608>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=25608
DOMResult(Node) fails for Element when transform outputs more than one root node.
------- Additional Comments From joshc@plumtree.com 2003-12-18 01:32 -------
I believe the problem is in org.apache.xml.utils.DOMBuilder. When the first
element is ended in endElement the m_elementStack.pop() leaves an empty stack
and m_currentNode is set to null. The next time startElement is called it
attempts to append a new node, but the m_currentNode is null and thus throws an
exception because it is not building a DocumentFragment and an existing node
has been appended.
The fix seems to be to change the constructor so that it adds the passed Node
to the m_elementStack, if it is an Element.
/**
* DOMBuilder instance constructor... it will add the DOM nodes
* to the passed node.
*
* @param doc Root document
* @param node Current node
*/
public DOMBuilder(Document doc, Node node)
{
m_doc = doc;
m_currentNode = node;
if ( node.getNodeType() == Node.ELEMENT_NODE ) {
m_elemStack.push(node);
}
}