From 39e56e3d6921312dce541f0fb4cface4507eb086 Mon Sep 17 00:00:00 2001 From: Khaled Noaman <knoaman@apache.org> Date: Wed, 29 Sep 2004 20:58:10 +0000 Subject: [PATCH] [Bug 1209] Problem with id usage across schema http://issues.apache.org/jira/browse/XERCESC-1209 git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@176114 13f79535-47bb-0310-9956-ffa450edef68 --- .../validators/schema/GeneralAttributeCheck.cpp | 5 +++++ src/xercesc/validators/schema/SchemaInfo.cpp | 10 ++++++++++ src/xercesc/validators/schema/SchemaInfo.hpp | 15 ++++++++++++++- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/xercesc/validators/schema/GeneralAttributeCheck.cpp b/src/xercesc/validators/schema/GeneralAttributeCheck.cpp index 8e5012978..50de0b014 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 4ee4e2a7e..54ee4c647 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 dee4e0c71..46a20bd90 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 { -- GitLab