elena       2003/02/10 11:10:05

  Modified:    java/src/org/apache/xerces/dom DOMNormalizer.java
  Log:
  Checking for DOM L1 nodes is done using localName instead of relying on colon.
  Local namespace binder now carries all the local declaration that has been 
modified/added
  by the namespace algorithm.
  
  Revision  Changes    Path
  1.28      +12 -21    xml-xerces/java/src/org/apache/xerces/dom/DOMNormalizer.java
  
  Index: DOMNormalizer.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/dom/DOMNormalizer.java,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- DOMNormalizer.java        23 Jan 2003 17:27:11 -0000      1.27
  +++ DOMNormalizer.java        10 Feb 2003 19:10:04 -0000      1.28
  @@ -153,9 +153,6 @@
       /** error handler */
       protected DOMErrorHandler fErrorHandler;
   
  -    // counter for new prefix names
  -    protected int fNamespaceCounter = 1;
  -
       // Validation against namespace aware grammar
       protected boolean fNamespaceValidation = false;
   
  @@ -207,7 +204,6 @@
                // reset namespace context
                fNamespaceContext.reset();
                fNamespaceContext.declarePrefix(XMLSymbols.EMPTY_STRING, 
XMLSymbols.EMPTY_STRING);
  -             fNamespaceCounter = 1;
   
                if ((fConfiguration.features & DOMConfigurationImpl.VALIDATE) != 0) {
                        // REVISIT: currently we only support revalidation against XML 
Schemas
  @@ -309,6 +305,7 @@
                   }
                   // push namespace context
                   fNamespaceContext.pushContext();
  +                fLocalNSBinder.reset();
   
                   ElementImpl elem = (ElementImpl)node;
                   if (elem.needsSyncChildren()) {
  @@ -606,8 +603,6 @@
                               value = fSymbolTable.addSymbol(value);
                               if (value.length() != 0) {
                                   fNamespaceContext.declarePrefix(localpart, value);
  -                                fLocalNSBinder.declarePrefix(localpart, value);
  -
                               } else {
                                   // REVISIT: issue error on invalid declarations
                                   //          xmlns:foo = ""
  @@ -618,9 +613,7 @@
                           } else { // (localpart == fXmlnsSymbol && prefix == 
fEmptySymbol)  -- xmlns
                               // empty prefix is always bound ("" or some string)
                               value = fSymbolTable.addSymbol(value);
  -                            fLocalNSBinder.declarePrefix(XMLSymbols.EMPTY_STRING, 
value);
                               
fNamespaceContext.declarePrefix(XMLSymbols.EMPTY_STRING, value);
  -
                               //removeDefault (attr, attributes);
                               continue;
                           }
  @@ -665,23 +658,21 @@
                   fNamespaceContext.declarePrefix(prefix, uri);
               }
           } else { // Element has no namespace
  -            String tagName = element.getNodeName();
  -            int colon = tagName.indexOf(':');
  -            if (colon > -1) {
  -                //  Error situation: DOM Level 1 node!
  +            if (element.getLocalName() == null) {
  +                //  Error: DOM Level 1 node!
                   boolean continueProcess = true;
                   if (fErrorHandler != null) {
                       if (fNamespaceValidation) {
  -                        modifyDOMError("DOM Level 1 node: "+tagName, 
DOMError.SEVERITY_FATAL_ERROR, element);
  +                        modifyDOMError("DOM Level 1 node: "+element.getNodeName(), 
DOMError.SEVERITY_FATAL_ERROR, element);
                           fErrorHandler.handleError(fDOMError);
                       } else {
  -                        modifyDOMError("DOM Level 1 node: "+tagName, 
DOMError.SEVERITY_ERROR, element);
  +                        modifyDOMError("DOM Level 1 node: "+element.getNodeName(), 
DOMError.SEVERITY_ERROR, element);
                           continueProcess = fErrorHandler.handleError(fDOMError);
                       }
                   }
                   if (fNamespaceValidation || !continueProcess) {
                       // stop the namespace fixup and validation
  -                    throw new RuntimeException("DOM Level 1 node: "+tagName);
  +                    throw new RuntimeException("DOM Level 1 node: 
"+element.getNodeName());
                   }
               } else { // uri=null and no colon (DOM L2 node)
                   uri = fNamespaceContext.getURI(XMLSymbols.EMPTY_STRING);
  @@ -780,9 +771,10 @@
   
                                   // find a prefix following the pattern "NS" +index 
(starting at 1)
                                   // make sure this prefix is not declared in the 
current scope.
  -                                prefix = fSymbolTable.addSymbol(PREFIX 
+fNamespaceCounter++);
  +                                int counter = 1;
  +                                prefix = fSymbolTable.addSymbol(PREFIX +counter++);
                                   while (fLocalNSBinder.getURI(prefix)!=null) {
  -                                    prefix = fSymbolTable.addSymbol(PREFIX 
+fNamespaceCounter++);
  +                                    prefix = fSymbolTable.addSymbol(PREFIX 
+counter++);
                                   }
   
                               }
  @@ -798,14 +790,13 @@
                       }
                   } else { // attribute uri == null
   
  -                    // data
  -                    int colon = name.indexOf(':');
                       // XML 1.0 Attribute value normalization
                       //value = normalizeAttributeValue(value, attr);
  +                    
                       // reset id-attributes
                       ((AttrImpl)attr).setIdAttribute(false);
   
  -                    if (colon > -1) {
  +                    if (attr.getLocalName() == null) {
                           // It is an error if document has DOM L1 nodes.
                           boolean continueProcess = true;
                           if (fErrorHandler != null) {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to