sboag 01/05/22 19:58:00
Modified: java/src Tag: DTM_EXP ComposeDTM.java
java/src/javax/xml/transform Tag: DTM_EXP
TransformerFactory.java package.html
java/src/javax/xml/transform/dom Tag: DTM_EXP package.html
java/src/javax/xml/transform/sax Tag: DTM_EXP package.html
java/src/javax/xml/transform/stream Tag: DTM_EXP
package.html
java/src/org/apache/xalan/templates Tag: DTM_EXP
ElemCopyOf.java
java/src/org/apache/xalan/transformer Tag: DTM_EXP
TransformerHandlerImpl.java TreeWalker2Result.java
java/src/org/apache/xml/dtm Tag: DTM_EXP Axis.java
DTMManager.java
java/src/org/apache/xpath/axes Tag: DTM_EXP
LocPathIterator.java WalkerFactory.java
java/src/org/apache/xpath/compiler Tag: DTM_EXP
Compiler.java
java/src/org/apache/xpath/patterns Tag: DTM_EXP
FunctionPattern.java StepPattern.java
Added: java/src/org/apache/xml/dtm/ref Tag: DTM_EXP
ChunkedIntArray.java CoroutineManager.java
CoroutineParser.java CoroutineSAXFilterTest.java
CoroutineSAXParser.java
CoroutineSAXParser_Xerces.java
CustomStringPool.java DTMAxisIteratorBase.java
DTMBuilder.java DTMDefaultBase.java
DTMDefaultBaseIterators.java
DTMDefaultBaseTraversers.java DTMDocumentImpl.java
DTMManagerDefault.java DTMNamedNodeMap.java
DTMNodeIterator.java DTMNodeProxy.java
DTMSafeStringPool.java DTMStringPool.java
DTMTreeWalker.java ExpandedNameTable.java
TestDTM.java TestDTMNodes.java
java/src/org/apache/xml/dtm/ref/dom2dtm Tag: DTM_EXP
DOM2DTM.java
java/src/org/apache/xml/dtm/ref/sax2dtm Tag: DTM_EXP
SAX2DTM.java
Removed: java/src/org/apache/xml/dtm Tag: DTM_EXP
ChunkedIntArray.java CoroutineManager.java
CoroutineParser.java CoroutineSAXFilterTest.java
CoroutineSAXParser.java
CoroutineSAXParser_Xerces.java
CustomStringPool.java DTMAxisIteratorBase.java
DTMBuilder.java DTMDefaultBase.java
DTMDocumentImpl.java DTMManagerDefault.java
DTMNamedNodeMap.java DTMNodeIterator.java
DTMNodeProxy.java DTMSafeStringPool.java
DTMStringPool.java DTMTreeWalker.java
ExpandedNameTable.java TestDTM.java
TestDTMNodes.java
java/src/org/apache/xml/dtm/dom2dtm Tag: DTM_EXP
DOM2DTM.java
java/src/org/apache/xml/dtm/sax2dtm Tag: DTM_EXP
SAX2DTM.java
Log:
Moved DTM implementation classes down a directory, into a
"ref" package (for reference implementation). I wanted to clearly
seperate the interfaces from the implementation, and make it
clear which are which. SAX2DTM and DOM2DOM went down
a level also. We might want to think about pulling them directly
into the ref directory, since I don't think their packaging serves
a real purpose at this point.
Also, pulled the inner iterator and traverser classes into derived
classes of DTMDefaultBase, DTMDefaultBaseTraversers and
DTMDefaultBaseIterators (which derives from DTMDefaultBaseTraversers)
so that DTMDefaultBase isn't so cluttered. DOM2DTM and
SAX2DTM now derive from DTMDefaultBaseIterators.
Added a few more traverser classes for MatchIterator use,
and did the basic StepPattern construction for NodeIterators.
This work is, unfortunately, still in progress.
Revision Changes Path
No revision
No revision
1.1.2.2 +144 -143 xml-xalan/java/src/Attic/ComposeDTM.java
Index: ComposeDTM.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/Attic/ComposeDTM.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -r1.1.2.1 -r1.1.2.2
--- ComposeDTM.java 2001/05/11 00:36:18 1.1.2.1
+++ ComposeDTM.java 2001/05/23 02:55:00 1.1.2.2
@@ -10,158 +10,159 @@
*
*<P>Status - work in progress</p>
*/
-import org.apache.xml.dtm.CustomStringPool;
+import org.apache.xml.dtm.ref.CustomStringPool;
import org.apache.xml.dtm.DTM;
-import org.apache.xml.dtm.DTMDocumentImpl;
-import org.apache.xml.dtm.DTMStringPool;
+import org.apache.xml.dtm.ref.DTMDocumentImpl;
+import org.apache.xml.dtm.ref.DTMStringPool;
+import org.apache.xml.dtm.ref.*;
public class ComposeDTM {
- DTMDocumentImpl newDoc;
+ DTMDocumentImpl newDoc;
// %REVIEW% Justify why CustomStringPool rather than DTMStringPool.
// (See %REVIEW% issue in CustomStringPool's comments.)
- DTMStringPool symbolTable = new CustomStringPool();
+ DTMStringPool symbolTable = new CustomStringPool();
- public ComposeDTM() {};
+ public ComposeDTM() {};
- public static void main(String[] argv) {
- //try {
- ComposeDTM cdtm = new ComposeDTM();
- cdtm.constructDoc();
-
- cdtm.newDoc.setNsNameTable(cdtm.symbolTable);
- cdtm.newDoc.setLocalNameTable(cdtm.symbolTable);
- cdtm.newDoc.setPrefixNameTable(cdtm.symbolTable);
- cdtm.composeDoc();
-
- cdtm.treeDump();
- /*} catch (Exception e) {
- System.out.println("DOMCompose::Exception: " + e);
- }*/
- }
-
- public void printNode(int nodeHandle, java.io.PrintWriter pw)
- {
- pw.print("Node " + nodeHandle +" ) ");
- int type = newDoc.getNodeType(nodeHandle);
- pw.print("[type: "+ type +" (");
-
- switch (type) {
- case DTM.ATTRIBUTE_NODE: pw.print("ATTRIBUTE_NODE"); break;
- case DTM.CDATA_SECTION_NODE: pw.print("CDATA_SECTION_NODE");
break;
- case DTM.COMMENT_NODE: pw.print("COMMENT_NODE"); break;
- case DTM.DOCUMENT_FRAGMENT_NODE:
pw.print("DOCUMENT_FRAGMENT_NODE"); break;
- case DTM.DOCUMENT_NODE: pw.print("DOCUMENT_NODE"); break;
- case DTM.DOCUMENT_TYPE_NODE: pw.print("DOCUMENT_TYPE_NODE");
break;
- case DTM.ELEMENT_NODE: pw.print("ELEMENT_NODE"); break;
- case DTM.ENTITY_NODE: pw.print("ENTITY_NODE"); break;
- case DTM.ENTITY_REFERENCE_NODE:
pw.print("ENTITY_REFERENCE_NODE"); break;
- case DTM.NOTATION_NODE: pw.print("NOTATION_NODE"); break;
- case DTM.PROCESSING_INSTRUCTION_NODE:
pw.print("PROCESSING_INSTRUCTION_NODE"); break;
- case DTM.TEXT_NODE: pw.print("TEXT_NODE"); break;
- default: pw.print("???");
- }
- pw.print(")]");
- pw.print("[node name: " + newDoc.getNodeName(nodeHandle)+"]");
- pw.print("[node value: " + newDoc.getNodeValue(nodeHandle)+"]");
- pw.println("");
- }
-
- // instantiate a DTM document
- public void constructDoc() {
-
- newDoc = new DTMDocumentImpl(0);
-
- }
-
- // compose a PurchaseOrder document
- public void composeDoc() {
- int root, h, c1, c2, c3, c4, c1_text, c2_text, c3_text, c4_text;
- String text;
-
- try
- {
-
- newDoc.startDocument();
-
-
newDoc.startElement(null,"PurchaseOrderList","PurchaseOrderList", null);
- // root.createAttribute("version", "1.1"));
-
- for (int i = 0; i < 10; i++) {
-
- newDoc.startElement(null,"PurchaseOrder","PurchaseOrder",
null);
-
- newDoc.startElement(null,"Item","Item", null);
- // c1.createAttribute();
- text="Basketball" + " - " + i;
- newDoc.characters(text.toCharArray(),0,text.length());
- newDoc.endElement(null, "Item", "Item");
-
- newDoc.startElement(null,"Description","Description",
null);
- // c2.createAttribute();
- text="Professional Leather Michael Jordan Signatured
Basketball";
- newDoc.characters(text.toCharArray(),0,text.length());
- newDoc.endElement(null, "Description", "Description");
-
- newDoc.startElement(null,"UnitPrice","UnitPrice", null);
- text="$12.99";
- newDoc.characters(text.toCharArray(),0,text.length());
- newDoc.endElement(null, "UnitPrice", "UnitPrice");
-
- newDoc.startElement(null,"Quantity","Quantity", null);
- text="50";
- newDoc.characters(text.toCharArray(),0,text.length());
- newDoc.endElement(null, "Quantity", "Quantity");
-
- newDoc.endElement(null, "PurchaseOrder", "PurchaseOrder");
- }
-
- newDoc.endElement(null, "PurchaseOrderList",
"PurchaseOrderList");
-
- newDoc.endDocument();
- }
- catch(org.xml.sax.SAXException e)
- {
- e.printStackTrace();
- }
- }
-
- // traverse the PurchaseOrder document and print out the content
- public void treeDump()
- {
- int root, node, node_child, node_sibling, node_name,
node_value, node_type;
+ public static void main(String[] argv) {
+ //try {
+ ComposeDTM cdtm = new ComposeDTM();
+ cdtm.constructDoc();
+
+ cdtm.newDoc.setNsNameTable(cdtm.symbolTable);
+ cdtm.newDoc.setLocalNameTable(cdtm.symbolTable);
+ cdtm.newDoc.setPrefixNameTable(cdtm.symbolTable);
+ cdtm.composeDoc();
+
+ cdtm.treeDump();
+ /*} catch (Exception e) {
+ System.out.println("DOMCompose::Exception: " + e);
+ }*/
+ }
+
+ public void printNode(int nodeHandle, java.io.PrintWriter pw)
+ {
+ pw.print("Node " + nodeHandle +" ) ");
+ int type = newDoc.getNodeType(nodeHandle);
+ pw.print("[type: "+ type +" (");
+
+ switch (type) {
+ case DTM.ATTRIBUTE_NODE: pw.print("ATTRIBUTE_NODE"); break;
+ case DTM.CDATA_SECTION_NODE: pw.print("CDATA_SECTION_NODE");
break;
+ case DTM.COMMENT_NODE: pw.print("COMMENT_NODE"); break;
+ case DTM.DOCUMENT_FRAGMENT_NODE:
pw.print("DOCUMENT_FRAGMENT_NODE"); break;
+ case DTM.DOCUMENT_NODE: pw.print("DOCUMENT_NODE"); break;
+ case DTM.DOCUMENT_TYPE_NODE: pw.print("DOCUMENT_TYPE_NODE");
break;
+ case DTM.ELEMENT_NODE: pw.print("ELEMENT_NODE"); break;
+ case DTM.ENTITY_NODE: pw.print("ENTITY_NODE"); break;
+ case DTM.ENTITY_REFERENCE_NODE:
pw.print("ENTITY_REFERENCE_NODE"); break;
+ case DTM.NOTATION_NODE: pw.print("NOTATION_NODE"); break;
+ case DTM.PROCESSING_INSTRUCTION_NODE:
pw.print("PROCESSING_INSTRUCTION_NODE"); break;
+ case DTM.TEXT_NODE: pw.print("TEXT_NODE"); break;
+ default: pw.print("???");
+ }
+ pw.print(")]");
+ pw.print("[node name: " +
newDoc.getNodeName(nodeHandle)+"]");
+ pw.print("[node value: " +
newDoc.getNodeValue(nodeHandle)+"]");
+ pw.println("");
+ }
+
+ // instantiate a DTM document
+ public void constructDoc() {
+
+ newDoc = new DTMDocumentImpl(null, 0, null, null);
+
+ }
+
+ // compose a PurchaseOrder document
+ public void composeDoc() {
+ int root, h, c1, c2, c3, c4, c1_text, c2_text, c3_text,
c4_text;
+ String text;
+
+ try
+ {
+
+ newDoc.startDocument();
+
+
newDoc.startElement(null,"PurchaseOrderList","PurchaseOrderList", null);
+ // root.createAttribute("version", "1.1"));
+
+ for (int i = 0; i < 10; i++) {
+
+
newDoc.startElement(null,"PurchaseOrder","PurchaseOrder", null);
+
+ newDoc.startElement(null,"Item","Item", null);
+ // c1.createAttribute();
+ text="Basketball" + " - " + i;
+ newDoc.characters(text.toCharArray(),0,text.length());
+ newDoc.endElement(null, "Item", "Item");
+
+ newDoc.startElement(null,"Description","Description",
null);
+ // c2.createAttribute();
+ text="Professional Leather Michael Jordan Signatured
Basketball";
+ newDoc.characters(text.toCharArray(),0,text.length());
+ newDoc.endElement(null, "Description", "Description");
+
+ newDoc.startElement(null,"UnitPrice","UnitPrice",
null);
+ text="$12.99";
+ newDoc.characters(text.toCharArray(),0,text.length());
+ newDoc.endElement(null, "UnitPrice", "UnitPrice");
+
+ newDoc.startElement(null,"Quantity","Quantity", null);
+ text="50";
+ newDoc.characters(text.toCharArray(),0,text.length());
+ newDoc.endElement(null, "Quantity", "Quantity");
+
+ newDoc.endElement(null, "PurchaseOrder",
"PurchaseOrder");
+ }
+
+ newDoc.endElement(null, "PurchaseOrderList",
"PurchaseOrderList");
+
+ newDoc.endDocument();
+ }
+ catch(org.xml.sax.SAXException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ // traverse the PurchaseOrder document and print out the content
+ public void treeDump()
+ {
+ int root, node, node_child, node_sibling, node_name,
node_value, node_type;
- java.io.PrintWriter pwrt = null;
- try {
- java.io.FileOutputStream os = new
java.io.FileOutputStream("dtmTreeDump.txt");
- pwrt = new java.io.PrintWriter(os);
-
- root = newDoc.getDocumentRoot();
- System.out.println("Print out the document root
element");
- printNode(root, pwrt);
-
- // root has children
- if (newDoc.hasChildNodes(root)) {
- // traverse through all children of the root
- System.out.println("Print out first generation
children");
- node = newDoc.getFirstChild(root);
- node_sibling = node;
- int i= 1;
- while (node_sibling != -1) {
- System.out.println("Child " + i + "
is:");
- printNode(node_sibling, pwrt);
- node_sibling =
newDoc.getNextSibling(node_sibling);
- i++;
- }
- // traverse through all descendant of the root,
do this later after more generations
- // of children are added to the root
- }
- } catch (java.io.IOException ioe) {
- System.out.println("Could not dump DTM");
- } finally {
- pwrt.close();
- }
- }
+ java.io.PrintWriter pwrt = null;
+ try {
+ java.io.FileOutputStream os = new
java.io.FileOutputStream("dtmTreeDump.txt");
+ pwrt = new java.io.PrintWriter(os);
+
+ root = newDoc.getDocumentRoot();
+ System.out.println("Print out the document root
element");
+ printNode(root, pwrt);
+
+ // root has children
+ if (newDoc.hasChildNodes(root)) {
+ // traverse through all children of the root
+ System.out.println("Print out first
generation children");
+ node = newDoc.getFirstChild(root);
+ node_sibling = node;
+ int i= 1;
+ while (node_sibling != -1) {
+ System.out.println("Child " + i + "
is:");
+ printNode(node_sibling, pwrt);
+ node_sibling =
newDoc.getNextSibling(node_sibling);
+ i++;
+ }
+ // traverse through all descendant of the
root, do this later after more generations
+ // of children are added to the root
+ }
+ } catch (java.io.IOException ioe) {
+ System.out.println("Could not dump DTM");
+ } finally {
+ pwrt.close();
+ }
+ }
}
No revision
No revision
1.14.2.1 +8 -8
xml-xalan/java/src/javax/xml/transform/TransformerFactory.java
Index: TransformerFactory.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/javax/xml/transform/TransformerFactory.java,v
retrieving revision 1.14
retrieving revision 1.14.2.1
diff -u -r1.14 -r1.14.2.1
--- TransformerFactory.java 2001/01/29 22:03:46 1.14
+++ TransformerFactory.java 2001/05/23 02:55:07 1.14.2.1
@@ -55,7 +55,7 @@
* <http://www.apache.org/>.
*/
/**
- * $Id: TransformerFactory.java,v 1.14 2001/01/29 22:03:46 costin Exp $
+ * $Id: TransformerFactory.java,v 1.14.2.1 2001/05/23 02:55:07 sboag Exp $
*/
package javax.xml.transform;
@@ -316,9 +316,9 @@
*/
private static boolean debug;
static {
- try {
- debug = System.getProperty("jaxp.debug") != null;
- } catch( SecurityException ex ) {}
+ try {
+ debug = System.getProperty("jaxp.debug") != null;
+ } catch( SecurityException ex ) {}
}
/**
@@ -336,10 +336,10 @@
// Use the system property first
try {
- String systemProp = null;
- try {
- systemProp = System.getProperty(factoryId);
- } catch( SecurityException se ) {}
+ String systemProp = null;
+ try {
+ systemProp = System.getProperty(factoryId);
+ } catch( SecurityException se ) {}
if (systemProp != null) {
if (debug) {
1.10.2.1 +12 -101 xml-xalan/java/src/javax/xml/transform/package.html
No revision
No revision
1.8.2.1 +1 -39 xml-xalan/java/src/javax/xml/transform/dom/package.html
No revision
No revision
1.8.2.1 +4 -147 xml-xalan/java/src/javax/xml/transform/sax/package.html
No revision
No revision
1.8.2.1 +0 -23
xml-xalan/java/src/javax/xml/transform/stream/package.html
No revision
No revision
1.10.2.3 +1 -1
xml-xalan/java/src/org/apache/xalan/templates/ElemCopyOf.java
Index: ElemCopyOf.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemCopyOf.java,v
retrieving revision 1.10.2.2
retrieving revision 1.10.2.3
diff -u -r1.10.2.2 -r1.10.2.3
--- ElemCopyOf.java 2001/05/07 13:14:55 1.10.2.2
+++ ElemCopyOf.java 2001/05/23 02:55:30 1.10.2.3
@@ -60,7 +60,7 @@
//import org.w3c.dom.traversal.NodeIterator;
import org.apache.xml.dtm.DTM;
import org.apache.xml.dtm.DTMIterator;
-import org.apache.xml.dtm.DTMTreeWalker;
+import org.apache.xml.dtm.ref.DTMTreeWalker;
import org.xml.sax.*;
No revision
No revision
1.1.2.5 +4 -3
xml-xalan/java/src/org/apache/xalan/transformer/Attic/TransformerHandlerImpl.java
Index: TransformerHandlerImpl.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/transformer/Attic/TransformerHandlerImpl.java,v
retrieving revision 1.1.2.4
retrieving revision 1.1.2.5
diff -u -r1.1.2.4 -r1.1.2.5
--- TransformerHandlerImpl.java 2001/05/18 07:16:28 1.1.2.4
+++ TransformerHandlerImpl.java 2001/05/23 02:55:35 1.1.2.5
@@ -85,9 +85,10 @@
import org.apache.xml.dtm.DTM;
import org.apache.xml.dtm.DTMManager;
-import org.apache.xml.dtm.CoroutineManager;
-import org.apache.xml.dtm.CoroutineSAXParser;
-import org.apache.xml.dtm.sax2dtm.SAX2DTM;
+// Bad, bad, we should work towards having to have these referenced here.
+import org.apache.xml.dtm.ref.CoroutineManager;
+import org.apache.xml.dtm.ref.CoroutineSAXParser;
+import org.apache.xml.dtm.ref.sax2dtm.SAX2DTM;
/**
* A TransformerHandler
1.9.2.4 +1 -1
xml-xalan/java/src/org/apache/xalan/transformer/TreeWalker2Result.java
Index: TreeWalker2Result.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/transformer/TreeWalker2Result.java,v
retrieving revision 1.9.2.3
retrieving revision 1.9.2.4
diff -u -r1.9.2.3 -r1.9.2.4
--- TreeWalker2Result.java 2001/05/10 20:48:28 1.9.2.3
+++ TreeWalker2Result.java 2001/05/23 02:55:37 1.9.2.4
@@ -61,7 +61,7 @@
import org.xml.sax.*;
-import org.apache.xml.dtm.DTMTreeWalker;
+import org.apache.xml.dtm.ref.DTMTreeWalker;
import org.apache.xml.utils.MutableAttrListImpl;
import org.apache.xalan.templates.ElemTemplateElement;
import org.apache.xpath.DOMHelper;
No revision
No revision
1.1.2.3 +32 -2 xml-xalan/java/src/org/apache/xml/dtm/Attic/Axis.java
Index: Axis.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xml/dtm/Attic/Axis.java,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -r1.1.2.2 -r1.1.2.3
--- Axis.java 2001/05/21 11:43:59 1.1.2.2
+++ Axis.java 2001/05/23 02:55:43 1.1.2.3
@@ -155,8 +155,34 @@
* A non-xpath axis, traversing the subtree including the subtree
* root, descendants, attributes, and namespace node decls.
*/
- public static final int SUBTREE = 14;
+ public static final int ALLFROMNODE = 14;
+
+ // ===========================================
+ // All axis past this are absolute.
+
+ /**
+ * A non-xpath axis, returns all nodes in the tree from and including the
+ * root.
+ */
+ public static final int ALL = 15;
+ /**
+ * A non-xpath axis, returns all nodes that aren't namespaces or
attributes,
+ * from and including the root.
+ */
+ public static final int DESCENDANTSFROMROOT = 16;
+
+ /**
+ * A non-xpath axis, returns root only.
+ */
+ public static final int ROOT = 17;
+
+ /**
+ * A non-xpath axis, for functions.
+ */
+ public static final int FILTEREDLIST = 18;
+
+
/** The names of the axes for diagnostic purposes. */
public static final String[] names =
{
@@ -174,6 +200,10 @@
"preceding", // 11
"preceding-sibling", // 12
"self", // 13
- "subtree" // 14
+ "all-from-node", // 14
+ "all", // 15
+ "descendants-from-root", // 16
+ "root", // 17
+ "filtered-list" // 18
};
}
1.1.2.13 +2 -19
xml-xalan/java/src/org/apache/xml/dtm/Attic/DTMManager.java
Index: DTMManager.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xml/dtm/Attic/DTMManager.java,v
retrieving revision 1.1.2.12
retrieving revision 1.1.2.13
diff -u -r1.1.2.12 -r1.1.2.13
--- DTMManager.java 2001/05/18 07:16:37 1.1.2.12
+++ DTMManager.java 2001/05/23 02:56:05 1.1.2.13
@@ -93,17 +93,11 @@
public abstract class DTMManager
{
- /** The default property name according to the JAXP spec. */
+ /** The default property name to load the manager. */
private static final String defaultPropName =
"org.apache.xml.dtm.DTMManager";
/**
- * The default table for exandedNameID lookups.
- */
- private static ExpandedNameTable m_expandedNameTable =
- new ExpandedNameTable();
-
- /**
* Factory for creating XMLString objects.
* %TBD% Make this set by the caller.
*/
@@ -179,7 +173,7 @@
{
String classname = findFactory(defaultPropName,
- "org.apache.xml.dtm.DTMManagerDefault");
+
"org.apache.xml.dtm.ref.DTMManagerDefault");
if (classname == null)
{
@@ -523,15 +517,4 @@
return IDENT_NODE_DEFAULT;
}
- /**
- * return the expanded name table.
- *
- * NEEDSDOC @param dtm
- *
- * NEEDSDOC ($objectName$) @return
- */
- public ExpandedNameTable getExpandedNameTable(DTM dtm)
- {
- return m_expandedNameTable;
- }
}
No revision
No revision
1.1.2.1 +342 -0
xml-xalan/java/src/org/apache/xml/dtm/ref/Attic/ChunkedIntArray.java
1.1.2.1 +375 -0
xml-xalan/java/src/org/apache/xml/dtm/ref/Attic/CoroutineManager.java
1.1.2.1 +169 -0
xml-xalan/java/src/org/apache/xml/dtm/ref/Attic/CoroutineParser.java
1.1.2.1 +141 -0
xml-xalan/java/src/org/apache/xml/dtm/ref/Attic/CoroutineSAXFilterTest.java
1.1.2.1 +1064 -0
xml-xalan/java/src/org/apache/xml/dtm/ref/Attic/CoroutineSAXParser.java
1.1.2.1 +334 -0
xml-xalan/java/src/org/apache/xml/dtm/ref/Attic/CoroutineSAXParser_Xerces.java
1.1.2.1 +125 -0
xml-xalan/java/src/org/apache/xml/dtm/ref/Attic/CustomStringPool.java
1.1.2.1 +256 -0
xml-xalan/java/src/org/apache/xml/dtm/ref/Attic/DTMAxisIteratorBase.java
1.1.2.1 +476 -0
xml-xalan/java/src/org/apache/xml/dtm/ref/Attic/DTMBuilder.java
1.1.2.1 +1723 -0
xml-xalan/java/src/org/apache/xml/dtm/ref/Attic/DTMDefaultBase.java
1.1.2.1 +1700 -0
xml-xalan/java/src/org/apache/xml/dtm/ref/Attic/DTMDefaultBaseIterators.java
1.1.2.1 +1187 -0
xml-xalan/java/src/org/apache/xml/dtm/ref/Attic/DTMDefaultBaseTraversers.java
1.1.2.1 +2408 -0
xml-xalan/java/src/org/apache/xml/dtm/ref/Attic/DTMDocumentImpl.java
1.1.2.1 +677 -0
xml-xalan/java/src/org/apache/xml/dtm/ref/Attic/DTMManagerDefault.java
1.1.2.1 +324 -0
xml-xalan/java/src/org/apache/xml/dtm/ref/Attic/DTMNamedNodeMap.java
1.1.2.1 +207 -0
xml-xalan/java/src/org/apache/xml/dtm/ref/Attic/DTMNodeIterator.java
1.1.2.1 +1128 -0
xml-xalan/java/src/org/apache/xml/dtm/ref/Attic/DTMNodeProxy.java
1.1.2.1 +147 -0
xml-xalan/java/src/org/apache/xml/dtm/ref/Attic/DTMSafeStringPool.java
1.1.2.1 +215 -0
xml-xalan/java/src/org/apache/xml/dtm/ref/Attic/DTMStringPool.java
1.1.2.1 +444 -0
xml-xalan/java/src/org/apache/xml/dtm/ref/Attic/DTMTreeWalker.java
1.1.2.1 +213 -0
xml-xalan/java/src/org/apache/xml/dtm/ref/Attic/ExpandedNameTable.java
1.1.2.1 +116 -0
xml-xalan/java/src/org/apache/xml/dtm/ref/Attic/TestDTM.java
1.1.2.1 +33 -0
xml-xalan/java/src/org/apache/xml/dtm/ref/Attic/TestDTMNodes.java
No revision
No revision
1.1.2.1 +1428 -0
xml-xalan/java/src/org/apache/xml/dtm/ref/dom2dtm/Attic/DOM2DTM.java
No revision
No revision
1.1.2.1 +2189 -0
xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm/Attic/SAX2DTM.java
No revision
No revision
1.24.2.7 +1 -1
xml-xalan/java/src/org/apache/xpath/axes/LocPathIterator.java
Index: LocPathIterator.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xpath/axes/LocPathIterator.java,v
retrieving revision 1.24.2.6
retrieving revision 1.24.2.7
diff -u -r1.24.2.6 -r1.24.2.7
--- LocPathIterator.java 2001/05/22 05:48:47 1.24.2.6
+++ LocPathIterator.java 2001/05/23 02:57:40 1.24.2.7
@@ -987,7 +987,7 @@
*
* @param n Must be a non-null reference to the node context.
*/
- public final void setRoot(int n)
+ public void setRoot(int n)
{
m_context = n;
m_cdtm = m_execContext.getDTM(n);
1.13.2.2 +174 -271
xml-xalan/java/src/org/apache/xpath/axes/WalkerFactory.java
Index: WalkerFactory.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xpath/axes/WalkerFactory.java,v
retrieving revision 1.13.2.1
retrieving revision 1.13.2.2
diff -u -r1.13.2.1 -r1.13.2.2
--- WalkerFactory.java 2001/05/22 05:48:47 1.13.2.1
+++ WalkerFactory.java 2001/05/23 02:57:42 1.13.2.2
@@ -60,9 +60,12 @@
import org.apache.xpath.compiler.Compiler;
import org.apache.xpath.patterns.NodeTest;
import org.apache.xpath.patterns.StepPattern;
+import org.apache.xpath.patterns.FunctionPattern;
import org.apache.xpath.Expression;
+import org.apache.xpath.objects.XNumber;
-import org.w3c.dom.traversal.NodeFilter;
+import org.apache.xml.dtm.DTMFilter;
+import org.apache.xml.dtm.Axis;
/**
* This class is both a factory for XPath location path expressions,
@@ -273,12 +276,24 @@
}
else
{
- if (DEBUG_ITERATOR_CREATION)
- System.out.println("new iterator: LocPathIterator: "
- + Integer.toBinaryString(analysis) + ", "
- + compiler.toString());
+ if(true)
+ {
+ if (DEBUG_ITERATOR_CREATION)
+ System.out.println("new iterator: LocPathIterator: "
+ + Integer.toBinaryString(analysis) + ", "
+ + compiler.toString());
+
+ return new LocPathIterator(compiler, opPos, analysis, true);
+ }
+ else
+ {
+ if (DEBUG_ITERATOR_CREATION)
+ System.out.println("new iterator: MatchPatternIterator: "
+ + Integer.toBinaryString(analysis) + ", "
+ + compiler.toString());
- return new LocPathIterator(compiler, opPos, analysis, true);
+ return new MatchPatternIterator(compiler, opPos, analysis);
+ }
}
}
@@ -410,23 +425,37 @@
}
/**
- * NEEDSDOC Method loadSteps
- *
- *
- * NEEDSDOC @param mpi
- * NEEDSDOC @param compiler
- * NEEDSDOC @param stepOpCodePos
- * NEEDSDOC @param stepIndex
+ * Read a <a
href="http://www.w3.org/TR/xpath#location-paths">LocationPath</a>
+ * as a generalized match pattern. What this means is that the
LocationPath
+ * is read backwards, as a test on a given node, to see if it matches the
+ * criteria of the selection, and ends up at the context node.
Essentially,
+ * this is a backwards query from a given node, to find the context node.
+ * <p>So, the selection "foo/daz[2]" is, in non-abreviated expanded syntax,
+ * "self::node()/following-sibling::foo/child::daz[position()=2]".
+ * Taking this as a match pattern for a probable node, it works out to
+ * "self::daz/parent::foo[child::daz[position()=2 and isPrevStepNode()]
+ * precedingSibling::node()[isContextNodeOfLocationPath()]", adding magic
+ * isPrevStepNode and isContextNodeOfLocationPath operations. Predicates
in
+ * the location path have to be executed by the following step,
+ * because they have to know the context of their execution.
+ *
+ * @param mpi The MatchPatternIterator to which the steps will be attached.
+ * @param compiler The compiler that holds the syntax tree/op map to
+ * construct from.
+ * @param stepOpCodePos The current op code position within the opmap.
+ * @param stepIndex The top-level step index withing the iterator.
*
- * NEEDSDOC (loadSteps) @return
+ * @return A StepPattern object, which may contain relative StepPatterns.
*
* @throws javax.xml.transform.TransformerException
*/
static StepPattern loadSteps(
- MatchPatternIterator mpi, Compiler compiler, int stepOpCodePos,
int stepIndex)
+ MatchPatternIterator mpi, Compiler compiler, int stepOpCodePos,
+ int stepIndex)
throws javax.xml.transform.TransformerException
{
-
+ if (DEBUG_PATTERN_CREATION)
+ System.out.println("loadSteps for: "+compiler.getPatternString());
int stepType;
StepPattern step = null;
StepPattern firstStep = null, prevStep = null;
@@ -435,10 +464,9 @@
while (OpCodes.ENDOP != (stepType = ops[stepOpCodePos]))
{
- step = createDefaultStepPattern(compiler, stepOpCodePos, mpi,
analysis);
+ step = createDefaultStepPattern(compiler, stepOpCodePos, mpi, analysis,
+ firstStep, prevStep);
- //step.init(compiler, stepOpCodePos, stepType);
- // walker.setAnalysis(analysis);
if (null == firstStep)
{
firstStep = step;
@@ -456,35 +484,78 @@
if (stepOpCodePos < 0)
break;
}
-
+
+ int axis = Axis.SELF;
+ int paxis = Axis.SELF;
+ StepPattern tail = step;
+ for (StepPattern pat = step; null != pat;
+ pat = pat.getRelativePathPattern())
+ {
+ int nextAxis = pat.getAxis();
+ int nextPaxis = pat.getPredicateAxis();
+ pat.setAxis(axis);
+ pat.setAxis(paxis);
+ axis = nextAxis;
+ paxis = nextPaxis;
+ tail = pat;
+ }
+
+ if(axis < Axis.ALL)
+ {
+ StepPattern selfPattern = new StepPattern(DTMFilter.SHOW_ALL,
+ axis, paxis);
+ // We need to keep the new nodetest from affecting the score...
+ XNumber score = tail.getStaticScore();
+ tail.setRelativePathPattern(selfPattern);
+ tail.setStaticScore(score);
+ selfPattern.setStaticScore(score);
+ }
+
+ if (DEBUG_PATTERN_CREATION)
+ {
+ System.out.println("Done loading steps: "+step.toString());
+
+ System.out.println("");
+ }
return step; // start from last pattern?? //firstStep;
}
/**
- * NEEDSDOC Method createDefaultStepPattern
+ * Create a StepPattern that is contained within a LocationPath.
*
*
- * NEEDSDOC @param compiler
- * NEEDSDOC @param opPos
- * NEEDSDOC @param mpi
- * NEEDSDOC @param analysis
+ * @param compiler The compiler that holds the syntax tree/op map to
+ * construct from.
+ * @param stepOpCodePos The current op code position within the opmap.
+ * @param mpi The MatchPatternIterator to which the steps will be attached.
+ * @param analysis 32 bits of analysis, from which the type of AxesWalker
+ * may be influenced.
+ * @param tail The step that is the first step analyzed, but the last
+ * step in the relative match linked list, i.e. the tail.
+ * May be null.
+ * @param head The step that is the current head of the relative
+ * match step linked list.
+ * May be null.
*
- * NEEDSDOC (createDefaultStepPattern) @return
+ * @return the head of the list.
*
* @throws javax.xml.transform.TransformerException
*/
private static StepPattern createDefaultStepPattern(
- Compiler compiler, int opPos, MatchPatternIterator mpi, int
analysis)
+ Compiler compiler, int opPos, MatchPatternIterator mpi,
+ int analysis, StepPattern tail, StepPattern head)
throws javax.xml.transform.TransformerException
{
- StepPattern ai = null;
int stepType = compiler.getOp(opPos);
boolean simpleInit = false;
int totalNumberWalkers = (analysis & BITS_COUNT);
boolean prevIsOneStepDown = true;
int firstStepPos = compiler.getFirstChildPos(opPos);
+
int whatToShow = compiler.getWhatToShow(opPos);
+ StepPattern ai = null;
+ int axis, predicateAxis;
switch (stepType)
{
@@ -494,11 +565,6 @@
case OpCodes.OP_GROUP :
prevIsOneStepDown = false;
- if (DEBUG_WALKER_CREATION)
- System.out.println("new walker: FilterExprWalker: " + analysis
- + ", " + compiler.toString());
-
- //ai = new FilterExprWalker(lpi);
Expression expr;
switch (stepType)
@@ -510,266 +576,100 @@
expr = compiler.compile(opPos + 2);
}
- // ai = new FunctionPattern(expr);
+ axis = Axis.FILTEREDLIST;
+ predicateAxis = Axis.FILTEREDLIST;
+ ai = new FunctionPattern(expr, axis, predicateAxis);
simpleInit = true;
break;
case OpCodes.FROM_ROOT :
- whatToShow = NodeFilter.SHOW_DOCUMENT
- | NodeFilter.SHOW_DOCUMENT_FRAGMENT;
-
- if (0 == (analysis
- & ~(BIT_ROOT | BIT_CHILD | BIT_ATTRIBUTE | BIT_NAMESPACE
- | BIT_PREDICATE | BITS_COUNT)))
- {
- if (DEBUG_WALKER_CREATION)
- System.out.println("new walker: RootWalkerMultiStep: " + analysis
- + ", " + compiler.toString());
-
- // ai = //new StepPattern(NodeFilter.SHOW_DOCUMENT |
NodeFilter.SHOW_DOCUMENT_FRAGMENT);
- // new RootStepPattern(whatToShow);
- }
- else
- {
- if (DEBUG_WALKER_CREATION)
- System.out.println("new walker: RootWalker: " + analysis + ", "
- + compiler.toString());
+ whatToShow = DTMFilter.SHOW_DOCUMENT
+ | DTMFilter.SHOW_DOCUMENT_FRAGMENT;
- // ai = //new StepPattern(NodeFilter.SHOW_DOCUMENT |
NodeFilter.SHOW_DOCUMENT_FRAGMENT);
- // new RootStepPattern(whatToShow);
- }
- break;
- case OpCodes.FROM_ANCESTORS :
- prevIsOneStepDown = false;
-
- if (DEBUG_WALKER_CREATION)
- System.out.println("new walker: AncestorWalker: " + analysis + ", "
- + compiler.toString());
-
- whatToShow = compiler.getWhatToShow(opPos);
-
- // ai = new RelativeStepPattern(whatToShow, mpi);
+ axis = Axis.ROOT;
+ predicateAxis = Axis.ROOT;
+ ai = new StepPattern(DTMFilter.SHOW_DOCUMENT |
+ DTMFilter.SHOW_DOCUMENT_FRAGMENT,
+ axis, predicateAxis);
break;
- case OpCodes.FROM_ANCESTORS_OR_SELF :
- prevIsOneStepDown = false;
-
- if (DEBUG_WALKER_CREATION)
- System.out.println("new walker: AncestorOrSelfWalker: " + analysis
- + ", " + compiler.toString());
-
- whatToShow = compiler.getWhatToShow(opPos);
-
- // ai = new AncestorOrSelfStepPattern(whatToShow, mpi);
- break;
case OpCodes.FROM_ATTRIBUTES :
- whatToShow = NodeFilter.SHOW_ATTRIBUTE;
-
- if (1 == totalNumberWalkers)
- {
- if (DEBUG_WALKER_CREATION)
- System.out.println("new walker: AttributeWalkerOneStep: "
- + analysis + ", " + compiler.toString());
-
- // TODO: We should be able to do this as long as this is
- // the last step.
- // ai = /*new StepPattern(NodeFilter.SHOW_ATTRIBUTE,
- // compiler.getStepNS(opPos),
- //
compiler.getStepLocalName(opPos));*/
- // new AttributeStepPattern(whatToShow);
- }
- else
- {
- if (DEBUG_WALKER_CREATION)
- System.out.println("new walker: AttributeWalker: " + analysis
- + ", " + compiler.toString());
-
- // ai = /*new StepPattern(NodeFilter.SHOW_ATTRIBUTE,
- // compiler.getStepNS(opPos),
- //
compiler.getStepLocalName(opPos));*/
- // new AttributeStepPattern(whatToShow);
- }
+ whatToShow = DTMFilter.SHOW_ATTRIBUTE;
+ axis = Axis.PARENT;
+ predicateAxis = Axis.ATTRIBUTE;
+ ai = new StepPattern(whatToShow, Axis.SELF, Axis.SELF);
break;
case OpCodes.FROM_NAMESPACE :
- if (DEBUG_WALKER_CREATION)
- System.out.println("new walker: NamespaceWalker: " + analysis + ", "
- + compiler.toString());
-
- // ai = new NamespaceStepPattern(whatToShow);
- break;
- case OpCodes.FROM_CHILDREN :
- if (1 == totalNumberWalkers)
- {
-
- // I don't think this will ever happen any more. -sb
- if (DEBUG_WALKER_CREATION)
- System.out.println("new walker: ChildWalkerOneStep: " + analysis
- + ", " + compiler.toString());
-
- // ai = new ChildStepPattern(whatToShow);
- }
- else
- {
- if (0 == (analysis
- & ~(BIT_ROOT | BIT_CHILD | BIT_ATTRIBUTE | BIT_NAMESPACE
- | BIT_PREDICATE | BITS_COUNT)))
- {
- if (DEBUG_WALKER_CREATION)
- System.out.println("new walker: ChildWalkerMultiStep: "
- + analysis + ", " + compiler.toString());
-
- // ai = new ChildStepPattern(whatToShow);
- }
- else
- {
- if (DEBUG_WALKER_CREATION)
- System.out.println("new walker: ChildWalker: " + analysis + ", "
- + compiler.toString());
-
- //ai = new ChildWalker(lpi);
- //int firstStepPos = compiler.getFirstChildPos(opPos);
- //int whatToShow = compiler.getWhatToShow(firstStepPos);
- // ai = new ChildStepPattern(whatToShow);
- }
- }
+ whatToShow = DTMFilter.SHOW_NAMESPACE;
+ axis = Axis.PARENT;
+ predicateAxis = Axis.NAMESPACE;
+ ai = new StepPattern(whatToShow, axis, predicateAxis);
break;
- case OpCodes.FROM_DESCENDANTS :
- prevIsOneStepDown = false;
-
- if (DEBUG_WALKER_CREATION)
- System.out.println("new walker: DescendantWalker: " + analysis
- + ", " + compiler.toString());
-
- whatToShow = compiler.getWhatToShow(opPos);
-
- // ai = new DescendantStepPattern(whatToShow);
+ case OpCodes.FROM_ANCESTORS :
+ axis = Axis.DESCENDANT;
+ predicateAxis = Axis.ANCESTOR;
break;
- case OpCodes.FROM_DESCENDANTS_OR_SELF :
- prevIsOneStepDown = false;
-
- if (DEBUG_WALKER_CREATION)
- System.out.println("new walker: DescendantOrSelfWalker: " + analysis
- + ", " + compiler.toString());
-
- // ai = new DescendantOrSelfStepPattern(whatToShow);
+ case OpCodes.FROM_CHILDREN :
+ axis = Axis.PARENT;
+ predicateAxis = Axis.CHILD;
break;
- case OpCodes.FROM_FOLLOWING :
- prevIsOneStepDown = false;
-
- if (DEBUG_WALKER_CREATION)
- System.out.println("new walker: FollowingWalker: " + analysis + ", "
- + compiler.toString());
-
- // ai = new FollowingStepPattern(whatToShow);
+ case OpCodes.FROM_ANCESTORS_OR_SELF :
+ axis = Axis.DESCENDANTORSELF;
+ predicateAxis = Axis.ANCESTORORSELF;
break;
- case OpCodes.FROM_FOLLOWING_SIBLINGS :
- prevIsOneStepDown = false;
-
- if (DEBUG_WALKER_CREATION)
- System.out.println("new walker: FollowingSiblingWalker: " + analysis
- + ", " + compiler.toString());
-
- // ai = new FollowingSiblingStepPattern(whatToShow);
+ case OpCodes.FROM_SELF :
+ axis = Axis.SELF;
+ predicateAxis = Axis.SELF;
break;
- case OpCodes.FROM_PRECEDING :
- prevIsOneStepDown = false;
-
- if (DEBUG_WALKER_CREATION)
- System.out.println("new walker: PrecedingWalker: " + analysis + ", "
- + compiler.toString());
-
- whatToShow = compiler.getWhatToShow(opPos);
-
- // ai = new PrecedingStepPattern(whatToShow, mpi);
+ case OpCodes.FROM_PARENT :
+ axis = Axis.CHILD;
+ predicateAxis = Axis.PARENT;
break;
case OpCodes.FROM_PRECEDING_SIBLINGS :
- prevIsOneStepDown = false;
-
- if (DEBUG_WALKER_CREATION)
- System.out.println("new walker: PrecedingSiblingWalker: " + analysis
- + ", " + compiler.toString());
-
- // ai = new PrecedingSiblingStepPattern(whatToShow, mpi);
+ axis = Axis.FOLLOWINGSIBLING;
+ predicateAxis = Axis.PRECEDINGSIBLING;
break;
- case OpCodes.FROM_PARENT :
- prevIsOneStepDown = false;
-
- if (DEBUG_WALKER_CREATION)
- System.out.println("new walker: ParentWalker: " + analysis + ", "
- + compiler.toString());
-
- // ai = new ParentStepPattern(whatToShow);
+ case OpCodes.FROM_PRECEDING :
+ axis = Axis.FOLLOWING;
+ predicateAxis = Axis.PRECEDING;
break;
- case OpCodes.FROM_SELF :
- if (1 == totalNumberWalkers)
- {
- if (DEBUG_WALKER_CREATION)
- System.out.println("new walker: SelfWalkerOneStep: " + analysis
- + ", " + compiler.toString());
-
- // ai = new SelfStepPattern(whatToShow);
- }
- else
- {
- if (DEBUG_WALKER_CREATION)
- System.out.println("new walker: SelfWalker: " + analysis + ", "
- + compiler.toString());
-
- // ai = new SelfStepPattern(whatToShow);
- }
+ case OpCodes.FROM_FOLLOWING_SIBLINGS :
+ axis = Axis.PRECEDINGSIBLING;
+ predicateAxis = Axis.FOLLOWINGSIBLING;
break;
- case OpCodes.MATCH_ATTRIBUTE :
- if (DEBUG_WALKER_CREATION)
- System.out.println("new walker: AttributeWalker(MATCH_ATTRIBUTE): "
- + analysis + ", " + compiler.toString());
-
- // ai = new AttributeStepPattern(whatToShow);
+ case OpCodes.FROM_FOLLOWING :
+ axis = Axis.PRECEDING;
+ predicateAxis = Axis.FOLLOWING;
break;
- case OpCodes.MATCH_ANY_ANCESTOR :
- if (DEBUG_WALKER_CREATION)
- System.out.println("new walker: ChildWalker(MATCH_ANY_ANCESTOR): "
- + analysis + ", " + compiler.toString());
-
- // ai = new ChildStepPattern(whatToShow);
+ case OpCodes.FROM_DESCENDANTS_OR_SELF :
+ axis = Axis.ANCESTORORSELF;
+ predicateAxis = Axis.DESCENDANTORSELF;
break;
- case OpCodes.MATCH_IMMEDIATE_ANCESTOR :
- if (DEBUG_WALKER_CREATION)
- System.out.println(
- "new walker: ChildWalker(MATCH_IMMEDIATE_ANCESTOR): " + analysis
- + ", " + compiler.toString());
-
- // ai = new ChildStepPattern(whatToShow);
+ case OpCodes.FROM_DESCENDANTS :
+ axis = Axis.ANCESTOR;
+ predicateAxis = Axis.DESCENDANT;
break;
default :
throw new RuntimeException("Programmer's assertion: unknown opcode: "
+ stepType);
}
-
- if (simpleInit)
+ if(null == ai)
{
- ai.initNodeTest(NodeFilter.SHOW_ALL);
+ whatToShow = compiler.getWhatToShow(firstStepPos); // %REVIEW%
+ ai = new StepPattern(whatToShow, compiler.getStepNS(opPos),
+ compiler.getStepLocalName(opPos),
+ axis, predicateAxis);
+ }
+
+ if (false && DEBUG_PATTERN_CREATION)
+ {
+ System.out.print("new step: "+ ai + analysis);
+ System.out.print(", pattern: " + compiler.toString());
+ System.out.print(", axis: " + Axis.names[ai.getAxis()]);
+ System.out.print(", predAxis: " + Axis.names[ai.getAxis()]);
+ System.out.println(", what: ");
+ System.out.print(" ");
+ ai.debugWhatToShow(ai.getWhatToShow());
}
- else
- {
-
- //int whatToShow = compiler.getWhatToShow(opPos);
- /*
- System.out.print("construct: ");
- NodeTest.debugWhatToShow(whatToShow);
- System.out.println("or stuff: "+(whatToShow &
(NodeFilter.SHOW_ATTRIBUTE
- | NodeFilter.SHOW_ELEMENT
- | NodeFilter.SHOW_PROCESSING_INSTRUCTION)));
- */
- if ((0 == (whatToShow
- & (NodeFilter.SHOW_ATTRIBUTE | NodeFilter.SHOW_ELEMENT
- | NodeFilter.SHOW_PROCESSING_INSTRUCTION))) ||
(whatToShow == NodeFilter.SHOW_ALL))
- ai.initNodeTest(whatToShow);
- else
- {
- ai.initNodeTest(whatToShow, compiler.getStepNS(opPos),
- compiler.getStepLocalName(opPos));
- }
- }
-
int argLen = compiler.getFirstPredicateOpPos(opPos);
ai.setPredicates(compiler.getCompiledPredicates(argLen));
@@ -1069,7 +969,7 @@
if (simpleInit)
{
- ai.initNodeTest(NodeFilter.SHOW_ALL);
+ ai.initNodeTest(DTMFilter.SHOW_ALL);
}
else
{
@@ -1078,13 +978,13 @@
/*
System.out.print("construct: ");
NodeTest.debugWhatToShow(whatToShow);
- System.out.println("or stuff: "+(whatToShow &
(NodeFilter.SHOW_ATTRIBUTE
- | NodeFilter.SHOW_ELEMENT
- | NodeFilter.SHOW_PROCESSING_INSTRUCTION)));
+ System.out.println("or stuff: "+(whatToShow & (DTMFilter.SHOW_ATTRIBUTE
+ | DTMFilter.SHOW_ELEMENT
+ | DTMFilter.SHOW_PROCESSING_INSTRUCTION)));
*/
if ((0 == (whatToShow
- & (NodeFilter.SHOW_ATTRIBUTE | NodeFilter.SHOW_ELEMENT
- | NodeFilter.SHOW_PROCESSING_INSTRUCTION))) ||
(whatToShow == NodeFilter.SHOW_ALL))
+ & (DTMFilter.SHOW_ATTRIBUTE | DTMFilter.SHOW_ELEMENT
+ | DTMFilter.SHOW_PROCESSING_INSTRUCTION))) ||
(whatToShow == DTMFilter.SHOW_ALL))
ai.initNodeTest(whatToShow);
else
{
@@ -1095,6 +995,9 @@
return ai;
}
+
+ /** Set to true for diagnostics about walker creation */
+ static final boolean DEBUG_PATTERN_CREATION = true;
/** Set to true for diagnostics about walker creation */
static final boolean DEBUG_WALKER_CREATION = false;
No revision
No revision
1.23.2.3 +2 -8
xml-xalan/java/src/org/apache/xpath/compiler/Compiler.java
Index: Compiler.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xpath/compiler/Compiler.java,v
retrieving revision 1.23.2.2
retrieving revision 1.23.2.3
diff -u -r1.23.2.2 -r1.23.2.3
--- Compiler.java 2001/05/22 05:48:51 1.23.2.2
+++ Compiler.java 2001/05/23 02:57:48 1.23.2.3
@@ -94,8 +94,6 @@
import javax.xml.transform.ErrorListener;
import javax.xml.transform.TransformerException;
-// import org.w3c.dom.traversal.NodeFilter;
-
/**
* <meta name="usage" content="advanced"/>
* An instance of this class compiles an XPath string expression into
@@ -872,7 +870,7 @@
{
case OpCodes.OP_FUNCTION :
if(DEBUG)
- System.out.println("MATCH_FUNCTION: "+m_currentPattern);
+ System.out.println("MATCH_FUNCTION: "+m_currentPattern);
addMagicSelf = false;
argLen = m_opMap[opPos + OpMap.MAPINDEX_LENGTH];
pattern = new FunctionPattern(compileFunction(opPos), Axis.PARENT,
Axis.CHILD);
@@ -906,7 +904,7 @@
// bit-o-hackery, but this code is due for the morgue anyway...
if(0x00000500 == what)
addMagicSelf = false;
- pattern = new RelativeStepPattern(getWhatToShow(startOpPos),
+ pattern = new StepPattern(getWhatToShow(startOpPos),
getStepNS(startOpPos),
getStepLocalName(startOpPos),
Axis.ANCESTOR, Axis.CHILD);
@@ -939,12 +937,8 @@
// translate this to a select pattern from the node being tested,
// which is really how we're treating match patterns, it works out to
// self::foo/parent::node[child::foo[3]]", or close enough.
- int axis;
- int predicateAxis;
if(addMagicSelf)
{
- axis = Axis.PARENT;
- predicateAxis = Axis.CHILD;
StepPattern selfPattern = new StepPattern(DTMFilter.SHOW_ALL,
Axis.PARENT, Axis.CHILD);
// We need to keep the new nodetest from affecting the score...
No revision
No revision
1.7.2.5 +1 -1
xml-xalan/java/src/org/apache/xpath/patterns/FunctionPattern.java
Index: FunctionPattern.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xpath/patterns/FunctionPattern.java,v
retrieving revision 1.7.2.4
retrieving revision 1.7.2.5
diff -u -r1.7.2.4 -r1.7.2.5
--- FunctionPattern.java 2001/05/22 05:48:51 1.7.2.4
+++ FunctionPattern.java 2001/05/23 02:57:53 1.7.2.5
@@ -92,7 +92,7 @@
/**
* Static calc of match score.
*/
- protected final void calcScore()
+ public final void calcScore()
{
m_score = SCORE_OTHER;
1.19.2.3 +103 -3
xml-xalan/java/src/org/apache/xpath/patterns/StepPattern.java
Index: StepPattern.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xpath/patterns/StepPattern.java,v
retrieving revision 1.19.2.2
retrieving revision 1.19.2.3
diff -u -r1.19.2.2 -r1.19.2.3
--- StepPattern.java 2001/05/22 05:48:52 1.19.2.2
+++ StepPattern.java 2001/05/23 02:57:56 1.19.2.3
@@ -79,7 +79,7 @@
/** NEEDSDOC Field m_axis */
protected int m_axis;
-
+
/**
* Construct a StepPattern that tests for namespaces and node names.
*
@@ -200,7 +200,21 @@
calcScore();
}
+
+ /**
+ * Get the reference to nodetest and predicate for
+ * parent or ancestor.
+ *
+ *
+ * @return The relative pattern expression.
+ */
+ public StepPattern getRelativePathPattern()
+ {
+
+ return m_relativePathPattern;
+ }
+
/**
* The list of predicate expressions for this pattern step.
* @serial
@@ -272,11 +286,13 @@
/**
* Static calc of match score.
*/
- protected void calcScore()
+ public void calcScore()
{
if ((getPredicateCount() > 0) || (null != m_relativePathPattern))
+ {
m_score = SCORE_OTHER;
+ }
else
super.calcScore();
@@ -302,6 +318,18 @@
throws javax.xml.transform.TransformerException
{
+ if (m_whatToShow == NodeTest.SHOW_BYFUNCTION)
+ {
+ XObject score = NodeTest.SCORE_NONE;
+
+ if (null != m_relativePathPattern)
+ {
+ score = m_relativePathPattern.execute(xctxt);
+ }
+
+ return score;
+ }
+
XObject score = super.execute(xctxt);
if (score == NodeTest.SCORE_NONE)
@@ -314,7 +342,7 @@
else
{
// System.out.println("PredicateRoot: "+xctxt.getPredicateRoot());
- int current = xctxt.getCurrentNode();
+ // int current = xctxt.getCurrentNode();
return score;
// int parent = xctxt.getDTM(current).getParent(current);
// return executePredicates(xctxt, this, score, current, current);
@@ -567,6 +595,57 @@
return score;
}
+
+ public String toString()
+ {
+ StringBuffer buf = new StringBuffer();
+ for(StepPattern pat = this; pat != null; pat = pat.m_relativePathPattern)
+ {
+ if(pat != this)
+ buf.append("/");
+ buf.append(Axis.names[pat.m_axis]);
+ buf.append("::");
+ if(null != pat.m_namespace)
+ {
+ buf.append("{");
+ buf.append(pat.m_namespace);
+ buf.append("}");
+ }
+ else if(null != pat.m_name)
+ {
+ buf.append(pat.m_name);
+ }
+ else if(0x000005000 == pat.m_whatToShow)
+ {
+ buf.append("doc()");
+ }
+ else if(DTMFilter.SHOW_BYFUNCTION == pat.m_whatToShow)
+ {
+ buf.append("function()");
+ }
+ else if(DTMFilter.SHOW_ALL == pat.m_whatToShow)
+ {
+ buf.append("node()");
+ }
+ else if(DTMFilter.SHOW_TEXT == pat.m_whatToShow)
+ {
+ buf.append("text()");
+ }
+ else if(DTMFilter.SHOW_PROCESSING_INSTRUCTION == pat.m_whatToShow)
+ {
+ buf.append("processing-instruction()");
+ }
+ else if(DTMFilter.SHOW_COMMENT == pat.m_whatToShow)
+ {
+ buf.append("comment()");
+ }
+ else
+ {
+ buf.append("??");
+ }
+ }
+ return buf.toString();
+ }
/** Set to true to send diagnostics about pattern matches to the consol. */
private static final boolean DEBUG_MATCHES = false;
@@ -606,4 +685,25 @@
// return XPath.MATCH_SCORE_NONE;
}
+
+ public void setAxis(int axis)
+ {
+ m_axis = axis;
+ }
+
+ public int getAxis()
+ {
+ return m_axis;
+ }
+
+ public void setPredicateAxis(int axisForPredicate)
+ {
+ m_axisForPredicate = axisForPredicate;
+ }
+
+ public int getPredicateAxis()
+ {
+ return m_axisForPredicate;
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]