sboag       00/10/04 18:38:39

  Modified:    java/src/org/apache/xalan/transformer TransformerImpl.java
               java/src/org/apache/xalan/utils AttList.java TreeWalker.java
               java/src/org/apache/xpath DOM2Helper.java DOMHelper.java
                        XPathContext.java
               java/src/trax Examples.java
  Log:
  Fixed problem with resolving namespaces for DOM transformations.
  
  Revision  Changes    Path
  1.26      +2 -0      
xml-xalan/java/src/org/apache/xalan/transformer/TransformerImpl.java
  
  Index: TransformerImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/transformer/TransformerImpl.java,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- TransformerImpl.java      2000/10/04 19:20:18     1.25
  +++ TransformerImpl.java      2000/10/05 01:38:37     1.26
  @@ -871,6 +871,8 @@
         try
         {
           DocumentBuilderFactory dfactory = 
DocumentBuilderFactory.newInstance();
  +        dfactory.setNamespaceAware(true);
  +        dfactory.setValidating(true);
           m_docBuilder = dfactory.newDocumentBuilder();
         }
         catch(ParserConfigurationException pce)
  
  
  
  1.3       +2 -1      xml-xalan/java/src/org/apache/xalan/utils/AttList.java
  
  Index: AttList.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/utils/AttList.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- AttList.java      2000/08/07 21:33:41     1.2
  +++ AttList.java      2000/10/05 01:38:38     1.3
  @@ -59,6 +59,7 @@
   import org.w3c.dom.*;
   import org.xml.sax.*;
   import org.apache.xpath.DOMHelper;
  +import org.apache.xpath.DOM2Helper;
   
   
   /**
  @@ -77,7 +78,7 @@
     {
       m_attrs = attrs;
       m_lastIndex = m_attrs.getLength() - 1;
  -    m_dh = new DOMHelper();
  +    m_dh = new DOM2Helper();
     }
     
     public AttList(NamedNodeMap attrs, DOMHelper dh)
  
  
  
  1.6       +32 -2     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.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- TreeWalker.java   2000/10/02 02:43:10     1.5
  +++ TreeWalker.java   2000/10/05 01:38:38     1.6
  @@ -76,7 +76,7 @@
     
     // ARGHH!!  JAXP Uses Xerces without setting the namespace processing to 
ON!
     // DOM2Helper m_dh = new DOM2Helper();
  -  DOMHelper m_dh = new DOMHelper();
  +  DOMHelper m_dh = new DOM2Helper();
     
     /**
      * Get the ContentHandler used for the tree walk.
  @@ -204,6 +204,21 @@
         break;
       case Node.ELEMENT_NODE:
         NamedNodeMap atts = ((Element)node).getAttributes();
  +      int nAttrs = atts.getLength();
  +      for(int i = 0; i < nAttrs; i++)
  +      {
  +        Node attr = atts.item(i);
  +        String attrName = attr.getNodeName();
  +        if(attrName.equals("xmlns") || attrName.startsWith("xmlns:"))
  +        {
  +          int index;
  +          String prefix 
  +            = (index = attrName.indexOf(":"))< 0 
  +              ? null : attrName.substring(index+1);
  +          this.m_contentHandler.startPrefixMapping ( prefix, 
  +                                                     attr.getNodeValue());
  +        }
  +      }
         // System.out.println("m_dh.getNamespaceOfNode(node): 
"+m_dh.getNamespaceOfNode(node));
         // System.out.println("m_dh.getLocalNameOfNode(node): 
"+m_dh.getLocalNameOfNode(node));
         this.m_contentHandler.startElement (m_dh.getNamespaceOfNode(node), 
  @@ -297,7 +312,22 @@
         break;
       case Node.ELEMENT_NODE:
         this.m_contentHandler.endElement("", "", node.getNodeName());
  -      break;
  +       NamedNodeMap atts = ((Element)node).getAttributes();
  +      int nAttrs = atts.getLength();
  +      for(int i = 0; i < nAttrs; i++)
  +      {
  +        Node attr = atts.item(i);
  +        String attrName = attr.getNodeName();
  +        if(attrName.equals("xmlns") || attrName.startsWith("xmlns:"))
  +        {
  +          int index;
  +          String prefix 
  +            = (index = attrName.indexOf(":"))< 0 
  +              ? null : attrName.substring(index+1);
  +          this.m_contentHandler.endPrefixMapping(prefix);
  +        }
  +      }
  +     break;
       case Node.CDATA_SECTION_NODE:
         break;
       case Node.ENTITY_REFERENCE_NODE:
  
  
  
  1.4       +3 -1      xml-xalan/java/src/org/apache/xpath/DOM2Helper.java
  
  Index: DOM2Helper.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/DOM2Helper.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- DOM2Helper.java   2000/10/02 02:43:14     1.3
  +++ DOM2Helper.java   2000/10/05 01:38:38     1.4
  @@ -159,6 +159,8 @@
         //  = new org.apache.xerces.parsers.DOMParser();
         DocumentBuilderFactory builderFactory 
           = DocumentBuilderFactory.newInstance();
  +      builderFactory.setNamespaceAware(true);
  +      builderFactory.setValidating(true);
         DocumentBuilder parser = builderFactory.newDocumentBuilder();
         
         /*
  @@ -242,7 +244,7 @@
       return (Node.ATTRIBUTE_NODE == node.getNodeType())
              ? ((Attr)node).getOwnerElement() : node.getParentNode();
     }
  -  
  +    
     /**
      * Returns the local name of the given node.
      */
  
  
  
  1.5       +2 -0      xml-xalan/java/src/org/apache/xpath/DOMHelper.java
  
  Index: DOMHelper.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/DOMHelper.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- DOMHelper.java    2000/09/11 13:11:42     1.4
  +++ DOMHelper.java    2000/10/05 01:38:38     1.5
  @@ -27,6 +27,8 @@
         // Use an implementation of the JAVA API for XML Parsing 1.0 to
         // create a DOM Document node to contain the result.
         DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
  +      dfactory.setNamespaceAware(true);
  +      dfactory.setValidating(true);
         DocumentBuilder docBuilder = dfactory.newDocumentBuilder();
         Document outNode = docBuilder.newDocument();
         return outNode;
  
  
  
  1.3       +1 -1      xml-xalan/java/src/org/apache/xpath/XPathContext.java
  
  Index: XPathContext.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/XPathContext.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XPathContext.java 2000/07/30 22:44:36     1.2
  +++ XPathContext.java 2000/10/05 01:38:38     1.3
  @@ -226,7 +226,7 @@
     public DOMHelper getDOMHelper()
     {
       if(null == m_domHelper)
  -      m_domHelper = new DOMHelper();
  +      m_domHelper = new DOM2Helper();
       return m_domHelper;
     }
     
  
  
  
  1.8       +2 -0      xml-xalan/java/src/trax/Examples.java
  
  Index: Examples.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/trax/Examples.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Examples.java     2000/10/02 02:43:24     1.7
  +++ Examples.java     2000/10/05 01:38:39     1.8
  @@ -259,6 +259,8 @@
         Templates templates;
         {
           DocumentBuilderFactory dfactory = 
DocumentBuilderFactory.newInstance();
  +        dfactory.setNamespaceAware(true);
  +        dfactory.setValidating(true);
           DocumentBuilder docBuilder = dfactory.newDocumentBuilder();
           org.w3c.dom.Document outNode = docBuilder.newDocument();
           Node doc = docBuilder.parse(new InputSource(xslID));
  
  
  

Reply via email to