peiyongz 2003/11/12 12:35:32 Modified: c/src/xercesc/validators/schema GeneralAttributeCheck.cpp GeneralAttributeCheck.hpp SchemaGrammar.cpp SchemaGrammar.hpp SchemaValidator.cpp TraverseSchema.cpp Log: Stateless Grammar: ValidationContext Revision Changes Path 1.16 +8 -6 xml-xerces/c/src/xercesc/validators/schema/GeneralAttributeCheck.cpp Index: GeneralAttributeCheck.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/GeneralAttributeCheck.cpp,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- GeneralAttributeCheck.cpp 20 Oct 2003 15:57:22 -0000 1.15 +++ GeneralAttributeCheck.cpp 12 Nov 2003 20:35:31 -0000 1.16 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.16 2003/11/12 20:35:31 peiyongz + * Stateless Grammar: ValidationContext + * * Revision 1.15 2003/10/20 15:57:22 knoaman * Fix multithreading problem. * @@ -225,7 +228,7 @@ // --------------------------------------------------------------------------- GeneralAttributeCheck::GeneralAttributeCheck(MemoryManager* const manager) : fMemoryManager(manager) - , fIDRefList(0) + , fValidationContext(0) , fIDValidator(manager) { mapElements(); @@ -417,7 +420,7 @@ const XMLCh* attrVal = attribute->getNodeValue(); try { - dv->validate(attrVal); + dv->validate(attrVal, fValidationContext); } catch(const XMLException& excep) { schema->reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::DisplayErrorMessage, excep.getMessage()); @@ -550,17 +553,16 @@ dv = fAnyURIDV; break; case DV_ID: - if (fIDRefList) { - + if (fValidationContext) + { dv = &fIDValidator; - ((IDDatatypeValidator*) dv)->setIDRefList(fIDRefList); } break; } if (dv) { try { - dv->validate(attValue); + dv->validate(attValue, fValidationContext); } catch(const XMLException& excep) { schema->reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::DisplayErrorMessage, excep.getMessage()); 1.10 +13 -3 xml-xerces/c/src/xercesc/validators/schema/GeneralAttributeCheck.hpp Index: GeneralAttributeCheck.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/GeneralAttributeCheck.hpp,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- GeneralAttributeCheck.hpp 16 May 2003 21:43:21 -0000 1.9 +++ GeneralAttributeCheck.hpp 12 Nov 2003 20:35:31 -0000 1.10 @@ -72,6 +72,7 @@ #include <xercesc/util/RefHashTableOf.hpp> #include <xercesc/util/ValueHashTableOf.hpp> #include <xercesc/validators/datatype/IDDatatypeValidator.hpp> +#include <xercesc/framework/ValidationContext.hpp> XERCES_CPP_NAMESPACE_BEGIN @@ -228,8 +229,12 @@ // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- + + //deprecated void setIDRefList(RefHashTableOf<XMLRefInfo>* const refList); + inline void setValidationContext(ValidationContext* const); + // ----------------------------------------------------------------------- // Validation methods // ----------------------------------------------------------------------- @@ -284,7 +289,7 @@ static unsigned short fgElemAttTable[E_Count][A_Count]; static const XMLCh* fAttNames[A_Count]; MemoryManager* fMemoryManager; - RefHashTableOf<XMLRefInfo>* fIDRefList; + ValidationContext* fValidationContext; IDDatatypeValidator fIDValidator; }; @@ -301,10 +306,15 @@ // --------------------------------------------------------------------------- // GeneralAttributeCheck: Setter methods // --------------------------------------------------------------------------- +inline void GeneralAttributeCheck::setValidationContext(ValidationContext* const newValidationContext) +{ + fValidationContext = newValidationContext; +} + inline void GeneralAttributeCheck::setIDRefList(RefHashTableOf<XMLRefInfo>* const refList) { - fIDRefList = refList; + fValidationContext->setIdRefList(refList); } XERCES_CPP_NAMESPACE_END 1.17 +9 -8 xml-xerces/c/src/xercesc/validators/schema/SchemaGrammar.cpp Index: SchemaGrammar.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/SchemaGrammar.cpp,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- SchemaGrammar.cpp 11 Nov 2003 22:48:13 -0000 1.16 +++ SchemaGrammar.cpp 12 Nov 2003 20:35:31 -0000 1.17 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.17 2003/11/12 20:35:31 peiyongz + * Stateless Grammar: ValidationContext + * * Revision 1.16 2003/11/11 22:48:13 knoaman * Serialization of XSAnnotation. * @@ -156,6 +159,7 @@ #include <xercesc/framework/psvi/XSAnnotation.hpp> #include <xercesc/internal/XTemplateSerializer.hpp> +#include <xercesc/internal/ValidationContextImpl.hpp> XERCES_CPP_NAMESPACE_BEGIN @@ -174,7 +178,7 @@ , fAttGroupInfoRegistry(0) , fNamespaceScope(0) , fValidSubstitutionGroups(0) - , fIDRefList(0) + , fValidationContext(0) , fMemoryManager(manager) , fValidated(false) , fDatatypeRegistry(manager) @@ -195,7 +199,7 @@ // fElemNonDeclPool = new (fMemoryManager) RefHash3KeysIdPool<SchemaElementDecl>(29, true, 128, fMemoryManager); fGroupElemDeclPool = new (fMemoryManager) RefHash3KeysIdPool<SchemaElementDecl>(109, false, 128, fMemoryManager); fNotationDeclPool = new (fMemoryManager) NameIdPool<XMLNotationDecl>(109, 128, fMemoryManager); - fIDRefList = new (fMemoryManager) RefHashTableOf<XMLRefInfo>(29, fMemoryManager); + fValidationContext = new (fMemoryManager) ValidationContextImpl(fMemoryManager); fDatatypeRegistry.expandRegistryToFullSchemaSet(); //REVISIT: use grammarPool to create @@ -327,7 +331,7 @@ delete fAttGroupInfoRegistry; delete fNamespaceScope; delete fValidSubstitutionGroups; - delete fIDRefList; + delete fValidationContext; delete fGramDesc; delete fAnnotations; } @@ -373,7 +377,8 @@ { /*** - * don't serialize NamespaceScope* fNamespaceScope; + * don't serialize NamespaceScope* fNamespaceScope; + * ValidationContext* fValidationContext; ***/ Grammar::serialize(serEng); @@ -414,8 +419,6 @@ XTemplateSerializer::storeObject(fComplexTypeRegistry, serEng); XTemplateSerializer::storeObject(fGroupInfoRegistry, serEng); XTemplateSerializer::storeObject(fAttGroupInfoRegistry, serEng); - //fIDRefList todo: tobe removed - XTemplateSerializer::storeObject(fIDRefList, serEng); /*** * Serialize RefHash2KeysTableOf<ElemVector>* fValidSubstitutionGroups; @@ -467,8 +470,6 @@ XTemplateSerializer::loadObject(&fComplexTypeRegistry, 29, true, serEng); XTemplateSerializer::loadObject(&fGroupInfoRegistry, 29, true, serEng); XTemplateSerializer::loadObject(&fAttGroupInfoRegistry, 29, true, serEng); - //todo: fIDRefList to be removed - XTemplateSerializer::loadObject(&fIDRefList, 29, true, serEng); /*** * Deserialize RefHash2KeysTableOf<ElemVector>* fValidSubstitutionGroups; 1.12 +15 -2 xml-xerces/c/src/xercesc/validators/schema/SchemaGrammar.hpp Index: SchemaGrammar.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/SchemaGrammar.hpp,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- SchemaGrammar.hpp 6 Nov 2003 19:28:11 -0000 1.11 +++ SchemaGrammar.hpp 12 Nov 2003 20:35:31 -0000 1.12 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.12 2003/11/12 20:35:31 peiyongz + * Stateless Grammar: ValidationContext + * * Revision 1.11 2003/11/06 19:28:11 knoaman * PSVI support for annotations. * @@ -146,6 +149,7 @@ #include <xercesc/validators/datatype/IDDatatypeValidator.hpp> #include <xercesc/validators/datatype/DatatypeValidatorFactory.hpp> #include <xercesc/framework/XMLSchemaDescription.hpp> +#include <xercesc/framework/ValidationContext.hpp> XERCES_CPP_NAMESPACE_BEGIN @@ -283,8 +287,12 @@ DatatypeValidatorFactory* getDatatypeRegistry(); NamespaceScope* getNamespaceScope() const; RefHash2KeysTableOf<ElemVector>* getValidSubstitutionGroups() const; + + //deprecated RefHashTableOf<XMLRefInfo>* getIDRefList() const; + ValidationContext* getValidationContext() const; + // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- @@ -424,7 +432,7 @@ RefHashTableOf<XercesAttGroupInfo>* fAttGroupInfoRegistry; NamespaceScope* fNamespaceScope; RefHash2KeysTableOf<ElemVector>* fValidSubstitutionGroups; - RefHashTableOf<XMLRefInfo>* fIDRefList; + ValidationContext* fValidationContext; MemoryManager* fMemoryManager; bool fValidated; DatatypeValidatorFactory fDatatypeRegistry; @@ -483,7 +491,12 @@ inline RefHashTableOf<XMLRefInfo>* SchemaGrammar::getIDRefList() const { - return fIDRefList; + return fValidationContext->getIdRefList(); +} + +inline ValidationContext* SchemaGrammar::getValidationContext() const { + + return fValidationContext; } inline XMLGrammarDescription* SchemaGrammar::getGrammarDescription() const 1.42 +28 -89 xml-xerces/c/src/xercesc/validators/schema/SchemaValidator.cpp Index: SchemaValidator.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/SchemaValidator.cpp,v retrieving revision 1.41 retrieving revision 1.42 diff -u -r1.41 -r1.42 --- SchemaValidator.cpp 10 Nov 2003 21:56:54 -0000 1.41 +++ SchemaValidator.cpp 12 Nov 2003 20:35:31 -0000 1.42 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.42 2003/11/12 20:35:31 peiyongz + * Stateless Grammar: ValidationContext + * * Revision 1.41 2003/11/10 21:56:54 neilg * make internal code use the new, stateless, method of traversing attribute lists * @@ -421,68 +424,7 @@ DatatypeValidator::ValidatorType eleDefDVType = fCurrentDatatypeValidator->getType(); - // set up the entitydeclpool in ENTITYDatatypeValidator - // and the idreflist in ID/IDREFDatatypeValidator - if (eleDefDVType == DatatypeValidator::List) { - DatatypeValidator* itemDTV = ((ListDatatypeValidator*)fCurrentDatatypeValidator)->getItemTypeDTV(); - DatatypeValidator::ValidatorType itemDTVType = itemDTV->getType(); - if (itemDTVType == DatatypeValidator::ENTITY) - ((ENTITYDatatypeValidator*)itemDTV)->setEntityDeclPool(getScanner()->getEntityDeclPool()); - else if (itemDTVType == DatatypeValidator::ID) - ((IDDatatypeValidator*)itemDTV)->setIDRefList(getScanner()->getIDRefList()); - else if (itemDTVType == DatatypeValidator::IDREF) { - ((IDREFDatatypeValidator*)itemDTV)->setIDRefList(getScanner()->getIDRefList()); - } - else if (itemDTVType == DatatypeValidator::Union) { - RefVectorOf<DatatypeValidator>* memberDTV = ((UnionDatatypeValidator*)itemDTV)->getMemberTypeValidators(); - unsigned int memberTypeNumber = memberDTV->size(); - for ( unsigned int memberIndex = 0; memberIndex < memberTypeNumber; ++memberIndex) - { - DatatypeValidator::ValidatorType memberDTVType = memberDTV->elementAt(memberIndex)->getType(); - if (memberDTVType == DatatypeValidator::ENTITY) - ((ENTITYDatatypeValidator*)memberDTV->elementAt(memberIndex))->setEntityDeclPool(getScanner()->getEntityDeclPool()); - else if (memberDTVType == DatatypeValidator::ID) - ((IDDatatypeValidator*)memberDTV->elementAt(memberIndex))->setIDRefList(getScanner()->getIDRefList()); - else if (memberDTVType == DatatypeValidator::IDREF) { - ((IDREFDatatypeValidator*)memberDTV->elementAt(memberIndex))->setIDRefList(getScanner()->getIDRefList()); - } - } - } - } - else if (eleDefDVType == DatatypeValidator::Union) { - RefVectorOf<DatatypeValidator>* memberDTV = ((UnionDatatypeValidator*)fCurrentDatatypeValidator)->getMemberTypeValidators(); - unsigned int memberTypeNumber = memberDTV->size(); - for ( unsigned int memberIndex = 0; memberIndex < memberTypeNumber; ++memberIndex) - { - DatatypeValidator::ValidatorType memberDTVType = memberDTV->elementAt(memberIndex)->getType(); - if (memberDTVType == DatatypeValidator::ENTITY) - ((ENTITYDatatypeValidator*)memberDTV->elementAt(memberIndex))->setEntityDeclPool(getScanner()->getEntityDeclPool()); - else if (memberDTVType == DatatypeValidator::ID) - ((IDDatatypeValidator*)memberDTV->elementAt(memberIndex))->setIDRefList(getScanner()->getIDRefList()); - else if (memberDTVType == DatatypeValidator::IDREF) { - ((IDREFDatatypeValidator*)memberDTV->elementAt(memberIndex))->setIDRefList(getScanner()->getIDRefList()); - } - else if (memberDTVType == DatatypeValidator::List) { - DatatypeValidator* itemDTV = ((ListDatatypeValidator*)memberDTV->elementAt(memberIndex))->getItemTypeDTV(); - DatatypeValidator::ValidatorType itemDTVType = itemDTV->getType(); - if (itemDTVType == DatatypeValidator::ENTITY) - ((ENTITYDatatypeValidator*)itemDTV)->setEntityDeclPool(getScanner()->getEntityDeclPool()); - else if (itemDTVType == DatatypeValidator::ID) - ((IDDatatypeValidator*)itemDTV)->setIDRefList(getScanner()->getIDRefList()); - else if (itemDTVType == DatatypeValidator::IDREF) { - ((IDREFDatatypeValidator*)itemDTV)->setIDRefList(getScanner()->getIDRefList()); - } - } - } - } - else if (eleDefDVType == DatatypeValidator::ENTITY) - ((ENTITYDatatypeValidator*)fCurrentDatatypeValidator)->setEntityDeclPool(getScanner()->getEntityDeclPool()); - else if (eleDefDVType == DatatypeValidator::ID) - ((IDDatatypeValidator*)fCurrentDatatypeValidator)->setIDRefList(getScanner()->getIDRefList()); - else if (eleDefDVType == DatatypeValidator::IDREF) { - ((IDREFDatatypeValidator*)fCurrentDatatypeValidator)->setIDRefList(getScanner()->getIDRefList()); - } - else if (eleDefDVType == DatatypeValidator::NOTATION) + if (eleDefDVType == DatatypeValidator::NOTATION) { // if notation, need to bind URI to notation first if (!fNotationBuf) @@ -524,7 +466,8 @@ // complex type (if any) if ((fCurrentDatatypeValidator != ((SchemaElementDecl*)elemDecl)->getDatatypeValidator()) && (!fTypeStack->peek() || (fCurrentDatatypeValidator != fTypeStack->peek()->getDatatypeValidator()))) - fCurrentDatatypeValidator->validate(elemDefaultValue); + fCurrentDatatypeValidator->validate(elemDefaultValue + , getScanner()->getValidationContext()); } else { @@ -543,21 +486,24 @@ valid = false; } else - fCurrentDatatypeValidator->validate(value); + fCurrentDatatypeValidator->validate(value + , getScanner()->getValidationContext()); } } else { // no default value, then check nillable if (XMLString::equals(value, XMLUni::fgZeroLenString)) { if ((((SchemaElementDecl*)elemDecl)->getMiscFlags() & SchemaSymbols::XSD_NILLABLE) == 0) - fCurrentDatatypeValidator->validate(value); + fCurrentDatatypeValidator->validate(value + , getScanner()->getValidationContext()); } else if (fNil) { emitError(XMLValid::NilAttrNotEmpty, elemDecl->getFullName()); valid = false; } else - fCurrentDatatypeValidator->validate(value); + fCurrentDatatypeValidator->validate(value + , getScanner()->getValidationContext()); } } } @@ -635,6 +581,9 @@ , const XMLElementDecl* elemDecl) { + //turn on IdRefList checking + getScanner()->getValidationContext()->toCheckIdRefList(true); + // // Get quick refs to lot of the stuff in the passed objects in // order to simplify the code below, which will reference them very @@ -688,18 +637,14 @@ if (attDefDVType == DatatypeValidator::List) { DatatypeValidator* itemDTV = ((ListDatatypeValidator*)attDefDV)->getItemTypeDTV(); DatatypeValidator::ValidatorType itemDTVType = itemDTV->getType(); - if (itemDTVType == DatatypeValidator::ENTITY) - ((ENTITYDatatypeValidator*)itemDTV)->setEntityDeclPool(getScanner()->getEntityDeclPool()); - else if (itemDTVType == DatatypeValidator::ID) { - ((IDDatatypeValidator*)itemDTV)->setIDRefList(getScanner()->getIDRefList()); + if (itemDTVType == DatatypeValidator::ID) { thisIsAnId = true; } else if (itemDTVType == DatatypeValidator::IDREF) { // if in prevalidatoin, do not add attDef to IDREFList if (preValidation) - ((IDREFDatatypeValidator*)itemDTV)->setIDRefList(0); - else - ((IDREFDatatypeValidator*)itemDTV)->setIDRefList(getScanner()->getIDRefList()); + //todo: when to setIdRefList back to non-null + getScanner()->getValidationContext()->toCheckIdRefList(false); } } else if (attDefDVType == DatatypeValidator::Union) { @@ -708,33 +653,24 @@ for ( unsigned int memberIndex = 0; memberIndex < memberTypeNumber; ++memberIndex) { DatatypeValidator::ValidatorType memberDTVType = memberDTV->elementAt(memberIndex)->getType(); - if (memberDTVType == DatatypeValidator::ENTITY) - ((ENTITYDatatypeValidator*)memberDTV->elementAt(memberIndex))->setEntityDeclPool(getScanner()->getEntityDeclPool()); - else if (memberDTVType == DatatypeValidator::ID) { - ((IDDatatypeValidator*)memberDTV->elementAt(memberIndex))->setIDRefList(getScanner()->getIDRefList()); + if (memberDTVType == DatatypeValidator::ID) { thisIsAnId = true; } else if (memberDTVType == DatatypeValidator::IDREF) { // if in prevalidatoin, do not add attDef to IDREFList if (preValidation) - ((IDREFDatatypeValidator*)memberDTV->elementAt(memberIndex))->setIDRefList(0); - else - ((IDREFDatatypeValidator*)memberDTV->elementAt(memberIndex))->setIDRefList(getScanner()->getIDRefList()); + getScanner()->getValidationContext()->toCheckIdRefList(false); + } } } - else if (attDefDVType == DatatypeValidator::ENTITY) - ((ENTITYDatatypeValidator*)attDefDV)->setEntityDeclPool(getScanner()->getEntityDeclPool()); else if (attDefDVType == DatatypeValidator::ID) { - ((IDDatatypeValidator*)attDefDV)->setIDRefList(getScanner()->getIDRefList()); thisIsAnId = true; } else if (attDefDVType == DatatypeValidator::IDREF) { // if in prevalidatoin, do not add attDef to IDREFList if (preValidation) - ((IDREFDatatypeValidator*)attDefDV)->setIDRefList(0); - else - ((IDREFDatatypeValidator*)attDefDV)->setIDRefList(getScanner()->getIDRefList()); + getScanner()->getValidationContext()->toCheckIdRefList(false); } // now validate the attribute value @@ -756,7 +692,8 @@ notationBuf.append(chColon); notationBuf.append(&attrValue[colonPos + 1]); - attDefDV->validate(notationBuf.getRawBuffer()); + attDefDV->validate(notationBuf.getRawBuffer() + , getScanner()->getValidationContext()); } else { if (thisIsAnId) { @@ -771,7 +708,8 @@ else fSeenId = true; } - attDefDV->validate(attrValue); + attDefDV->validate(attrValue + , getScanner()->getValidationContext()); } } catch (XMLException& idve) { @@ -1088,6 +1026,7 @@ if (curElem.hasAttDefs()) { XMLAttDefList& attDefList = curElem.getAttDefList(); bool seenId = false; + for(unsigned int i=0; i<attDefList.getAttDefCount(); i++) { const XMLAttDef& curAttDef = attDefList.getAttDef(i); 1.93 +17 -10 xml-xerces/c/src/xercesc/validators/schema/TraverseSchema.cpp Index: TraverseSchema.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/TraverseSchema.cpp,v retrieving revision 1.92 retrieving revision 1.93 diff -u -r1.92 -r1.93 --- TraverseSchema.cpp 7 Nov 2003 17:08:12 -0000 1.92 +++ TraverseSchema.cpp 12 Nov 2003 20:35:31 -0000 1.93 @@ -392,7 +392,7 @@ gramDesc->setTargetNamespace(fTargetNSURIString); fGrammarResolver->putGrammar(fSchemaGrammar); - fAttributeCheck.setIDRefList(fSchemaGrammar->getIDRefList()); + fAttributeCheck.setValidationContext(fSchemaGrammar->getValidationContext()); // Save current schema info SchemaInfo* currInfo = new (fMemoryManager) SchemaInfo(0, 0, 0, fTargetNSURI, fScopeCount, @@ -1819,7 +1819,8 @@ } else { try { - anyURIDV->validate(tokenElem); + anyURIDV->validate(tokenElem + , fSchemaGrammar->getValidationContext()); } catch(const XMLException& excep) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::DisplayErrorMessage, excep.getMessage()); @@ -2232,7 +2233,8 @@ if (attType == XMLAttDef::Simple && dv && valueToCheck) { try { - dv->validate(valueToCheck); + dv->validate(valueToCheck + , fSchemaGrammar->getValidationContext()); } catch (const XMLException& excep) { reportSchemaError(elem, XMLUni::fgValidityDomain, XMLValid::DisplayErrorMessage, excep.getMessage()); @@ -2707,10 +2709,12 @@ try { if(validator == 0) { // in this case validate according to xs:string - fDatatypeRegistry->getDatatypeValidator(SchemaSymbols::fgDT_STRING)->validate(deflt); + fDatatypeRegistry->getDatatypeValidator(SchemaSymbols::fgDT_STRING)->validate(deflt + , fSchemaGrammar->getValidationContext()); } else { - validator->validate(deflt); - } + validator->validate(deflt + , fSchemaGrammar->getValidationContext()); + } } catch (const XMLException& excep) { reportSchemaError(elem, XMLUni::fgValidityDomain, XMLValid::DisplayErrorMessage, excep.getMessage()); @@ -4022,7 +4026,8 @@ else { try { - anyURIDV->validate(token); + anyURIDV->validate(token + , fSchemaGrammar->getValidationContext()); } catch(const XMLException& excep) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::DisplayErrorMessage, excep.getMessage()); @@ -5793,7 +5798,8 @@ } else { try { - attDV->validate(valueConstraint); + attDV->validate(valueConstraint + , fSchemaGrammar->getValidationContext()); } catch(const XMLException& excep) { reportSchemaError(elem, XMLUni::fgValidityDomain, XMLValid::DisplayErrorMessage, excep.getMessage()); @@ -6701,7 +6707,8 @@ fComplexTypeRegistry = fSchemaGrammar->getComplexTypeRegistry(); fValidSubstitutionGroups = fSchemaGrammar->getValidSubstitutionGroups(); fNamespaceScope = fSchemaGrammar->getNamespaceScope(); - fAttributeCheck.setIDRefList(fSchemaGrammar->getIDRefList()); + fAttributeCheck.setValidationContext(fSchemaGrammar->getValidationContext()); + } fSchemaInfo = toRestore;
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]