knoaman 2003/01/15 07:32:16 Modified: c/src/xercesc/validators/schema TraverseSchema.hpp TraverseSchema.cpp Log: Check for target namespace with empty string. Revision Changes Path 1.21 +5 -7 xml-xerces/c/src/xercesc/validators/schema/TraverseSchema.hpp Index: TraverseSchema.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/TraverseSchema.hpp,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- TraverseSchema.hpp 13 Jan 2003 20:16:52 -0000 1.20 +++ TraverseSchema.hpp 15 Jan 2003 15:32:15 -0000 1.21 @@ -559,7 +559,7 @@ XercesAttGroupInfo* const toAttGroup, ComplexTypeInfo* const typeInfo); - const XMLCh* getTargetNamespaceString(const DOMElement* const elem); + void checkForEmptyTargetNamespace(const DOMElement* const elem); /** * Attribute wild card intersection. @@ -855,16 +855,14 @@ return attValue; } -inline const XMLCh* -TraverseSchema::getTargetNamespaceString(const DOMElement* const elem) { +inline void +TraverseSchema::checkForEmptyTargetNamespace(const DOMElement* const elem) { const XMLCh* targetNS = getElementAttValue(elem, SchemaSymbols::fgATT_TARGETNAMESPACE); - if (targetNS && (!targetNS || !*targetNS)) { + if (targetNS && !*targetNS) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidTargetNSValue); } - - return targetNS; } inline bool TraverseSchema::isBaseFromAnotherSchema(const XMLCh* const baseURI) 1.56 +12 -17 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.55 retrieving revision 1.56 diff -u -r1.55 -r1.56 --- TraverseSchema.cpp 14 Jan 2003 21:29:56 -0000 1.55 +++ TraverseSchema.cpp 15 Jan 2003 15:32:15 -0000 1.56 @@ -365,13 +365,7 @@ //Retrieve the targetnamespace URI information const XMLCh* targetNSURIStr = schemaRoot->getAttribute(SchemaSymbols::fgATT_TARGETNAMESPACE); - - if (targetNSURIStr == 0 || !*targetNSURIStr) { - fSchemaGrammar->setTargetNamespace(XMLUni::fgZeroLenString); - } - else { - fSchemaGrammar->setTargetNamespace(targetNSURIStr); - } + fSchemaGrammar->setTargetNamespace(targetNSURIStr); fScopeCount = 0; fCurrentScope = Grammar::TOP_LEVEL_SCOPE; @@ -407,6 +401,9 @@ reportSchemaError(schemaRoot, XMLUni::fgXMLErrDomain, XMLErrs::InvalidXMLSchemaRoot); } + // Make sure that the targetNamespace value is not empty string + checkForEmptyTargetNamespace(schemaRoot); + // ----------------------------------------------------------------------- // Check Attributes // ----------------------------------------------------------------------- @@ -546,11 +543,10 @@ if (root) { - const XMLCh* targetNSURIString = getTargetNamespaceString(root); - bool targetNSLength = !targetNSURIString || !*targetNSURIString; + const XMLCh* targetNSURIString = root->getAttribute(SchemaSymbols::fgATT_TARGETNAMESPACE); // check to see if targetNameSpace is right - if (!targetNSLength + if (*targetNSURIString && !XMLString::equals(targetNSURIString,fTargetNSURIString)){ reportSchemaError(root, XMLUni::fgXMLErrDomain, XMLErrs::IncludeNamespaceDifference, schemaLocation, targetNSURIString); @@ -559,7 +555,7 @@ // if targetNamespace is empty, change it to includ'g schema // targetNamespace - if (targetNSLength && root->getAttributeNode(XMLUni::fgXMLNSString) == 0 + if (!*targetNSURIString && root->getAttributeNode(XMLUni::fgXMLNSString) == 0 && fTargetNSURI != fEmptyNamespaceURI) { root->setAttribute(XMLUni::fgXMLNSString, fTargetNSURIString); } @@ -727,7 +723,7 @@ return; } - const XMLCh* targetNSURIString = getTargetNamespaceString(root); + const XMLCh* targetNSURIString = root->getAttribute(SchemaSymbols::fgATT_TARGETNAMESPACE); if (!XMLString::equals(targetNSURIString, nameSpace)) { reportSchemaError(root, XMLUni::fgXMLErrDomain, XMLErrs::ImportNamespaceDifference, @@ -7358,11 +7354,10 @@ return false; } - const XMLCh* targetNSURIString = getTargetNamespaceString(root); //getElementAttValue(root,SchemaSymbols::fgATT_TARGETNAMESPACE); - bool targetNSLength = !targetNSURIString || !*targetNSURIString; + const XMLCh* targetNSURIString = root->getAttribute(SchemaSymbols::fgATT_TARGETNAMESPACE); // check to see if targetNameSpace is right - if (!targetNSLength + if (*targetNSURIString && !XMLString::equals(targetNSURIString,fTargetNSURIString)){ reportSchemaError(root, XMLUni::fgXMLErrDomain, XMLErrs::RedefineNamespaceDifference, schemaLocation, targetNSURIString); @@ -7371,7 +7366,7 @@ // if targetNamespace is empty, change it to redefin'g schema // targetNamespace - if (targetNSLength && root->getAttributeNode(XMLUni::fgXMLNSString) == 0 + if (!*targetNSURIString && root->getAttributeNode(XMLUni::fgXMLNSString) == 0 && fTargetNSURI != fEmptyNamespaceURI) { root->setAttribute(XMLUni::fgXMLNSString, fTargetNSURIString); }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]