pauldick 02/04/11 11:33:28
Modified: test/java/src/org/apache/qetest/dtm TestDTMIterator.java
Log:
Added additional axis tests. Major cleanup as well
Revision Changes Path
1.3 +184 -70
xml-xalan/test/java/src/org/apache/qetest/dtm/TestDTMIterator.java
Index: TestDTMIterator.java
===================================================================
RCS file:
/home/cvs/xml-xalan/test/java/src/org/apache/qetest/dtm/TestDTMIterator.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TestDTMIterator.java 9 Apr 2002 19:35:52 -0000 1.2
+++ TestDTMIterator.java 11 Apr 2002 18:33:28 -0000 1.3
@@ -110,8 +110,13 @@
{
String defaultSource=
"<?xml version=\"1.0\"?>\n"+
- "<Document>"+
- "<A><B><C><D><E><F/></E></D></C></B></A><Aa/>"+
+ "<Document xmlns:x=\"www.x.com\" a1=\"hello\"
a2=\"goodbye\">"+
+ "<!-- Default test document -->"+
+ "<?api a1=\"yes\" a2=\"no\"?>"+
+ "<A><B><C><D><E><F/></E></D></C></B></A>"+
+ "<Aa/><Ab/><Ac><Ac1/></Ac>"+
+ "<Ad xmlns:xx=\"www.xx.com\"
xmlns:y=\"www.y.com\" xmlns:z=\"www.z.com\">"+
+ "<Ad1/></Ad>"+
"</Document>";
source=new StreamSource(new
StringReader(defaultSource));
@@ -131,61 +136,191 @@
// with no whitespace filtering, nonincremental, but _with_
// indexing (a fairly common case, and avoids the special
// mode used for RTF DTMs).
+
+ // For testing with some of David Marston's files I do want to strip
whitespace.
+ dtmWSStripper stripper = new dtmWSStripper();
+
DTMManager manager= new DTMManagerDefault().newInstance(new
XMLStringFactoryImpl());
- DTM dtm=manager.getDTM(source, true, null, false, true);
+ DTM dtm=manager.getDTM(source, true, stripper, false, true);
- // Get the Document node and then the first child.
- int dtmRoot = dtm.getDocument(); // #document
- int child = dtm.getFirstChild(dtmRoot); // <Document>
- int sndChild = dtm.getFirstChild(child); // <A>
+ // Get various nodes to use as context nodes.
+ int dtmRoot = dtm.getDocument();
// #document
+ String dtmRootName = dtm.getNodeName(dtmRoot); // Used for
output
+ int DNode = dtm.getFirstChild(dtmRoot); //
<Document>
+ String DNodeName = dtm.getNodeName(DNode);
+ int CNode = dtm.getFirstChild(DNode); //
<Comment>
+ int PINode = dtm.getNextSibling(CNode); // <PI>
+ int ANode = dtm.getNextSibling(PINode); // <A>
+ String ANodeName = dtm.getNodeName(ANode);
+ int lastNode = 0;
- // Get a Iterator for CHILD:: axis and set startNode <Document>
+ // Get a Iterator for CHILD:: axis.
DTMAxisIterator iter = dtm.getAxisIterator(Axis.CHILD);
- iter.setStartNode(child);
+ iter.setStartNode(DNode);
+
+ System.out.println("#### CHILD from "+"<"+DNodeName+">, Reverse
Axis:" + iter.isReverse());
+ // Iterate the axis and print out node info.
+ for (int itNode = iter.next(); DTM.NULL != itNode;
+ itNode = iter.next())
+ { printNode(dtm, iter, itNode, " ");
+ lastNode = itNode;
+ }
+
+ String lastNodeName = dtm.getNodeName(lastNode);
+
+ // Get iterator for PARENT:: Axis
+ iter = dtm.getAxisIterator(Axis.PARENT);
+ iter.setStartNode(lastNode);
+ System.out.println("\n#### PARENT from "+"<"+lastNodeName+">, Reverse
Axis:" + iter.isReverse());
+
+ // Iterate the axis and print out node info.
+ for (int itNode = iter.next(); DTM.NULL != itNode;
+ itNode = iter.next())
+ printNode(dtm, iter, itNode, " ");
+
+ // Get iterator for SELF:: Axis
+ iter = dtm.getAxisIterator(Axis.SELF);
+ iter.setStartNode(lastNode);
+ System.out.println("\n#### SELF from "+"<"+lastNodeName+">, Reverse
Axis:" + iter.isReverse());
- System.out.println("#### First Iterator for <Document>\n");
// Iterate the axis and print out node info.
- for (int nextNode = iter.next(); DTM.NULL != nextNode;
- nextNode = iter.next())
- printNode(dtm, iter, nextNode, " ");
+ for (int itNode = iter.next(); DTM.NULL != itNode;
+ itNode = iter.next())
+ printNode(dtm, iter, itNode, " ");
+/**** Not Implemented
+ // Get iterator for NAMESPACEDECLS:: Axis
+ iter = dtm.getAxisIterator(Axis.NAMESPACEDECLS);
+ iter.setStartNode(lastNode);
+ System.out.println("\n#### NAMESPACEDECLS from "+"<"+lastNodeName+">,
Reverse Axis:" + iter.isReverse());
+ // Iterate the axis and print out node info.
+ for (int itNode = iter.next(); DTM.NULL != itNode;
+ itNode = iter.next())
+ printNode(dtm, iter, itNode, " ");
+****/
+ // Get iterator for NAMESPACE:: Axis
+ iter = dtm.getAxisIterator(Axis.NAMESPACE);
+ iter.setStartNode(lastNode);
+ System.out.println("\n#### NAMESPACE from "+"<"+lastNodeName+">,
Reverse Axis:" + iter.isReverse());
+
+ // Iterate the axis and print out node info.
+ for (int itNode = iter.next(); DTM.NULL != itNode;
+ itNode = iter.next())
+ printNode(dtm, iter, itNode, " ");
+
+ // Get iterator for PRECEDING:: Axis
+ iter = dtm.getAxisIterator(Axis.PRECEDING);
+ iter.setStartNode(lastNode);
+ System.out.println("\n#### PRECEDING from "+"<"+lastNodeName+">,
Reverse Axis:" + iter.isReverse());
- // Get a second Iterator of Descendants, and get the last node.
- DTMAxisIterator iter2 = dtm.getAxisIterator(Axis.DESCENDANT);
- iter2.setStartNode(sndChild);
+ // Iterate the axis and print out node info.
+ for (int itNode = iter.next(); DTM.NULL != itNode;
+ itNode = iter.next())
+ printNode(dtm, iter, itNode, " ");
+
+ // Get iterator for PRECEDINGSIBLING:: Axis
+ iter = dtm.getAxisIterator(Axis.PRECEDINGSIBLING);
+ iter.setStartNode(lastNode);
+ System.out.println("\n#### PRECEDINGSIBLING from
"+"<"+lastNodeName+">, Reverse Axis:" + iter.isReverse());
+
+ // Iterate the axis and print out node info.
+ for (int itNode = iter.next(); DTM.NULL != itNode;
+ itNode = iter.next())
+ printNode(dtm, iter, itNode, " ");
+/**** ArrayIndexOutOfBoundsException
+ // Get iterator for ATTRIBUTE:: Axis
+ iter = dtm.getAxisIterator(Axis.ATTRIBUTE);
+ iter.setStartNode(DNode);
+ System.out.println("\n#### ATTRIBUTE from "+"<"+lastNodeName+">,
Reverse Axis:" + iter.isReverse());
+
+ // Iterate the axis and print out node info.
+ for (int itNode = iter.next(); DTM.NULL != itNode;
+ itNode = iter.next())
+ printNode(dtm, iter, itNode, " ");
+****/
+ // Get iterator for FOLLOWING:: Axis
+ iter = dtm.getAxisIterator(Axis.FOLLOWING);
+ iter.setStartNode(ANode);
+ System.out.println("\n#### FOLLOWING from "+"<"+ANodeName+">, Reverse
Axis:" + iter.isReverse());
+
+ // Iterate the axis and print out node info.
+ for (int itNode = iter.next(); DTM.NULL != itNode;
+ itNode = iter.next())
+ printNode(dtm, iter, itNode, " ");
+
+ // Get iterator for FOLLOWINGSIBLING:: Axis
+ iter = dtm.getAxisIterator(Axis.FOLLOWINGSIBLING);
+ iter.setStartNode(ANode);
+ System.out.println("\n#### FOLLOWINGSIBLING from "+"<"+ANodeName+">,
Reverse Axis:" + iter.isReverse());
+
+ // Iterate the axis and print out node info.
+ for (int itNode = iter.next(); DTM.NULL != itNode;
+ itNode = iter.next())
+ printNode(dtm, iter, itNode, " ");
+
+ // Get a iterator for DESCENDANT:: axis.
+ iter = dtm.getAxisIterator(Axis.DESCENDANT);
+ iter.setStartNode(ANode);
+ System.out.println("\n#### DESCENDANT from "+"<"+ANodeName+">,
Reverse Axis:" + iter.isReverse());
- System.out.println("VARIOUS NODES USED:\n\ndtmRoot="
+dtm.getNodeName(dtmRoot)+" "+
-
"child="+dtm.getNodeName(child)+" "+
-
"2ndChild="+dtm.getNodeName(sndChild)+"\n\n");
- System.out.println("#### Second Iterator\n");
// Iterate the axis and print out node info.
- int lastNode= 0;
- for (int nextNode = iter2.next(); DTM.NULL != nextNode;
- nextNode = iter2.next())
+ for (int itNode = iter.next(); DTM.NULL != itNode;
+ itNode = iter.next())
{
- printNode(dtm, iter2, nextNode, " ");
- lastNode = nextNode;
- System.out.println("******
lastNode="+dtm.getNodeName(lastNode));
+ printNode(dtm, iter, itNode, " ");
+ lastNode = itNode;
}
- //lastNode = iter2.getLast(); // Uncomment for Bugzilla 7885.
- // Get a third itertor of Ancestors starting from the last descendant
+ // Get iterator for DESCENDANTORSELF:: Axis
+ iter = dtm.getAxisIterator(Axis.DESCENDANTORSELF);
+ iter.setStartNode(ANode);
+ System.out.println("\n#### DESCENDANT-OR-SELF from
"+"<"+ANodeName+">, Reverse Axis:" + iter.isReverse());
+
+ // Iterate the axis and print out node info.
+ for (int itNode = iter.next(); DTM.NULL != itNode;
+ itNode = iter.next())
+ {
+ printNode(dtm, iter, itNode, " ");
+ lastNode = itNode;
+ }
+
+ //lastNode = iter.getLast(); // Uncomment for Bugzilla 7885.
+ lastNodeName = dtm.getNodeName(lastNode);
+
+ // Get iterator for ANCESTOR:: Axis
+ iter = dtm.getAxisIterator(Axis.ANCESTOR);
+ iter.setStartNode(lastNode);
+ System.out.println("\n#### ANCESTOR from "+"<"+lastNodeName+">,
Reverse Axis:" + iter.isReverse());
+
+ // Iterate the axis and print out node info.
+ for (int itNode = iter.next(); DTM.NULL != itNode;
+ itNode = iter.next())
+ printNode(dtm, iter, itNode, " ");
+
+ // Get iterator for ANCESTORORSELF:: Axis
+ iter = dtm.getAxisIterator(Axis.ANCESTORORSELF);
+ iter.setStartNode(lastNode);
+ System.out.println("\n#### ANCESTOR-OR-SELF from
"+"<"+lastNodeName+">, Reverse Axis:" + iter.isReverse());
+
+ // Iterate the axis and print out node info.
+ for (int itNode = iter.next(); DTM.NULL != itNode;
+ itNode = iter.next())
+ printNode(dtm, iter, itNode, " ");
+
+/**** Absolute axis (ALL, DESCENDANTSFROMROOT, or DESCENDANTSORSELFFROMROOT)
not implemented.
+ // Get itertor for ALL:: Axis
// of previous iterator, i.e. lastNode.
- DTMAxisIterator revIter = dtm.getAxisIterator(Axis.ANCESTOR);
- revIter.setStartNode(lastNode);
+ iter = dtm.getAxisIterator(Axis.ALL);
+ iter.setStartNode(lastNode);
+ System.out.println("\n#### ALL from "+"<"+lastNodeName+">, Reverse
Axis:" + iter.isReverse());
- System.out.println("VARIOUS NODES USED:\n\ndtmRoot="
+dtm.getNodeName(dtmRoot)+" "+
-
"child="+dtm.getNodeName(child)+" "+
-
"2ndChild="+dtm.getNodeName(sndChild)+" "+
-
"lastNode="+dtm.getNodeName(lastNode)+"\n\n");
- System.out.println("#### Third Iterator\n");
// Iterate the axis and print out node info.
// The output of this loop is what Bugzilla 7886 is all about.
- for (int nextNode = revIter.next(); DTM.NULL != nextNode;
- nextNode = revIter.next())
- printNode(dtm, revIter, nextNode, " ");
-
+ for (int itNode = iter.next(); DTM.NULL != itNode;
+ itNode = iter.next())
+ printNode(dtm, iter, itNode, " ");
+****/
}
catch(Exception e)
{
@@ -205,38 +340,17 @@
String value=dtm.getNodeValue(nodeHandle);
String vq=(value==null) ? "" : "\"";
- System.out.println(indent+
- "Node "+nodeHandle+": "+
- TYPENAME[dtm.getNodeType(nodeHandle)]+" \""+
- dtm.getNodeNameX(nodeHandle)+ " : " +
- dtm.getNodeName(nodeHandle)+
- "\" expandedType="+dtm.getExpandedTypeID(nodeHandle)+
-
- "\n"+
- indent+
- "\tQName Info: "+
- //"Prefix= " +dtm.getPrefix(kid)+
- " LocalName="+"\""+dtm.getLocalName(nodeHandle)+"\""+
- " URI= "+"\""+dtm.getNamespaceURI(nodeHandle)+"\""+
-
- "\n"+
- indent+
- "\tIterator Info: "+
- " StartNode= "+"\""+iter.getStartNode()+"\""+
- " Postion="+"\""+iter.getPosition()+"\""+
- //" LastNode="+"\""+iter.getLast()+"\""+
- " Reverse Axis? = "+"\""+iter.isReverse()+"\""+
-
- "\n"+
- indent+
- "\tParent=" + dtm.getParent(nodeHandle) +
- " FirstChild=" + dtm.getFirstChild(nodeHandle) +
- " NextSib=" + dtm.getNextSibling(nodeHandle)+
- " Level=" + dtm.getLevel(nodeHandle)+"\n"+
-
- indent+
+ // Skip outputing of text nodes. In most cases they clutter the output,
+ // besides I'm only interested in the elemental structure of the dtm.
+ if( TYPENAME[dtm.getNodeType(nodeHandle)] != "TEXT" )
+ {
+ System.out.println(indent+
+ +nodeHandle+": "+
+ TYPENAME[dtm.getNodeType(nodeHandle)]+" "+
+ dtm.getNodeName(nodeHandle)+" "+
+ " Level=" + dtm.getLevel(nodeHandle)+" "+
"\tValue=" + vq + value + vq
);
+ }
}
-
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]