}
}
return;
}
XSObjectList attrUses = attrGrp.getAttributeUses();
int useCount = attrUses.getLength();
XSWildcardDecl attrWildcard = attrGrp.fAttributeWC;
// whether we have seen a Wildcard ID.
String wildcardIDName = null;
// for each present attribute
int attCount = attributes.getLength();
// Element Locally Valid (Complex Type)
// 3 For each attribute information item in the element information item's [attributes] excepting those whose [namespace name] is identical to http://www.w3.org/2001/XMLSchema-instance and whose [local name] is one of type, nil, schemaLocation or noNamespaceSchemaLocation, the appropriate case among the following must be true:
// get the corresponding attribute decl
for (int index = 0; index < attCount; index++) {
attributes.getName(index, fTempQName);
if (DEBUG) {
System.out.println("==>process attribute: "+fTempQName);
}
// get attribute PSVI
attrPSVI = (AttributePSVImpl)attributes.getAugmentations(index).getItem(Constants.ATTRIBUTE_PSVI);
// for the 4 xsi attributes, get appropriate decl, and validate
if (fTempQName.uri == SchemaSymbols.URI_XSI) {
XSAttributeDecl attrDecl = null;
if (fTempQName.localpart == SchemaSymbols.XSI_SCHEMALOCATION)
attrDecl = SchemaGrammar.SG_XSI.getGlobalAttributeDecl(SchemaSymbols.XSI_SCHEMALOCATION);
else if (fTempQName.localpart == SchemaSymbols.XSI_NONAMESPACESCHEMALOCATION)
attrDecl = SchemaGrammar.SG_XSI.getGlobalAttributeDecl(SchemaSymbols.XSI_NONAMESPACESCHEMALOCATION);
else if (fTempQName.localpart == SchemaSymbols.XSI_NIL)
attrDecl = SchemaGrammar.SG_XSI.getGlobalAttributeDecl(SchemaSymbols.XSI_NIL);
else if (fTempQName.localpart == SchemaSymbols.XSI_TYPE)
attrDecl = SchemaGrammar.SG_XSI.getGlobalAttributeDecl(SchemaSymbols.XSI_TYPE);
if (attrDecl != null) {
processOneAttribute(element, attributes.getValue(index),
attrDecl, null, attrPSVI);
continue;
}
}
// for namespace attributes, no_validation/unknow_validity
if (fTempQName.rawname == XMLSymbols.PREFIX_XMLNS || fTempQName.rawname.startsWith("xmlns:")) {
continue;
}
// it's not xmlns, and not xsi, then we need to find a decl for it
XSAttributeUseImpl currUse = null, oneUse;
for (int i = 0; i < useCount; i++) {
oneUse = (XSAttributeUseImpl)attrUses.getItem(i);
if (oneUse.fAttrDecl.fName == fTempQName.localpart &&
oneUse.fAttrDecl.fTargetNamespace == fTempQName.uri) {
currUse = oneUse;
break;
}