Hi,
Please find attached patch for class XSDAbstractTraverser.
Modified method traverseAttrsAndAttrGrps().
Cheers,
Rahul.
Sun Microsystems, Inc.
XSDAbstractTraverser.java
Index: XSDAbstractTraverser.java
===================================================================
RCS file:
/home/cvspublic/xml-xerces/java/src/org/apache/xerces/impl/v2/XSDAbstractTraverser.java,v
retrieving revision 1.21
diff -u -w -r1.21 XSDAbstractTraverser.java
--- XSDAbstractTraverser.java 2001/10/02 18:43:03 1.21
+++ XSDAbstractTraverser.java 2001/10/04 08:44:05
@@ -73,6 +73,7 @@
* a unified way to initialize these data.
*
* @author Elena Litani, IBM
+ * @author Rahul Srivastava, Sun Microsystems Inc.
*
* @version $Id: XSDAbstractTraverser.java,v 1.21 2001/10/02 18:43:03 neilg Exp $
*/
@@ -182,10 +183,30 @@
tempAttrGrp = fSchemaHandler.fAttributeGroupTraverser.traverseLocal(
child, schemaDoc, grammar);
XSAttributeUse[] attrUseS = tempAttrGrp.getAttributeUses();
+ XSAttributeUse existingAttrUse = null;
for (int i=0; i<attrUseS.length; i++) {
+ existingAttrUse =
+attrGrp.getAttributeUse(attrUseS[i].fAttrDecl.fTargetNamespace,
+
+attrUseS[i].fAttrDecl.fName);
+ if (existingAttrUse == null) {
attrGrp.addAttributeUse(attrUseS[i]);
}
+ //REVISIT: perform union of attribute use.
+ else {
+ reportGenericSchemaError("Duplicate attribute found");
}
+ }
+
+ if (tempAttrGrp.fAttributeWC != null) {
+ if (attrGrp.fAttributeWC == null) {
+ attrGrp.fAttributeWC = tempAttrGrp.fAttributeWC;
+ }
+ // perform intersection of attribute wildcard
+ else {
+ attrGrp.fAttributeWC = attrGrp.fAttributeWC.
+
+performIntersectionWith(tempAttrGrp.fAttributeWC);
+ }
+ }
+ }
else
break;
} // for
@@ -193,8 +214,16 @@
if (child != null) {
childName = child.getLocalName();
if (childName.equals(SchemaSymbols.ELT_ANYATTRIBUTE)) {
- XSWildcardDecl tempAttrWC =
fSchemaHandler.fWildCardTraverser.traverseAnyAttribute(child, schemaDoc, grammar);
+ XSWildcardDecl tempAttrWC = fSchemaHandler.fWildCardTraverser.
+ traverseAnyAttribute(child, schemaDoc,
+grammar);
+ if (attrGrp.fAttributeWC == null) {
attrGrp.fAttributeWC = tempAttrWC;
+ }
+ // perform intersection of attribute wildcard
+ else {
+ attrGrp.fAttributeWC = attrGrp.fAttributeWC.
+ performIntersectionWith(tempAttrWC);
+ }
child = DOMUtil.getNextSiblingElement(child);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]