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 2002/06/12 11:28:54 UTC
DO NOT REPLY [Bug 9801] New: -
The result of ancestor-or-self()::node() contains duplicated Document nodes.
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=9801>.
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=9801
The result of ancestor-or-self()::node() contains duplicated Document nodes.
Summary: The result of ancestor-or-self()::node() contains
duplicated Document nodes.
Product: XalanJ2
Version: 2.3
Platform: All
OS/Version: Other
Status: NEW
Severity: Major
Priority: Other
Component: org.apache.xpath
AssignedTo: xalan-dev@xml.apache.org
ReportedBy: kent@hauN.org
The following code simply sets the root element to the context node and
selects "ancestor-or-self()::node()". Expected result is a node-set
consisted of two nodes, Document and `root' Element, and actual result is
a node-set that has three nodes, Document, Document and `root' Element.
// ----------------------------------------------------------------
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.apache.xpath.XPathAPI;
import org.apache.xpath.objects.XObject;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.traversal.NodeIterator;
public class XPathBug0612 {
public static void main(String[] argv) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.newDocument();
Element root = doc.createElement("root");
doc.appendChild(root);
NodeIterator nl = XPathAPI.selectNodeIterator(root, "ancestor-or-
self::node()");
Node n;
int i = 0;
while ((n = nl.nextNode()) != null) {
System.out.println(n.getNodeName());
i++;
}
// assertEquals(2, i);
}
}
// ----------------------------------------------------------------