neeraj      2003/11/13 03:25:39

  Modified:    java/src/org/apache/xerces/dom DOMNormalizer.java
  Log:
  Adding support fowr  ell-formed featue. Still need  adddo more changes.r
  
  Revision  Changes    Path
  1.36      +66 -3     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.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- DOMNormalizer.java        11 Nov 2003 20:14:57 -0000      1.35
  +++ DOMNormalizer.java        13 Nov 2003 11:25:39 -0000      1.36
  @@ -183,8 +183,6 @@
        */
       private static final RuntimeException abort = new RuntimeException();
       
  -    
  -    // 
       // Constructor
       // 
   
  @@ -299,6 +297,19 @@
                   if (DEBUG_ND) {
                       System.out.println("==>normalizeNode:{element} 
"+node.getNodeName());
                   }
  +                //do the name check only when version of the document was changed.
  +                if(fDocument.isXMLVersionChanged()){
  +                    //take care of namespaces
  +                    if(fNamespaceValidation){
  +                        //checkQName does checking based on the version of the 
document
  +                        fDocument.checkQName(node.getPrefix() , 
node.getLocalName()) ;
  +                    }
  +                    else{
  +                        //REVISIT: checkQName takes care of the version of the 
document
  +                        //but isXMLName doesn't.... why its so ?
  +                        fDocument.isXMLName(node.getNodeName() , 
fDocument.isXML11Version());
  +                    }
  +                }
                   // push namespace context
                   fNamespaceContext.pushContext();
                   fLocalNSBinder.reset();
  @@ -330,6 +341,14 @@
                           }
                       }
                   }
  +                
  +                //Check the attribute names.... if the document version was changed.
  +                //REVISIT: commenting this for now..
  +                
  +                //if(fDocument.isXMLVersionChanged()){
  +                    //checkAttributeNames(elem, attributes);
  +                //}
  +                
                   if (fValidationHandler != null) {
                       // REVISIT: possible solutions to discard default content are:
                       //         either we pass some flag to XML Schema validator
  @@ -405,6 +424,12 @@
                   if (DEBUG_ND) {
                       System.out.println("==>normalizeNode:{entityRef} 
"+node.getNodeName());
                   }
  +                //do the name check only when version of the document was changed.
  +                if(fDocument.isXMLVersionChanged()){
  +                    //REVISIT: checkQName takes care of the version of the document
  +                    //but isXMLName doesn't.... why its so ?
  +                    fDocument.isXMLName(node.getNodeName() , 
fDocument.isXML11Version());                    
  +                }
   
                   if ((fConfiguration.features & DOMConfigurationImpl.ENTITIES) == 0) 
{
                       Node prevSibling = node.getPreviousSibling();
  @@ -548,6 +573,43 @@
           }
       }
   
  +    //this function is called when normalizing the document
  +    //REVISIT: we should also be checking attribute values
  +    protected final void checkAttributeNames(ElementImpl element, AttributeMap 
attributes){
  +        // 1. loop through all the attributes..
  +        //2. Check that all names are valid as per the version of the document.
  +        //3. Check that attribute values are valid as per the version of the 
document.
  +        //Actual attribute values are available only after attribute normalization 
has been done.
  +        //so this function should be called after namespaceFixup() because that 
function is 
  +        //also responsible for normalizing attribure values
  +        
  +        //REVISIT: should we be doing this separately or in namespaceFixUp() 
function.
  +        //TODO: we are not checking attriubte values yet....
  +        
  +        for( int i = 0 ; i < attributes.getLength(); i++){
  +            Attr attr = (Attr)attributes.item(i) ;
  +            if(attr != null){
  +                //take care of namespaces
  +                if(fNamespaceValidation){
  +                    //checkQName does checking based on the version of the document
  +                    fDocument.checkQName(attr.getPrefix() , attr.getLocalName()) ;
  +                }
  +                else{
  +                    //REVISIT: checkQName takes care of the version of the document
  +                    //but isXMLName doesn't.... why its so ?
  +                    fDocument.isXMLName(attr.getNodeName() , 
fDocument.isXML11Version());
  +                }
  +            }
  +        }
  +        
  +    }//checkAttributeNames
  +    
  +    // fix namespaces
  +    // normalize attribute values
  +    // remove default attributes
  +    //REVISIT: this function does not do only namespace fix but other things like 
normalizeAttributeValue, remove default
  +    //attributes -- we should choose appropriate name.
  +    
       protected final void namespaceFixUp (ElementImpl element, AttributeMap 
attributes){
           if (DEBUG) {
               System.out.println("[ns-fixup] element:" +element.getNodeName()+
  @@ -582,6 +644,7 @@
                       if (value.equals(NamespaceContext.XMLNS_URI)) {
                           reportDOMError("No prefix other than 'xmlns' can be bound 
to 'http://www.w3.org/2000/xmlns/' namespace name", 
                                          DOMError.SEVERITY_ERROR, attr, null);
  +
                       } else {
                           // XML 1.0 Attribute value normalization
                           // value = normalizeAttributeValue(value, attr);
  
  
  

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

Reply via email to