diff --git a/src/xercesc/validators/schema/GeneralAttributeCheck.cpp b/src/xercesc/validators/schema/GeneralAttributeCheck.cpp index 8e50129780ebd529e1430a2755013d0c2072904a..50de0b0140c21a28f3dcb488c5bf464501679e0e 100644 --- a/src/xercesc/validators/schema/GeneralAttributeCheck.cpp +++ b/src/xercesc/validators/schema/GeneralAttributeCheck.cpp @@ -16,6 +16,10 @@ /* * $Log$ + * Revision 1.23 2004/09/29 20:58:10 knoaman + * [Bug 1209] Problem with id usage across schema + * http://issues.apache.org/jira/browse/XERCESC-1209 + * * Revision 1.22 2004/09/08 13:56:56 peiyongz * Apache License Version 2.0 * @@ -470,6 +474,7 @@ void GeneralAttributeCheck::validate(const DOMElement* const elem, bool isInvalid = false; DatatypeValidator* dv = 0; + fValidationContext = schema->fSchemaInfo->getValidationContext(); switch (dvIndex) { case DV_Form: if (!XMLString::equals(attValue, SchemaSymbols::fgATTVAL_QUALIFIED) diff --git a/src/xercesc/validators/schema/SchemaInfo.cpp b/src/xercesc/validators/schema/SchemaInfo.cpp index 4ee4e2a7eb54fce47cadb228757e2517e1b525d6..54ee4c647373d7a97719d3f0c17670e301a498a1 100644 --- a/src/xercesc/validators/schema/SchemaInfo.cpp +++ b/src/xercesc/validators/schema/SchemaInfo.cpp @@ -16,6 +16,10 @@ /* * $Log$ + * Revision 1.13 2004/09/29 20:58:10 knoaman + * [Bug 1209] Problem with id usage across schema + * http://issues.apache.org/jira/browse/XERCESC-1209 + * * Revision 1.12 2004/09/08 13:56:56 peiyongz * Apache License Version 2.0 * @@ -80,6 +84,7 @@ #include <xercesc/validators/schema/XUtil.hpp> #include <xercesc/validators/schema/SchemaSymbols.hpp> #include <xercesc/util/XMLString.hpp> +#include <xercesc/internal/ValidationContextImpl.hpp> XERCES_CPP_NAMESPACE_BEGIN @@ -115,12 +120,14 @@ SchemaInfo::SchemaInfo(const unsigned short elemAttrDefaultQualified, , fRecursingAnonTypes(0) , fRecursingTypeNames(0) , fNonXSAttList(0) + , fValidationContext(0) , fMemoryManager(manager) { fImportingInfoList = new (fMemoryManager) RefVectorOf<SchemaInfo>(4, false, fMemoryManager); for (unsigned int i = 0; i < C_Count; i++) fTopLevelComponents[i] = 0; fNonXSAttList = new (fMemoryManager) ValueVectorOf<DOMNode*>(2, fMemoryManager); + fValidationContext = new (fMemoryManager) ValidationContextImpl(fMemoryManager); } @@ -156,6 +163,9 @@ SchemaInfo::~SchemaInfo() delete fNonXSAttList; fNonXSAttList = 0; + + delete fValidationContext; + fValidationContext = 0; } // --------------------------------------------------------------------------- diff --git a/src/xercesc/validators/schema/SchemaInfo.hpp b/src/xercesc/validators/schema/SchemaInfo.hpp index dee4e0c7138ffe2101dbc223a0beba65380edfb7..46a20bd907020d0ed60cae33862b8b2f09b5119d 100644 --- a/src/xercesc/validators/schema/SchemaInfo.hpp +++ b/src/xercesc/validators/schema/SchemaInfo.hpp @@ -43,6 +43,12 @@ XERCES_CPP_NAMESPACE_BEGIN +// --------------------------------------------------------------------------- +// Forward Declarations +// --------------------------------------------------------------------------- +class ValidationContext; + + class VALIDATORS_EXPORT SchemaInfo : public XMemory { public: @@ -97,7 +103,8 @@ public: BaseRefVectorEnumerator<SchemaInfo> getImportingListEnumerator() const; ValueVectorOf<const DOMElement*>* getRecursingAnonTypes() const; ValueVectorOf<const XMLCh*>* getRecursingTypeNames() const; - ValueVectorOf<DOMNode*>* getNonXSAttList() const; + ValueVectorOf<DOMNode*>* getNonXSAttList() const; + ValidationContext* getValidationContext() const; // ----------------------------------------------------------------------- // Setter methods @@ -164,6 +171,7 @@ private: ValueVectorOf<const XMLCh*>* fRecursingTypeNames; ValueVectorOf<DOMElement*>* fTopLevelComponents[C_Count]; ValueVectorOf<DOMNode*>* fNonXSAttList; + ValidationContext* fValidationContext; MemoryManager* fMemoryManager; }; @@ -339,6 +347,11 @@ inline SchemaInfo* SchemaInfo::getImportInfo(const unsigned int namespaceURI) co return currInfo; } +inline ValidationContext* SchemaInfo::getValidationContext() const { + + return fValidationContext; +} + inline bool SchemaInfo::containsInfo(const SchemaInfo* const toCheck, const ListType aListType) const {