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);
    }
}
// ----------------------------------------------------------------