[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xerces-cvs
Subject:    svn commit: r1086271 - in
From:       mukulg () apache ! org
Date:       2011-03-28 15:27:49
Message-ID: 20110328152749.D9DBF23888DD () eris ! apache ! org
[Download RAW message or body]

Author: mukulg
Date: Mon Mar 28 15:27:49 2011
New Revision: 1086271

URL: http://svn.apache.org/viewvc?rev=1086271&view=rev
Log:
committing few improvements to inheritable attributes processing. now doing some of \
its computations in XMLSchemaValidator instead of XSDTypeAlternativeValidator, which \
helps us in setting the [inherited attributes] PSVI results for element information \
items (ref http://www.w3.org/TR/xmlschema11-1/#Inherited_attributes, PSVI \
Contributions for element information items -> [inherited attributes]). inherited \
attributes processing in CTA behave as earlier, but codebase of that has changed \
slightly.

as a consequence of this change, PSVI results for element information items -> \
[inherited attributes] is now implemented which seems to be working fine.

Modified:
    xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/dom/PSVIElementNSImpl.java
  xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/ElementPSVImpl.java
  xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java
  xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XSAttributeUseImpl.java
  xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XSDTypeAlternativeValidator.java
  xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/xs/ElementPSVI.java
    xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/xs/XSAttributeUse.java


Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/dom/PSVIElementNSImpl.java
                
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/dom/PSVIElementNSImpl.java?rev=1086271&r1=1086270&r2=1086271&view=diff
 ==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/dom/PSVIElementNSImpl.java \
                (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/dom/PSVIElementNSImpl.java \
Mon Mar 28 15:27:49 2011 @@ -29,6 +29,7 @@ import org.apache.xerces.xs.ElementPSVI;
 import org.apache.xerces.xs.ItemPSVI;
 import org.apache.xerces.xs.ShortList;
 import org.apache.xerces.xs.StringList;
+import org.apache.xerces.xs.XSAttributeUse;
 import org.apache.xerces.xs.XSComplexTypeDefinition;
 import org.apache.xerces.xs.XSElementDeclaration;
 import org.apache.xerces.xs.XSModel;
@@ -106,6 +107,9 @@ public class PSVIElementNSImpl extends E
     /** the schema information property */
     protected XSModel fSchemaInformation = null;
     
+    /** inherited attributes **/
+    protected XSAttributeUse[] fInheritedAttributes = null; 
+    
     //
     // ElementPSVI methods
     //
@@ -267,6 +271,15 @@ public class PSVIElementNSImpl extends E
     }
     
     /**
+     * Inherited attributes.
+     * 
+     * @return  an array of inherited attribute, XSAttributeUse components. null if \
no inherited attributes were found. +     */
+    public XSAttributeUse[] getInheritedAttributes() {
+        return fInheritedAttributes; 
+     }
+    
+    /**
      * Copy PSVI properties from another psvi item.
      * 
      * @param elem  the source of element PSVI items
@@ -291,6 +304,7 @@ public class PSVIElementNSImpl extends E
         }
         this.fSpecified = elem.getIsSchemaSpecified();
         this.fNil = elem.getNil();
+        this.fInheritedAttributes = elem.getInheritedAttributes(); 
     }
 
     /* (non-Javadoc)

Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/ElementPSVImpl.java
                
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apac \
he/xerces/impl/xs/ElementPSVImpl.java?rev=1086271&r1=1086270&r2=1086271&view=diff \
                ==============================================================================
                
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/ElementPSVImpl.java \
                (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/ElementPSVImpl.java \
Mon Mar 28 15:27:49 2011 @@ -23,6 +23,7 @@ import org.apache.xerces.xs.ElementPSVI;
 import org.apache.xerces.xs.ItemPSVI;
 import org.apache.xerces.xs.ShortList;
 import org.apache.xerces.xs.StringList;
+import org.apache.xerces.xs.XSAttributeUse;
 import org.apache.xerces.xs.XSElementDeclaration;
 import org.apache.xerces.xs.XSModel;
 import org.apache.xerces.xs.XSNotationDeclaration;
@@ -88,6 +89,9 @@ public class ElementPSVImpl implements E
     /** true if this object is immutable **/
     protected boolean fIsConstant;
     
+    /** inherited attributes **/
+    protected XSAttributeUse[] fInheritedAttributes = null; 
+    
     public ElementPSVImpl() {}
     
     public ElementPSVImpl(boolean isConstant, ElementPSVI elementPSVI) {
@@ -100,6 +104,7 @@ public class ElementPSVImpl implements E
         fValidationAttempted = elementPSVI.getValidationAttempted();
         fValidity = elementPSVI.getValidity();
         fValidationContext = elementPSVI.getValidationContext();
+        fInheritedAttributes = elementPSVI.getInheritedAttributes();
         if (elementPSVI instanceof ElementPSVImpl) {
             final ElementPSVImpl elementPSVIImpl = (ElementPSVImpl) elementPSVI;
             fErrors = (elementPSVIImpl.fErrors != null) ?
@@ -318,6 +323,15 @@ public class ElementPSVImpl implements E
     }
     
     /**
+     * Inherited attributes.
+     * 
+     * @return  an array of inherited attribute, XSAttributeUse components. null if \
no inherited attributes were found. +     */
+    public XSAttributeUse[] getInheritedAttributes() {
+       return fInheritedAttributes; 
+    }
+    
+    /**
      * Reset() should be called in validator startElement(..) method.
      */
     public void reset() {
@@ -331,6 +345,7 @@ public class ElementPSVImpl implements E
         fErrors = null;
         fValidationContext = null;
         fValue.reset();
+        fInheritedAttributes = null;
     }
     
     public void copySchemaInformationTo(ElementPSVImpl target) {

Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java
                
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apac \
he/xerces/impl/xs/XMLSchemaValidator.java?rev=1086271&r1=1086270&r2=1086271&view=diff \
                ==============================================================================
                
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java \
                (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java \
Mon Mar 28 15:27:49 2011 @@ -51,6 +51,7 @@ import org.apache.xerces.impl.xs.identit
 import org.apache.xerces.impl.xs.models.CMBuilder;
 import org.apache.xerces.impl.xs.models.CMNodeFactory;
 import org.apache.xerces.impl.xs.models.XSCMValidator;
+import org.apache.xerces.impl.xs.util.XSObjectListImpl;
 import org.apache.xerces.impl.xs.util.XSTypeHelper;
 import org.apache.xerces.util.AugmentationsImpl;
 import org.apache.xerces.util.IntStack;
@@ -81,6 +82,8 @@ import org.apache.xerces.xs.AttributePSV
 import org.apache.xerces.xs.ElementPSVI;
 import org.apache.xerces.xs.ShortList;
 import org.apache.xerces.xs.StringList;
+import org.apache.xerces.xs.XSAttributeDeclaration;
+import org.apache.xerces.xs.XSAttributeUse;
 import org.apache.xerces.xs.XSConstants;
 import org.apache.xerces.xs.XSObjectList;
 import org.apache.xerces.xs.XSSimpleTypeDefinition;
@@ -1365,6 +1368,12 @@ public class XMLSchemaValidator
     
     // 'type alternative' validator subcomponent
     private XSDTypeAlternativeValidator fTypeAlternativeValidator = null;
+    
+    // a Vector list storing inheritable attributes
+    private Vector fInheritableAttrList = new Vector();
+    
+    // a Stack storing inheritable attribute count for the elements
+    private IntStack fInhrAttrCountStack = new IntStack();
 
     //
     // Constructors
@@ -2177,7 +2186,7 @@ public class XMLSchemaValidator
 
         //process type alternatives
         if (fTypeAlternativesChecking && fCurrentElemDecl != null) {
-           XSTypeDefinition currentType = \
fTypeAlternativeValidator.getCurrentType(fCurrentElemDecl, element, attributes);      \
 +           XSTypeDefinition currentType = \
fTypeAlternativeValidator.getCurrentType(fCurrentElemDecl, element, attributes, \
fInheritableAttrList);             if (currentType != null) {
                fCurrentType = currentType;    
            }
@@ -2403,9 +2412,19 @@ public class XMLSchemaValidator
             fIDContext.setCurrentScopeToParent();
         }
         
-        // delegate to 'type alternative' validator subcomponent
+        // inheritable attributes processing
+        XSAttributeUse[] inheritedAttributesPsvi = null; // for copying into the \
ElementPSVI  if (fSchemaVersion == Constants.SCHEMA_VERSION_1_1) {
-           fTypeAlternativeValidator.handleStartElement(fCurrentElemDecl, \
attributes); +            fInhrAttrCountStack.push(fInheritableAttrList.size());
+            if (fInheritableAttrList.size() > 0) {
+                inheritedAttributesPsvi = new \
XSAttributeUse[fInheritableAttrList.size()];  +                for (int inhrAttrIdx = \
0; inhrAttrIdx < fInheritableAttrList.size(); inhrAttrIdx++) { +                    \
inheritedAttributesPsvi[inhrAttrIdx] = ((InheritableAttribute) \
fInheritableAttrList.get(inhrAttrIdx)).getAttributeUse();   +                }
+            }
+            // find attributes among the attributes of the current element, which \
are declared inheritable and store them for later processing. +            // one of \
the uses of inherited attributes is in type alternatives processing. +            \
saveInheritableAttributes(fCurrentElemDecl, attributes);  }
 
         // call all active identity constraints
@@ -2428,6 +2447,10 @@ public class XMLSchemaValidator
             fCurrentPSVI.fNotation = fNotation;
             // PSVI: add nil
             fCurrentPSVI.fNil = fNil;
+            if (inheritedAttributesPsvi != null) {
+               // PSVI: add inherited attributes
+               fCurrentPSVI.fInheritedAttributes = inheritedAttributesPsvi;
+            }
         }
         
         // delegate to assertions validator subcomponent
@@ -2456,9 +2479,9 @@ public class XMLSchemaValidator
             System.out.println("==>handleEndElement:" + element);
         }
         
-        // delegate to 'type alternative' validator subcomponent 
-        if (fSchemaVersion == Constants.SCHEMA_VERSION_1_1) {
-            fTypeAlternativeValidator.handleEndElement();
+        // inheritable attributes processing
+        if (fSchemaVersion == Constants.SCHEMA_VERSION_1_1 && \
fInhrAttrCountStack.size() > 0) { +            \
fInheritableAttrList.setSize(fInhrAttrCountStack.pop());  }
         
         // if we are skipping, return
@@ -4864,4 +4887,53 @@ public class XMLSchemaValidator
         }
     } // extraCheckForSTUnionAsserts
     
+    /*
+     * For the current element being handled by the XML Schema validator, find all \
inheritable attributes for this element. +     * Save these inheritable attributes, \
into a global Vector list for later processing. +     */
+    private void saveInheritableAttributes(XSElementDecl currentElemDecl, \
XMLAttributes attributes) { +        
+        if (currentElemDecl != null && currentElemDecl.fType instanceof \
XSComplexTypeDecl) { +            XSComplexTypeDecl complexTypeDecl = \
(XSComplexTypeDecl) currentElemDecl.fType; +            XSObjectListImpl \
attributeUses = (XSObjectListImpl) complexTypeDecl.getAttributeUses(); +            \
// iterate all the attribute declarations of the complex type, for the current \
element +            for (int attrUsesIndx = 0; attrUsesIndx < \
attributeUses.getLength(); attrUsesIndx++) { +                XSAttributeUse attrUse \
= (XSAttributeUse) attributeUses.get(attrUsesIndx);                  +                \
if (attrUse.getInheritable()) {                    +                    // this is an \
inheritable attribute. copy this into an global Vector list. +                    \
XSAttributeDeclaration attrDecl = (XSAttributeDeclaration) \
attrUse.getAttrDeclaration(); +                    String attrVal = \
attributes.getValue(attrDecl.getNamespace(), attrDecl.getName()); +                   \
if (attrVal != null) { +                       fInheritableAttrList.add(new \
InheritableAttribute(attrUse, attrVal)); +                    }
+                }
+            }                      
+        }
+       
+    } // saveInheritableAttributes
+    
+    /*
+     * A class representing an inheritable attribute. An instance of this class is \
used as an intermediate storage, +     * for inheritable attribute information.
+     */
+    final class InheritableAttribute {       
+       
+        private final XSAttributeUse attrUse;
+        private final String value;
+
+        public InheritableAttribute(XSAttributeUse attrUse, String value) {
+            this.attrUse = attrUse;
+            this.value = value;
+        }
+
+        public XSAttributeUse getAttributeUse() {
+            return attrUse; 
+        }
+        
+        public String getValue() {
+            return value;
+        }
+       
+    } // class InheritableAttribute
+    
 } // class XMLSchemaValidator

Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XSAttributeUseImpl.java
                
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apac \
he/xerces/impl/xs/XSAttributeUseImpl.java?rev=1086271&r1=1086270&r2=1086271&view=diff \
                ==============================================================================
                
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XSAttributeUseImpl.java \
                (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XSAttributeUseImpl.java \
Mon Mar 28 15:27:49 2011 @@ -48,7 +48,7 @@ public class XSAttributeUseImpl implemen
     public ValidatedInfo fDefault = null;
     // optional annotation
     public XSObjectList fAnnotations = null;
-    
+    // inheritable attribute flag
     public boolean fInheritable = false;
     
     public void reset(){
@@ -155,6 +155,9 @@ public class XSAttributeUseImpl implemen
         return (fAnnotations != null) ? fAnnotations : XSObjectListImpl.EMPTY_LIST;
     }
     
+    /**
+     * Tells whether this attribute is declared inheritable.
+     */
     public boolean getInheritable() {
         return fInheritable;
     }

Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XSDTypeAlternativeValidator.java
                
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apac \
he/xerces/impl/xs/XSDTypeAlternativeValidator.java?rev=1086271&r1=1086270&r2=1086271&view=diff
 ==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XSDTypeAlternativeValidator.java \
                (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XSDTypeAlternativeValidator.java \
Mon Mar 28 15:27:49 2011 @@ -19,11 +19,10 @@ package org.apache.xerces.impl.xs;
 
 import java.util.Vector;
 
+import org.apache.xerces.impl.xs.XMLSchemaValidator.InheritableAttribute;
 import org.apache.xerces.impl.xs.alternative.Test;
 import org.apache.xerces.impl.xs.alternative.XSTypeAlternativeImpl;
-import org.apache.xerces.impl.xs.util.XSObjectListImpl;
 import org.apache.xerces.impl.xs.util.XSTypeHelper;
-import org.apache.xerces.util.IntStack;
 import org.apache.xerces.util.XMLAttributesImpl;
 import org.apache.xerces.xni.QName;
 import org.apache.xerces.xni.XMLAttributes;
@@ -39,50 +38,37 @@ import org.apache.xerces.xs.XSTypeDefini
  * @author Mukul Gandhi IBM
  * @version $Id$
  */
-public class XSDTypeAlternativeValidator {
-    
-    // a Vector list storing inheritable attributes
-    private Vector fInheritableAttrList = new Vector();
-    
-    // a Stack storing inheritable attribute count for the elements
-    private IntStack fInhrAttrCountStack = new IntStack();
-    
-    // temporary qname
-    private final QName fTempQName = new QName();
+public class XSDTypeAlternativeValidator {          
     
     
     /*
      * Class constructor.
      */
     public XSDTypeAlternativeValidator() {
-      // NO OP ...
+       // NO OP ...
     }
     
     
     /*
      * Determine the schema type applicable for an element declaration, using type \
                alternative information.
      */
-    public XSTypeDefinition getCurrentType(XSElementDecl currentElemDecl, QName \
element, XMLAttributes attributes) { +    public XSTypeDefinition \
getCurrentType(XSElementDecl currentElemDecl, QName element, XMLAttributes \
attributes, Vector inheritableAttrList) {  
         XSTypeDefinition currentType = null;        
-        boolean typeSelected = false;
-        
-        XSTypeAlternativeImpl[] typeAlternatives = \
currentElemDecl.getTypeAlternatives();  
+        XSTypeAlternativeImpl[] typeAlternatives = \
currentElemDecl.getTypeAlternatives();          if (typeAlternatives != null) {       \
                
             // Construct a list of attributes needed for CTA processing. This \
                includes inherited attributes as well.
-            XMLAttributes ctaAttributes = getAttributesForCTA(attributes);
-            
+            XMLAttributes ctaAttributes = getAttributesForCTA(attributes, \
                inheritableAttrList);
             for (int typeAltIdx = 0; typeAltIdx < typeAlternatives.length; \
                typeAltIdx++) {
-                Test test = typeAlternatives[typeAltIdx].getTest();
-                if (test != null && test.evaluateTest(element, ctaAttributes)) {
+                Test ctaTest = typeAlternatives[typeAltIdx].getTest();
+                if (ctaTest != null && ctaTest.evaluateTest(element, ctaAttributes)) \
                {
                     currentType = typeAlternatives[typeAltIdx].getTypeDefinition();
-                    typeSelected = true;
                     break;
                 }
             }
-            //if a type is not selected try to assign the default type
-            if (!typeSelected) {
+            //if a type is not selected by xs:alternative components, try to assign \
the default type +            if (currentType == null) {
                 XSTypeAlternativeImpl defType = \
currentElemDecl.getDefaultTypeDefinition();  if (defType != null) {
                     currentType = defType.getTypeDefinition();
@@ -94,113 +80,46 @@ public class XSDTypeAlternativeValidator
         
     } // getCurrentType
     
-    
-    /*
-     * Type alternative processing interface during the XNI event \
                'handleStartElement' in XMLSchemaValidator. 
-     */
-    public void handleStartElement(XSElementDecl currentElemDecl, XMLAttributes \
                attributes) {
-        
-        fInhrAttrCountStack.push(fInheritableAttrList.size());
-        
-        // Find attributes among the attributes of the current element, which are \
                declared inheritable.
-        // The inheritable attributes will later be used for processing "type \
                alternative" instruction.
-        if (attributes.getLength() > 0) {
-           // get inheritable attributes, only if an element has a complex type \
                (i.e, has > 0 attributes).
-           saveInheritableAttributes(currentElemDecl, attributes);
-        }
-        
-    } // handleStartElement
-    
-    
-    /*
-     * Type alternative processing interface during the XNI event 'handleEndElement' \
                in XMLSchemaValidator. 
-     */
-    public void handleEndElement() {
-        
-        // modify the Vector list 'fInheritableAttrList' and pop the stack, \
                'fInhrAttrCountStack', to reflect
-        // inheritable attributes processing.
-        if (fInhrAttrCountStack.size() > 0) {
-            fInheritableAttrList.setSize(fInhrAttrCountStack.pop());
-        }
-        
-    } // handleEndElement
-    
 
     /*
      * Construct a list of attributes, needed for CTA processing. This includes \
                inherited attributes as well.  
      */
-    private XMLAttributes getAttributesForCTA(XMLAttributes attributes) {
+    private XMLAttributes getAttributesForCTA(XMLAttributes attributes, Vector \
inheritableAttrList) {  
         // copy attributes from the original list of attributes
         XMLAttributes ctaAttributes = new XMLAttributesImpl();
         for (int attrIndx = 0; attrIndx < attributes.getLength(); attrIndx++) {
-            QName qName = new QName();
-            attributes.getName(attrIndx, qName);
-            ctaAttributes.addAttribute(qName, attributes.getType(attrIndx), \
attributes.getValue(attrIndx));    +            QName attrQName = new QName();
+            attributes.getName(attrIndx, attrQName);
+            ctaAttributes.addAttribute(attrQName, attributes.getType(attrIndx), \
attributes.getValue(attrIndx));     }
 
-        // Traverse up the XML tree, to find inheritable attributes. Attributes only \
                from the nearest ancestor,
-        // are added to the list (since there is recursive inclusion of inheritable \
                attributes in an XML tree).
-        for (int elemIndx = fInheritableAttrList.size() - 1; elemIndx > -1; \
                elemIndx--) {        
-            InheritableAttribute inhAttr = (InheritableAttribute) \
                fInheritableAttrList.elementAt(elemIndx);
-            // if an inheritable attribute doesn't already exist in the attributes \
                list, add it to the list
-            if (!attributeExists(ctaAttributes, inhAttr)) {
-                String rawName = "".equals(inhAttr.getPrefix()) ? \
                inhAttr.getLocalName() : inhAttr.getPrefix() + ":" + \
                inhAttr.getLocalName(); 
-                fTempQName.setValues(inhAttr.getPrefix(), inhAttr.getLocalName(), \
                rawName, inhAttr.getUri());
-                ctaAttributes.addAttribute(fTempQName, inhAttr.getType(), \
inhAttr.getValue()); +        // Add inherited attributes to the CTA attributes list
+        for (int elemIndx = inheritableAttrList.size() - 1; elemIndx > -1; \
elemIndx--) {         +            InheritableAttribute inhAttr = \
(InheritableAttribute) inheritableAttrList.elementAt(elemIndx); +            \
XSAttributeDeclaration inhrAttrDecl = inhAttr.getAttributeUse().getAttrDeclaration(); \
+            // if an inherited attribute is not overridden by the current element, \
add it to the CTA attributes list +            if \
(!isInheritedAttributeOverridden(ctaAttributes, inhrAttrDecl)) {                 +    \
QName attrQName = new QName(); +                attrQName.setValues(null, \
inhrAttrDecl.getName(), inhrAttrDecl.getName(), inhrAttrDecl.getNamespace()); +       \
ctaAttributes.addAttribute(attrQName, null, inhAttr.getValue());  }
         }
 
         return ctaAttributes;
       
     } // getAttributesForCTA
-    
-    
-    /*
-     * For the current element being handled by the Schema validator, find all \
                inheritable attributes for this element.
-     * Save these inheritable attributes, to a global Vector list.
-     */
-    private void saveInheritableAttributes(XSElementDecl currentElemDecl, \
                XMLAttributes attributes) {
-       
-        if (currentElemDecl != null && currentElemDecl.fType instanceof \
                XSComplexTypeDecl) {
-            XSComplexTypeDecl currentComplexType = (XSComplexTypeDecl) \
                currentElemDecl.fType;
-            XSObjectListImpl attributeUses = (XSObjectListImpl) \
                currentComplexType.getAttributeUses();           
-
-            // iterate all the attributes, being passed to this method        
-            for (int attrIndx = 0; attrIndx < attributes.getLength(); attrIndx++) {
-                String attrName = attributes.getLocalName(attrIndx);
-                String attrUri = attributes.getURI(attrIndx);            
-                // iterate all the attribute declarations of a complex type, for the \
                current element
-                for (int attrUsesIndx = 0; attrUsesIndx < attributeUses.getLength(); \
                attrUsesIndx++) {
-                    XSAttributeUseImpl attrUseImpl = (XSAttributeUseImpl) \
                attributeUses.get(attrUsesIndx);
-                    XSAttributeDeclaration attrDecl = \
                attrUseImpl.getAttrDeclaration();              
-                    // the current element, has an inheritable attribute
-                    if (attrName.equals(attrDecl.getName()) && \
XSTypeHelper.isURIEqual(attrUri, attrDecl.getNamespace()) && \
                attrUseImpl.getInheritable()) {                   
-                        InheritableAttribute inhrAttr = new \
                InheritableAttribute(attributes.getLocalName(attrIndx),
-                                                                                 \
                attributes.getPrefix(attrIndx),
-                                                                                 \
                attributes.getURI(attrIndx),
-                                                                                 \
                attributes.getValue(attrIndx),
-                                                                                 \
                attributes.getType(attrIndx)) ;
-                        fInheritableAttrList.add(inhrAttr);                   
-                    }
-                }
-            }          
-        }
-       
-    } // saveInheritableAttributes
-    
+
     
     /*
-     * Check if an inheritable attribute, exists in the attributes list.
+     * Check if an inherited attribute already exists in the current attributes \
                list.
      */
-    private boolean attributeExists(XMLAttributes attributes, InheritableAttribute \
inhAttr) { +    private boolean isInheritedAttributeOverridden(XMLAttributes \
attributes, XSAttributeDeclaration inhrAttrDecl) {  
         boolean attrExists = false;
 
-        for (int attrIndx = 0; attrIndx < attributes.getLength(); attrIndx++) {
-            String localName = attributes.getLocalName(attrIndx);
-            String uri = attributes.getURI(attrIndx);          
-            if (localName.equals(inhAttr.getLocalName()) && \
XSTypeHelper.isURIEqual(uri, inhAttr.getUri())) {               +        for (int \
attrIndx = 0; attrIndx < attributes.getLength(); attrIndx++) {         +            \
if ((attributes.getLocalName(attrIndx)).equals(inhrAttrDecl.getName()) && \
XSTypeHelper.isURIEqual(attributes.getURI(attrIndx), inhrAttrDecl.getNamespace())) {  \
  attrExists = true;
                 break;
             }
@@ -208,49 +127,6 @@ public class XSDTypeAlternativeValidator
 
         return attrExists;
       
-    } // attributeExists
-    
-    
-    /*
-     * A class representing an inheritable attribute. An instance of this class is \
                used as an intermediate storage,
-     * for inheritable attribute information.
-     */
-    final class InheritableAttribute {       
-       
-        private final String localName;
-        private final String prefix;
-        private final String uri;
-        private final String value;
-        private final String type;
-
-        public InheritableAttribute(String localName, String prefix, String uri, \
                String value, String type) {
-            this.localName = localName;
-            this.prefix = prefix;
-            this.uri = uri;
-            this.value = value;
-            this.type = type;
-        }
-
-        public String getLocalName() {
-            return localName;
-        }
-
-        public String getPrefix() {
-            return prefix;
-        }
-
-        public String getUri() {
-            return uri;
-        }
-
-        public String getValue() {
-            return value;
-        }
-
-        public String getType() {
-            return type; 
-        }
-       
-    } // class InheritableAttribute
+    } // isInheritedAttributeOverridden
     
 } // class XSDTypeAlternativeValidator

Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/xs/ElementPSVI.java
                
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/xs/ElementPSVI.java?rev=1086271&r1=1086270&r2=1086271&view=diff
 ==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/xs/ElementPSVI.java \
                (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/xs/ElementPSVI.java \
Mon Mar 28 15:27:49 2011 @@ -43,5 +43,10 @@ public interface ElementPSVI extends Ite
      * validation root, <code>null</code> otherwise. 
      */
     public XSModel getSchemaInformation();
+    
+    /**
+     * [inherited attributes]: inherited attributes.
+     */
+    public XSAttributeUse[] getInheritedAttributes();
 
 }

Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/xs/XSAttributeUse.java
                
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/xs/XSAttributeUse.java?rev=1086271&r1=1086270&r2=1086271&view=diff
 ==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/xs/XSAttributeUse.java \
                (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/xs/XSAttributeUse.java \
Mon Mar 28 15:27:49 2011 @@ -100,5 +100,8 @@ public interface XSAttributeUse extends 
      */
     public XSObjectList getAnnotations();
     
+    /**
+     * Tells whether this attribute is declared inheritable.
+     */
     public boolean getInheritable(); 
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic