diff --git a/src/xercesc/validators/schema/SchemaGrammar.hpp b/src/xercesc/validators/schema/SchemaGrammar.hpp index ca4e56f81e72fc3d1ce5593f79db6965b34eebd4..95bd487b01d2a87f558666404bd935b1873ea4fd 100644 --- a/src/xercesc/validators/schema/SchemaGrammar.hpp +++ b/src/xercesc/validators/schema/SchemaGrammar.hpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.13 2003/11/14 22:35:09 neilg + * changes in support of second phase of XSModel implementation; thanks to David Cargill + * * Revision 1.12 2003/11/12 20:35:31 peiyongz * Stateless Grammar: ValidationContext * @@ -280,6 +283,7 @@ public: // Getter methods // ----------------------------------------------------------------------- RefHash3KeysIdPoolEnumerator<SchemaElementDecl> getElemEnumerator() const; + NameIdPoolEnumerator<XMLNotationDecl> getNotationEnumerator() const; RefHashTableOf<XMLAttDef>* getAttributeDeclRegistry() const; RefHashTableOf<ComplexTypeInfo>* getComplexTypeRegistry() const; RefHashTableOf<XercesGroupInfo>* getGroupInfoRegistry() const; @@ -450,6 +454,12 @@ SchemaGrammar::getElemEnumerator() const return RefHash3KeysIdPoolEnumerator<SchemaElementDecl>(fElemDeclPool); } +inline NameIdPoolEnumerator<XMLNotationDecl> +SchemaGrammar::getNotationEnumerator() const +{ + return NameIdPoolEnumerator<XMLNotationDecl>(fNotationDeclPool); +} + inline RefHashTableOf<XMLAttDef>* SchemaGrammar::getAttributeDeclRegistry() const { return fAttributeDeclRegistry; diff --git a/src/xercesc/validators/schema/TraverseSchema.cpp b/src/xercesc/validators/schema/TraverseSchema.cpp index 9946797b2adcc7dfe2ca4980b7d46c4dca48e683..6873c96031d3f0a1aba20fb86d4e2bdf6fb040e8 100644 --- a/src/xercesc/validators/schema/TraverseSchema.cpp +++ b/src/xercesc/validators/schema/TraverseSchema.cpp @@ -4095,9 +4095,7 @@ void TraverseSchema::traverseKey(const DOMElement* const icElem, if (!fIdentityConstraintNames) { fIdentityConstraintNames = new (fMemoryManager) RefHash2KeysTableOf<IdentityConstraint>(29, (bool) false, fMemoryManager); } - - if (fIdentityConstraintNames->containsKey(name, fTargetNSURI)) { - + else if (fIdentityConstraintNames->containsKey(name, fTargetNSURI)) { reportSchemaError(icElem, XMLUni::fgXMLErrDomain, XMLErrs::IC_DuplicateDecl, name); return; } @@ -4120,6 +4118,7 @@ void TraverseSchema::traverseKey(const DOMElement* const icElem, // Add key to element declaration // ----------------------------------------------------------------------- elemDecl->addIdentityConstraint(icKey); + icKey->setNamespaceURI(fTargetNSURI); janKey.orphan(); } @@ -4156,8 +4155,7 @@ void TraverseSchema::traverseUnique(const DOMElement* const icElem, if (!fIdentityConstraintNames) { fIdentityConstraintNames = new (fGrammarPoolMemoryManager) RefHash2KeysTableOf<IdentityConstraint>(29, (bool) false, fGrammarPoolMemoryManager); } - - if (fIdentityConstraintNames->containsKey(name, fTargetNSURI)) { + else if (fIdentityConstraintNames->containsKey(name, fTargetNSURI)) { reportSchemaError(icElem, XMLUni::fgXMLErrDomain, XMLErrs::IC_DuplicateDecl, name); return; @@ -4181,6 +4179,7 @@ void TraverseSchema::traverseUnique(const DOMElement* const icElem, // Add identity cosntraints to element declaration // ----------------------------------------------------------------------- elemDecl->addIdentityConstraint(icUnique); + icUnique->setNamespaceURI(fTargetNSURI); janUnique.orphan(); } @@ -4263,6 +4262,7 @@ void TraverseSchema::traverseKeyRef(const DOMElement* const icElem, else { elemDecl->addIdentityConstraint(icKeyRef); + icKeyRef->setNamespaceURI(fTargetNSURI); janKeyRef.orphan(); } } diff --git a/src/xercesc/validators/schema/identity/IdentityConstraint.cpp b/src/xercesc/validators/schema/identity/IdentityConstraint.cpp index 5defe271f23b3437317a8b1c63332f6a68f633f6..de3779163ae04b383f448b0ea05b25be95a25e44 100644 --- a/src/xercesc/validators/schema/identity/IdentityConstraint.cpp +++ b/src/xercesc/validators/schema/identity/IdentityConstraint.cpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.9 2003/11/14 22:35:09 neilg + * changes in support of second phase of XSModel implementation; thanks to David Cargill + * * Revision 1.8 2003/11/13 23:21:41 peiyongz * initSize * @@ -212,7 +215,7 @@ void IdentityConstraint::serialize(XSerializeEngine& serEng) serEng.writeString(fElemName); serEng<<fSelector; - + serEng<<fNamespaceURI; /*** * * Serialize RefVectorOf<IC_Field>* fFields; @@ -228,7 +231,7 @@ void IdentityConstraint::serialize(XSerializeEngine& serEng) serEng.readString(fElemName); serEng>>fSelector; - + serEng>>fNamespaceURI; /*** * * Deserialize RefVectorOf<IC_Field>* fFields; diff --git a/src/xercesc/validators/schema/identity/IdentityConstraint.hpp b/src/xercesc/validators/schema/identity/IdentityConstraint.hpp index 5ab59a283e6e703c499f9c6dfe59a2dc6f6dbf17..34b990d56d5361510d76efaa0afe26f953ca29f1 100644 --- a/src/xercesc/validators/schema/identity/IdentityConstraint.hpp +++ b/src/xercesc/validators/schema/identity/IdentityConstraint.hpp @@ -113,11 +113,13 @@ public: XMLCh* getIdentityConstraintName() const; XMLCh* getElementName() const; IC_Selector* getSelector() const; + int getNamespaceURI() const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void setSelector(IC_Selector* const selector); + void setNamespaceURI(int uri); // ----------------------------------------------------------------------- // Access methods @@ -176,6 +178,7 @@ private: IC_Selector* fSelector; RefVectorOf<IC_Field>* fFields; MemoryManager* fMemoryManager; + int fNamespaceURI; }; @@ -206,6 +209,19 @@ inline IC_Selector* IdentityConstraint::getSelector() const { return fSelector; } +inline int IdentityConstraint::getNamespaceURI() const +{ + return fNamespaceURI; +} + +// --------------------------------------------------------------------------- +// IdentityConstraint: Setter methods +// --------------------------------------------------------------------------- +inline void IdentityConstraint::setNamespaceURI(int uri) +{ + fNamespaceURI = uri; +} + // --------------------------------------------------------------------------- // IdentityConstraint: Access methods // ---------------------------------------------------------------------------