Hi all,
Just catching up on recent changes and noticing the additions to the PSVI for XML Schema 1.1. I think we're going to need to revisit how inherited attributes are exposed. They're supposed to be a list of attribute information items and that is more than just a value and attribute declaration. Perhaps we should be using the full AttributePSVI to represent them. I also believe we should be consistent with the rest of the API which for collections returns immutable Lists instead of arrays (that can be corrupted by the user). Also need to be careful about introducing new dependencies into other layers. XNI has never had a dependency on the XML Schema API and I don't think it should. When we need a new schema specific interface for supporting new PSVI properties or a new schema component it really should be added to the XML Schema API (org.apache.xerces.xs.*). Thanks. Michael Glavassevich XML Parser Development IBM Toronto Lab E-mail: mrgla...@ca.ibm.com E-mail: mrgla...@apache.org muk...@apache.org wrote on 04/02/2011 12:46:50 AM: > svn commit: r1087961 - in /xerces/java/branches/xml-schema-1.1-dev/ > src/org/apache/xerces: dom/ impl/xs/ xni/ xs/ > > 04/02/2011 12:47 AM > > Author: mukulg > Date: Sat Apr 2 04:46:49 2011 > New Revision: 1087961 > > URL: http://svn.apache.org/viewvc?rev=1087961&view=rev > Log: > committing few improvements for inheritable attributes PSVI results. > > creating a new class (XMLAttribute) to store attribute declaration > and it's value to produce information for inherited attributes PSVI > results. i did not use XMLAttributes class for this purpose, since > it has lot of information that's unnecessary for this purpose, and > may require more lines-of-code by applications using the PSVI results. > > The inner class InheritableAttribute in XMLSchemaValidator is not > needed as a consequence of this change and is now deleted. > > Added: > xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/ > xni/XMLAttribute.java (with props) > 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/XSDTypeAlternativeValidator.java > xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/ > xs/ElementPSVI.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=1087961&r1=1087960&r2=1087961&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 Sat Apr 2 04:46:49 2011 > @@ -25,11 +25,11 @@ import java.io.ObjectOutputStream; > import org.apache.xerces.impl.dv.ValidatedInfo; > import org.apache.xerces.impl.xs.ElementPSVImpl; > import org.apache.xerces.impl.xs.util.StringListImpl; > +import org.apache.xerces.xni.XMLAttribute; > 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; > @@ -108,7 +108,7 @@ public class PSVIElementNSImpl extends E > protected XSModel fSchemaInformation = null; > > /** inherited attributes */ > - protected XSAttributeUse[] fInheritedAttributes = null; > + protected XMLAttribute[] fInheritedAttributes = null; > > // > // ElementPSVI methods > @@ -273,9 +273,9 @@ public class PSVIElementNSImpl extends E > /** > * Inherited attributes. > * > - * @return an array of inherited attribute, XSAttributeUse > components. null if no inherited attributes were found. > + * @return an array of inherited attributes. null if no > inherited attributes were found. > */ > - public XSAttributeUse[] getInheritedAttributes() { > + public XMLAttribute[] getInheritedAttributes() { > return fInheritedAttributes; > } > > > 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/apache/xerces/impl/xs/ElementPSVImpl.java? > rev=1087961&r1=1087960&r2=1087961&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 Sat Apr 2 04:46:49 2011 > @@ -19,11 +19,11 @@ package org.apache.xerces.impl.xs; > > import org.apache.xerces.impl.dv.ValidatedInfo; > import org.apache.xerces.impl.xs.util.StringListImpl; > +import org.apache.xerces.xni.XMLAttribute; > 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; > @@ -90,7 +90,7 @@ public class ElementPSVImpl implements E > protected boolean fIsConstant; > > /** inherited attributes **/ > - protected XSAttributeUse[] fInheritedAttributes = null; > + protected XMLAttribute[] fInheritedAttributes = null; > > public ElementPSVImpl() {} > > @@ -325,9 +325,9 @@ public class ElementPSVImpl implements E > /** > * Inherited attributes. > * > - * @return an array of inherited attribute, XSAttributeUse > components. null if no inherited attributes were found. > + * @return an array of inherited attributes. null if no > inherited attributes were found. > */ > - public XSAttributeUse[] getInheritedAttributes() { > + public XMLAttribute[] getInheritedAttributes() { > return fInheritedAttributes; > } > > > 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/apache/xerces/impl/xs/XMLSchemaValidator.java? > rev=1087961&r1=1087960&r2=1087961&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 Sat Apr 2 04:46:49 2011 > @@ -63,6 +63,7 @@ import org.apache.xerces.util.URI.Malfor > import org.apache.xerces.xni.Augmentations; > import org.apache.xerces.xni.NamespaceContext; > import org.apache.xerces.xni.QName; > +import org.apache.xerces.xni.XMLAttribute; > import org.apache.xerces.xni.XMLAttributes; > import org.apache.xerces.xni.XMLDocumentHandler; > import org.apache.xerces.xni.XMLLocator; > @@ -2420,7 +2421,7 @@ public class XMLSchemaValidator > } > > // inheritable attributes processing > - XSAttributeUse[] inheritedAttributesForPsvi = null; > + XMLAttribute[] inheritedAttributesForPsvi = null; > if (fSchemaVersion == Constants.SCHEMA_VERSION_1_1) { > fInhrAttrCountStack.push(fInheritableAttrList.size()); > inheritedAttributesForPsvi = getInheritedAttributesForPsvi (); > @@ -2688,7 +2689,7 @@ public class XMLSchemaValidator > fCurrentPSVI.fNotation = this.fNotation; > fCurrentPSVI.fValidationContext = this.fValidationRoot; > fCurrentPSVI.fNil = this.fNil; > - XSAttributeUse[] inheritedAttributesForPsvi = null; > + XMLAttribute[] inheritedAttributesForPsvi = null; > if (fInhrAttrCountStack.size() > 0) { > fInheritableAttrList.setSize(fInhrAttrCountStack.pop()); > inheritedAttributesForPsvi = getInheritedAttributesForPsvi(); > @@ -4898,7 +4899,7 @@ public class XMLSchemaValidator > XSAttributeDeclaration attrDecl = > (XSAttributeDeclaration) attrUse.getAttrDeclaration(); > String attrVal = attributes.getValue > (attrDecl.getNamespace(), attrDecl.getName()); > if (attrVal != null) { > - fInheritableAttrList.add(new > InheritableAttribute(attrUse, attrVal)); > + fInheritableAttrList.add(new XMLAttribute > (attrDecl, attrVal)); > } > } > } > @@ -4907,38 +4908,14 @@ public class XMLSchemaValidator > } // 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 > - > - /* > * Get inherited attributes for copying into an element PSVI. > */ > - private XSAttributeUse[] getInheritedAttributesForPsvi() { > - XSAttributeUse[] inheritedAttributes = null; > + private XMLAttribute[] getInheritedAttributesForPsvi() { > + XMLAttribute[] inheritedAttributes = null; > if (fInheritableAttrList.size() > 0) { > - inheritedAttributes = new XSAttributeUse > [fInheritableAttrList.size()]; > + inheritedAttributes = new XMLAttribute > [fInheritableAttrList.size()]; > for (int inhrAttrIdx = 0; inhrAttrIdx < > fInheritableAttrList.size(); inhrAttrIdx++) { > - inheritedAttributes[inhrAttrIdx] = > ((InheritableAttribute) fInheritableAttrList.get > (inhrAttrIdx)).getAttributeUse(); > + inheritedAttributes[inhrAttrIdx] = (XMLAttribute) > fInheritableAttrList.get(inhrAttrIdx); > } > } > return inheritedAttributes; > > 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/apache/xerces/impl/xs/ > XSDTypeAlternativeValidator.java?rev=1087961&r1=1087960&r2=1087961&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 Sat Apr 2 04:46:49 2011 > @@ -19,12 +19,12 @@ 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.XSTypeHelper; > import org.apache.xerces.util.XMLAttributesImpl; > import org.apache.xerces.xni.QName; > +import org.apache.xerces.xni.XMLAttribute; > import org.apache.xerces.xni.XMLAttributes; > import org.apache.xerces.xs.XSAttributeDeclaration; > import org.apache.xerces.xs.XSTypeDefinition; > @@ -96,13 +96,13 @@ public class XSDTypeAlternativeValidator > > // 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(); > + XMLAttribute inhAttr = (XMLAttribute) > inheritableAttrList.elementAt(elemIndx); > + XSAttributeDeclaration inhrAttrDecl = inhAttr.getAttrDecl(); > // 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()); > + ctaAttributes.addAttribute(attrQName, null, > inhAttr.getAttrValue()); > } > } > > > Added: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/ > xerces/xni/XMLAttribute.java > URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1. > 1-dev/src/org/apache/xerces/xni/XMLAttribute.java?rev=1087961&view=auto > ============================================================================== > --- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/ > xni/XMLAttribute.java (added) > +++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/ > xni/XMLAttribute.java Sat Apr 2 04:46:49 2011 > @@ -0,0 +1,54 @@ > +/* > + * Licensed to the Apache Software Foundation (ASF) under one or more > + * contributor license agreements. See the NOTICE file distributed with > + * this work for additional information regarding copyright ownership. > + * The ASF licenses this file to You under the Apache License, Version 2.0 > + * (the "License"); you may not use this file except in compliance with > + * the License. You may obtain a copy of the License at > + * > + * http://www.apache.org/licenses/LICENSE-2.0 > + * > + * Unless required by applicable law or agreed to in writing, software > + * distributed under the License is distributed on an "AS IS" BASIS, > + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. > + * See the License for the specific language governing permissions and > + * limitations under the License. > + */ > + > +package org.apache.xerces.xni; > + > +import org.apache.xerces.xs.XSAttributeDeclaration; > + > +/** > + * An object of this class stores a typed attribute information (an > attribute's value and it's XSModel declaration) > + * at runtime. This class is used for example to represent > inheritable attribute PSVI information. > + * > + * @author Mukul Gandhi IBM > + * @version $Id$ > + */ > +public class XMLAttribute { > + > + private XSAttributeDeclaration fAttrDecl = null; > + private String fAttrValue = null; > + > + // Class constructor > + public XMLAttribute(XSAttributeDeclaration attrDecl, String attrValue) { > + fAttrDecl = attrDecl; > + fAttrValue = attrValue; > + } > + > + /** > + * @return the fAttrDecl > + */ > + public XSAttributeDeclaration getAttrDecl() { > + return fAttrDecl; > + } > + > + /** > + * @return the fAttrValue > + */ > + public String getAttrValue() { > + return fAttrValue; > + } > + > +} // class XMLAttribute > > Propchange: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/ > xerces/xni/XMLAttribute.java > ------------------------------------------------------------------------------ > svn:eol-style = native > > Propchange: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/ > xerces/xni/XMLAttribute.java > ------------------------------------------------------------------------------ > svn:keywords = Author Date Id Revision > > 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=1087961&r1=1087960&r2=1087961&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 Sat Apr 2 04:46:49 2011 > @@ -17,6 +17,8 @@ > > package org.apache.xerces.xs; > > +import org.apache.xerces.xni.XMLAttribute; > + > /** > * Represents a PSVI item for one element information item. > */ > @@ -47,6 +49,6 @@ public interface ElementPSVI extends Ite > /** > * [inherited attributes]: inherited attributes. > */ > - public XSAttributeUse[] getInheritedAttributes(); > + public XMLAttribute[] getInheritedAttributes(); > > } > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: commits-unsubscr...@xerces.apache.org > For additional commands, e-mail: commits-h...@xerces.apache.org