You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by ig...@apache.org on 2003/09/06 03:15:14 UTC

cvs commit: xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM2.java

igorh       2003/09/05 18:15:14

  Modified:    java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM2.java
  Log:
  Patch for Bugzilla Bug 22808
  
  Revision  Changes    Path
  1.6       +39 -5     xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm/SAX2DTM2.java
  
  Index: SAX2DTM2.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm/SAX2DTM2.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SAX2DTM2.java	23 Jun 2003 15:23:41 -0000	1.5
  +++ SAX2DTM2.java	6 Sep 2003 01:15:13 -0000	1.6
  @@ -3236,13 +3236,15 @@
         
           if (uri.length() == 0) {
               handler.startElement(name);
  -            return name;
  +            copyNS(nodeID,handler);
  +            return name;           
           }
           else {
               int qnameIndex = m_dataOrQName.elementAt(nodeID);
       
               if (qnameIndex == 0) {
                   handler.startElement(name);
  +                copyNS(nodeID,handler);
                   handler.namespaceAfterStartElement(EMPTY_STR, uri);
                   return name;
               }
  @@ -3254,7 +3256,6 @@
       
               String qName = m_valuesOrPrefixes.indexToString(qnameIndex);
               handler.startElement(qName);
  -            
               int prefixIndex = qName.indexOf(':');
               String prefix;
               if (prefixIndex > 0) {
  @@ -3263,10 +3264,43 @@
               else {
                   prefix = null;
               }
  -            
  +            copyNS(nodeID,handler);
               handler.namespaceAfterStartElement(prefix, uri);
  -            return qName;
  -        }      
  +            return qName;           
  +        }        
  +             
  +    }
  +    
  +    /**
  +     * Copy  namespace nodes.
  +     *
  +     * @param nodeID The Element node identity
  +     * @param handler The SerializationHandler
  +     */
  +
  +   public void copyNS(final int nodeID, SerializationHandler handler)
  +        throws SAXException
  +    {
  +      int current = nodeID;
  +      try{
  +          while (true)
  +          {
  +              current++;
  +              int eType = _exptype2(current);
  +              int type = _exptype2Type(eType);
  +         
  +              if (type == DTM.ATTRIBUTE_NODE) {
  +                 continue;
  +              }
  +              else if (type == DTM.NAMESPACE_NODE) {
  +                  handler.namespaceAfterStartElement(getNodeNameX(makeNodeHandle(current)), getNodeValue(makeNodeHandle(current)));            
  +              }
  +              else
  +                  break;
  +                        }
  +        }catch (Exception e) {
  +            throw new SAXException(e);
  +        }
       }
   
       /**
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org