From e5a45aa56fdb0c7de880345d67e6065bcacff8c0 Mon Sep 17 00:00:00 2001 From: Khaled Noaman <knoaman@apache.org> Date: Wed, 15 Jan 2003 19:24:16 +0000 Subject: [PATCH] Check the value of the 'namespace' attribute of wildcards to be valid anyURI. git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@174630 13f79535-47bb-0310-9956-ffa450edef68 --- src/xercesc/validators/schema/TraverseSchema.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/xercesc/validators/schema/TraverseSchema.cpp b/src/xercesc/validators/schema/TraverseSchema.cpp index 2fa76d5d3..0347fa776 100644 --- a/src/xercesc/validators/schema/TraverseSchema.cpp +++ b/src/xercesc/validators/schema/TraverseSchema.cpp @@ -1689,6 +1689,7 @@ TraverseSchema::traverseAny(const DOMElement* const elem) { ContentSpecNode* firstNode = 0; ContentSpecNode* secondNode = 0; unsigned int tokensSize = nameSpaceTokens->size(); + DatatypeValidator* anyURIDV = fDatatypeRegistry->getDatatypeValidator(SchemaSymbols::fgDT_ANYURI); for (unsigned int i=0; i < tokensSize; i++) { @@ -1701,6 +1702,12 @@ TraverseSchema::traverseAny(const DOMElement* const elem) { uriIndex = fTargetNSURI; } else { + try { + anyURIDV->validate(tokenElem); + } + catch(const XMLException& excep) { + reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::DisplayErrorMessage, excep.getMessage()); + } uriIndex = fURIStringPool->addOrFind(tokenElem); } } @@ -3678,6 +3685,7 @@ SchemaAttDef* TraverseSchema::traverseAnyAttribute(const DOMElement* const elem) else { XMLStringTokenizer tokenizer(nameSpace); + DatatypeValidator* anyURIDV = fDatatypeRegistry->getDatatypeValidator(SchemaSymbols::fgDT_ANYURI); attType = XMLAttDef::Any_List; @@ -3692,6 +3700,13 @@ SchemaAttDef* TraverseSchema::traverseAnyAttribute(const DOMElement* const elem) uriIndex = fTargetNSURI; } else { + + try { + anyURIDV->validate(token); + } + catch(const XMLException& excep) { + reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::DisplayErrorMessage, excep.getMessage()); + } uriIndex = fURIStringPool->addOrFind(token); } -- GitLab