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]

Reply via email to