You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by sb...@locus.apache.org on 2000/08/08 02:27:35 UTC

cvs commit: xml-xalan/java/src/org/apache/xalan/utils NodeConsumer.java TreeWalker.java

sboag       00/08/07 17:27:35

  Modified:    java/src/org/apache/xalan/processor
                        ProcessorAttributeSet.java ProcessorCharacters.java
                        ProcessorKey.java ProcessorLRE.java
                        ProcessorStylesheetElement.java
                        ProcessorTemplate.java ProcessorTemplateElem.java
                        ProcessorText.java StylesheetHandler.java
               java/src/org/apache/xalan/templates ElemTemplateElement.java
               java/src/org/apache/xalan/utils TreeWalker.java
  Added:       java/src/org/apache/xalan/utils NodeConsumer.java
  Log:
  Added the ability to get the originating node from a ElemTemplateElement, if the stylesheet was created via a DOM.  For tooling support.
  
  Revision  Changes    Path
  1.2       +1 -0      xml-xalan/java/src/org/apache/xalan/processor/ProcessorAttributeSet.java
  
  Index: ProcessorAttributeSet.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/processor/ProcessorAttributeSet.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ProcessorAttributeSet.java	2000/06/19 16:52:05	1.1
  +++ ProcessorAttributeSet.java	2000/08/08 00:27:16	1.2
  @@ -98,6 +98,7 @@
       ElemAttributeSet eat = new ElemAttributeSet();
       eat.setLocaterInfo(handler.getLocator());
       eat.setPrefixes(handler.getNamespaceSupport());
  +    eat.setDOMBackPointer(handler.getOriginatingNode());
       
       setPropertiesFromAttributes(handler, rawName, attributes, eat);
                                      
  
  
  
  1.2       +1 -0      xml-xalan/java/src/org/apache/xalan/processor/ProcessorCharacters.java
  
  Index: ProcessorCharacters.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/processor/ProcessorCharacters.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ProcessorCharacters.java	2000/06/19 16:52:05	1.1
  +++ ProcessorCharacters.java	2000/08/08 00:27:17	1.2
  @@ -85,6 +85,7 @@
          ((null != m_xslTextElement) || !isWhiteSpace(m_accumulator)))
       {
         ElemTextLiteral elem = new ElemTextLiteral();
  +      elem.setDOMBackPointer(handler.getOriginatingNode());
         elem.setLocaterInfo(handler.getLocator());
         elem.setPrefixes(handler.getNamespaceSupport());
         boolean doe = (null != m_xslTextElement) 
  
  
  
  1.2       +1 -0      xml-xalan/java/src/org/apache/xalan/processor/ProcessorKey.java
  
  Index: ProcessorKey.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/processor/ProcessorKey.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ProcessorKey.java	2000/06/19 16:52:07	1.1
  +++ ProcessorKey.java	2000/08/08 00:27:17	1.2
  @@ -104,6 +104,7 @@
       throws SAXException
     {
       KeyDeclaration kd = new KeyDeclaration();
  +    kd.setDOMBackPointer(handler.getOriginatingNode());
       kd.setLocaterInfo(handler.getLocator());
       
       setPropertiesFromAttributes(handler, rawName, attributes, kd);
  
  
  
  1.3       +1 -0      xml-xalan/java/src/org/apache/xalan/processor/ProcessorLRE.java
  
  Index: ProcessorLRE.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/processor/ProcessorLRE.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ProcessorLRE.java	2000/07/31 22:09:07	1.2
  +++ ProcessorLRE.java	2000/08/08 00:27:21	1.3
  @@ -112,6 +112,7 @@
         }
         else
           elem = (ElemLiteralResult)classObject.newInstance();
  +      elem.setDOMBackPointer(handler.getOriginatingNode());
         elem.setLocaterInfo(handler.getLocator());
         elem.setPrefixes(handler.getNamespaceSupport());
         elem.setNamespace(uri);
  
  
  
  1.2       +1 -0      xml-xalan/java/src/org/apache/xalan/processor/ProcessorStylesheetElement.java
  
  Index: ProcessorStylesheetElement.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/processor/ProcessorStylesheetElement.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ProcessorStylesheetElement.java	2000/06/19 16:52:13	1.1
  +++ ProcessorStylesheetElement.java	2000/08/08 00:27:21	1.2
  @@ -119,6 +119,7 @@
           parent.setInclude(stylesheet);
         }
       }
  +    stylesheet.setDOMBackPointer(handler.getOriginatingNode());
       stylesheet.setLocaterInfo(handler.getLocator());
       stylesheet.setPrefixes(handler.getNamespaceSupport());
   
  
  
  
  1.2       +1 -0      xml-xalan/java/src/org/apache/xalan/processor/ProcessorTemplate.java
  
  Index: ProcessorTemplate.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/processor/ProcessorTemplate.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ProcessorTemplate.java	2000/06/19 16:52:13	1.1
  +++ ProcessorTemplate.java	2000/08/08 00:27:21	1.2
  @@ -76,6 +76,7 @@
       throws SAXException
     {
       super.appendAndPush(handler, elem);
  +    elem.setDOMBackPointer(handler.getOriginatingNode());
       handler.getStylesheet().setTemplate((ElemTemplate)elem);
     }
   }
  
  
  
  1.2       +1 -0      xml-xalan/java/src/org/apache/xalan/processor/ProcessorTemplateElem.java
  
  Index: ProcessorTemplateElem.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/processor/ProcessorTemplateElem.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ProcessorTemplateElem.java	2000/06/19 16:52:13	1.1
  +++ ProcessorTemplateElem.java	2000/08/08 00:27:22	1.2
  @@ -94,6 +94,7 @@
       try
       {
         elem = (ElemTemplateElement)classObject.newInstance();
  +      elem.setDOMBackPointer(handler.getOriginatingNode());
         elem.setLocaterInfo(handler.getLocator());
         elem.setPrefixes(handler.getNamespaceSupport());
       }
  
  
  
  1.2       +1 -0      xml-xalan/java/src/org/apache/xalan/processor/ProcessorText.java
  
  Index: ProcessorText.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/processor/ProcessorText.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ProcessorText.java	2000/06/19 16:52:14	1.1
  +++ ProcessorText.java	2000/08/08 00:27:22	1.2
  @@ -82,6 +82,7 @@
       charProcessor.setXslTextElement((ElemText)elem);
       ElemTemplateElement parent = handler.getElemTemplateElement();
       parent.appendChild(elem);
  +    elem.setDOMBackPointer(handler.getOriginatingNode());
     }
       
     /**
  
  
  
  1.8       +22 -1     xml-xalan/java/src/org/apache/xalan/processor/StylesheetHandler.java
  
  Index: StylesheetHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/processor/StylesheetHandler.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- StylesheetHandler.java	2000/08/07 21:31:13	1.7
  +++ StylesheetHandler.java	2000/08/08 00:27:22	1.8
  @@ -62,6 +62,7 @@
   import org.apache.xalan.templates.ElemTemplateElement;
   import org.apache.xalan.templates.StylesheetRoot;
   import org.apache.xalan.templates.Stylesheet;
  +import org.apache.xalan.utils.NodeConsumer;
   import trax.ProcessorException;
   import trax.TemplatesBuilder;
   import trax.Templates;
  @@ -84,6 +85,7 @@
   import org.xml.sax.Locator;
   import org.xml.sax.SAXException;
   import org.xml.sax.SAXParseException;
  +import org.w3c.dom.Node;
   
   
   /**
  @@ -95,7 +97,8 @@
    */
   public class StylesheetHandler
     implements EntityResolver, DTDHandler, 
  -  ContentHandler, ErrorHandler, TemplatesBuilder, PrefixResolver
  +  ContentHandler, ErrorHandler, TemplatesBuilder, PrefixResolver,
  +  NodeConsumer
   {
     static boolean m_xpathFunctionsInited = false;
     
  @@ -1013,4 +1016,22 @@
       return m_nsSupport;
     }
     
  +  private Node m_originatingNode;
  +  
  +  /**
  +   * Set the node that is originating the SAX event.
  +   */
  +  public void setOriginatingNode(Node n)
  +  {
  +    m_originatingNode = n;
  +  }
  +
  +   /**
  +   * Set the node that is originating the SAX event.
  +   */
  +  public Node getOriginatingNode()
  +  {
  +    return m_originatingNode;
  +  }
  + 
   }
  
  
  
  1.5       +21 -0     xml-xalan/java/src/org/apache/xalan/templates/ElemTemplateElement.java
  
  Index: ElemTemplateElement.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemTemplateElement.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ElemTemplateElement.java	2000/07/30 22:49:12	1.4
  +++ ElemTemplateElement.java	2000/08/08 00:27:32	1.5
  @@ -775,6 +775,27 @@
       }
       return lastChild;
     }
  +  
  +  private Node m_DOMBackPointer;
  +  
  +  /**
  +   * If this stylesheet was created from a DOM, get the 
  +   * DOM backpointer that this element originated from.
  +   * For tooling use.
  +   */
  +  public Node getDOMBackPointer()
  +  {
  +    return m_DOMBackPointer;
  +  }
   
  +  /**
  +   * If this stylesheet was created from a DOM, set the 
  +   * DOM backpointer that this element originated from.
  +   * For tooling use.
  +   */
  +  public void setDOMBackPointer(Node n)
  +  {
  +    m_DOMBackPointer = n;
  +  }
     
   }
  
  
  
  1.4       +5 -0      xml-xalan/java/src/org/apache/xalan/utils/TreeWalker.java
  
  Index: TreeWalker.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/utils/TreeWalker.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TreeWalker.java	2000/08/07 21:33:59	1.3
  +++ TreeWalker.java	2000/08/08 00:27:34	1.4
  @@ -61,6 +61,7 @@
   import org.xml.sax.ext.LexicalHandler;
   import org.apache.xpath.DOM2Helper;
   import org.apache.xpath.DOMHelper;
  +import org.apache.xalan.utils.NodeConsumer;
   
   /**
    * <meta name="usage" content="advanced"/>
  @@ -177,6 +178,10 @@
     protected void startNode(Node node)
       throws SAXException 
     {
  +    if(m_contentHandler instanceof NodeConsumer)
  +    {
  +      ((NodeConsumer)m_contentHandler).setOriginatingNode(node);
  +    }
       switch(node.getNodeType())
       {
       case Node.COMMENT_NODE:
  
  
  
  1.1                  xml-xalan/java/src/org/apache/xalan/utils/NodeConsumer.java
  
  Index: NodeConsumer.java
  ===================================================================
  package org.apache.xalan.utils;
  
  import org.w3c.dom.Node;
  
  /**
   * The tree walker will test for this interface, and call 
   * setOriginatingNode before calling the SAX event.  For creating 
   * DOM backpointers for things that are normally created via 
   * SAX events.
   */
  public interface NodeConsumer
  {
    /**
     * Set the node that is originating the SAX event.
     */
    public void setOriginatingNode(Node n);
  }