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);