cvs commit: xml-xerces/c/src/xercesc/validators/schema TraverseSchema.hpp TraverseSchema.cpp
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 ChangesPath 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.hpp13 Jan 2003 20:16:52 - 1.20 +++ TraverseSchema.hpp15 Jan 2003 15:32:15 - 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 -17xml-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.cpp14 Jan 2003 21:29:56 - 1.55 +++ TraverseSchema.cpp15 Jan 2003 15:32:15 - 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);
cvs commit: xml-xerces/c/src/xercesc/util XMLUni.cpp XMLUni.hpp
knoaman 2003/01/15 07:49:49 Modified:c/src/xercesc/internal DGXMLScanner.hpp IGXMLScanner.hpp SGXMLScanner.hpp WFXMLScanner.hpp XMLScannerResolver.cpp c/src/xercesc/util XMLUni.cpp XMLUni.hpp Log: Change constant declaration name to match its value. Revision ChangesPath 1.3 +4 -1 xml-xerces/c/src/xercesc/internal/DGXMLScanner.hpp Index: DGXMLScanner.hpp === RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/DGXMLScanner.hpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- DGXMLScanner.hpp 13 Jan 2003 18:29:41 - 1.2 +++ DGXMLScanner.hpp 15 Jan 2003 15:49:49 - 1.3 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.3 2003/01/15 15:49:49 knoaman + * Change constant declaration name to match its value. + * * Revision 1.2 2003/01/13 18:29:41 knoaman * Return proper scanner name. * @@ -240,7 +243,7 @@ inline const XMLCh* DGXMLScanner::getName() const { -return XMLUni::fgDGScanner; +return XMLUni::fgDGXMLScanner; } 1.3 +4 -1 xml-xerces/c/src/xercesc/internal/IGXMLScanner.hpp Index: IGXMLScanner.hpp === RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/IGXMLScanner.hpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- IGXMLScanner.hpp 13 Jan 2003 16:30:18 - 1.2 +++ IGXMLScanner.hpp 15 Jan 2003 15:49:49 - 1.3 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.3 2003/01/15 15:49:49 knoaman + * Change constant declaration name to match its value. + * * Revision 1.2 2003/01/13 16:30:18 knoaman * [Bug 14469] Validator doesn't enforce xsd:key. * @@ -307,7 +310,7 @@ inline const XMLCh* IGXMLScanner::getName() const { -return XMLUni::fgIGScanner; +return XMLUni::fgIGXMLScanner; } 1.3 +4 -1 xml-xerces/c/src/xercesc/internal/SGXMLScanner.hpp Index: SGXMLScanner.hpp === RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/SGXMLScanner.hpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- SGXMLScanner.hpp 13 Jan 2003 16:30:18 - 1.2 +++ SGXMLScanner.hpp 15 Jan 2003 15:49:49 - 1.3 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.3 2003/01/15 15:49:49 knoaman + * Change constant declaration name to match its value. + * * Revision 1.2 2003/01/13 16:30:18 knoaman * [Bug 14469] Validator doesn't enforce xsd:key. * @@ -301,7 +304,7 @@ inline const XMLCh* SGXMLScanner::getName() const { -return XMLUni::fgSGScanner; +return XMLUni::fgSGXMLScanner; } 1.3 +4 -1 xml-xerces/c/src/xercesc/internal/WFXMLScanner.hpp Index: WFXMLScanner.hpp === RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/WFXMLScanner.hpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- WFXMLScanner.hpp 2 Jan 2003 16:29:05 - 1.2 +++ WFXMLScanner.hpp 15 Jan 2003 15:49:49 - 1.3 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.3 2003/01/15 15:49:49 knoaman + * Change constant declaration name to match its value. + * * Revision 1.2 2003/01/02 16:29:05 knoaman * Modified the way we handle element tags. * @@ -202,7 +205,7 @@ inline const XMLCh* WFXMLScanner::getName() const { -return XMLUni::fgWFScanner; +return XMLUni::fgWFXMLScanner; } 1.4 +11 -11xml-xerces/c/src/xercesc/internal/XMLScannerResolver.cpp Index: XMLScannerResolver.cpp === RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/XMLScannerResolver.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- XMLScannerResolver.cpp9 Dec 2002 15:47:49 - 1.3 +++ XMLScannerResolver.cpp15 Jan 2003 15:49:49 - 1.4 @@ -63,10 +63,10 @@ // Includes // --- #include -#include #include -#include #include +#include +#include XERCES_CPP_NAMESPACE_BEGIN @@ -83,13 +83,13 @@ XMLScannerResolver::resolveScanner(const XMLCh* const scannerName, XMLValidator* const valToAdopt) { -if (XMLString::equals(scannerName, XMLUni::fgWFScanner)) +if (XMLString::equals(scannerName, XMLUni::fgWFXMLScanner)) return new WFXMLScanner(valToAdopt); -else if (XMLString::equals(scannerName, XMLUni:
cvs commit: xml-xerces/c/src/xercesc/validators/schema TraverseSchema.cpp
knoaman 2003/01/15 11:24:16 Modified:c/src/xercesc/validators/schema TraverseSchema.cpp Log: Check the value of the 'namespace' attribute of wildcards to be valid anyURI. Revision ChangesPath 1.57 +16 -1 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.56 retrieving revision 1.57 diff -u -r1.56 -r1.57 --- TraverseSchema.cpp15 Jan 2003 15:32:15 - 1.56 +++ TraverseSchema.cpp15 Jan 2003 19:24:16 - 1.57 @@ -1689,6 +1689,7 @@ 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 @@ 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 @@ else { XMLStringTokenizer tokenizer(nameSpace); +DatatypeValidator* anyURIDV = fDatatypeRegistry->getDatatypeValidator(SchemaSymbols::fgDT_ANYURI); attType = XMLAttDef::Any_List; @@ -3692,6 +3700,13 @@ uriIndex = fTargetNSURI; } else { + +try { +anyURIDV->validate(token); +} +catch(const XMLException& excep) { +reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::DisplayErrorMessage, excep.getMessage()); +} uriIndex = fURIStringPool->addOrFind(token); } - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: xml-xerces/c/src/xercesc/validators/schema TraverseSchema.cpp
knoaman 2003/01/15 12:50:33 Modified:c/src/xercesc/validators/schema TraverseSchema.cpp Log: Fix for substitution group type checking. Revision ChangesPath 1.58 +13 -3 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.57 retrieving revision 1.58 diff -u -r1.57 -r1.58 --- TraverseSchema.cpp15 Jan 2003 19:24:16 - 1.57 +++ TraverseSchema.cpp15 Jan 2003 20:50:32 - 1.58 @@ -5035,7 +5035,10 @@ DatatypeValidator* elemDV = typeInfo->getDatatypeValidator(); DatatypeValidator* subsValidator = subsElemDecl->getDatatypeValidator(); -if (subsValidator && subsValidator->isSubstitutableBy(elemDV)) { +if (elemDV == subsValidator) { +return true; +} +else if (subsValidator && subsValidator->isSubstitutableBy(elemDV)) { if ((subsElemDecl->getFinalSet() & derivationMethod) == 0) { return true; } @@ -5047,6 +5050,10 @@ else { // complex content ComplexTypeInfo* subsTypeInfo = subsElemDecl->getComplexTypeInfo(); + +if (subsTypeInfo == typeInfo) +return true; + const ComplexTypeInfo* elemTypeInfo = typeInfo; for (; elemTypeInfo && elemTypeInfo != subsTypeInfo; @@ -5068,7 +5075,10 @@ // first, check for type relation. DatatypeValidator* subsValidator = subsElemDecl->getDatatypeValidator(); -if (subsValidator && subsValidator->isSubstitutableBy(validator) +if (subsValidator == validator) { +return true; +} +else if (subsValidator && subsValidator->isSubstitutableBy(validator) && ((subsElemDecl->getFinalSet() & SchemaSymbols::XSD_RESTRICTION) == 0)) { return true; } - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]