diff --git a/src/xercesc/internal/IGXMLScanner2.cpp b/src/xercesc/internal/IGXMLScanner2.cpp index 3d39d594d59a39fa0635cfce22838c8067c92531..9b1a22adee1d0489016c50f44e22be6c8319f7ed 100644 --- a/src/xercesc/internal/IGXMLScanner2.cpp +++ b/src/xercesc/internal/IGXMLScanner2.cpp @@ -542,10 +542,14 @@ IGXMLScanner::buildAttList(const RefVectorOf<KVStringPair>& providedAttrs , false , elemDecl ); - attrValidator = ((SchemaValidator*)fValidator)->getMostRecentAttrValidator(); - if(getPSVIHandler() && fGrammarType == Grammar::SchemaGrammarType + + if(fGrammarType == Grammar::SchemaGrammarType) + { + attrValidator = ((SchemaValidator*)fValidator)->getMostRecentAttrValidator(); + if (getPSVIHandler() && ((SchemaValidator *)fValidator)->getErrorOccurred()) - attrValid = PSVIItem::VALIDITY_INVALID; + attrValid = PSVIItem::VALIDITY_INVALID; + } } else if(fGrammarType == Grammar::SchemaGrammarType) attrValidator = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_ANYSIMPLETYPE);