tng 2003/01/23 11:54:36 Modified: c/src/xercesc/internal IGXMLScanner.cpp SGXMLScanner.cpp Log: Scanner fix: switch back to original grammar first before faulting-in element. Revision Changes Path 1.6 +10 -7 xml-xerces/c/src/xercesc/internal/IGXMLScanner.cpp Index: IGXMLScanner.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/IGXMLScanner.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- IGXMLScanner.cpp 13 Jan 2003 16:30:16 -0000 1.5 +++ IGXMLScanner.cpp 23 Jan 2003 19:54:34 -0000 1.6 @@ -2057,6 +2057,8 @@ // not find it. bool wasAdded = false; const XMLCh* nameRawBuf = &qnameRawBuf[prefixColonPos + 1]; + const XMLCh* original_uriStr = fGrammar->getTargetNamespace(); + unsigned orgGrammarUri = fURIStringPool->getId(original_uriStr); if (uriId != fEmptyNamespaceId) { @@ -2069,7 +2071,7 @@ , currentScope ); - if (!elemDecl && (fURIStringPool->getId(fGrammar->getTargetNamespace()) != uriId)) { + if (!elemDecl && (orgGrammarUri != uriId)) { // not found, switch to the specified grammar const XMLCh* uriStr = getURIText(uriId); if (!switchGrammar(uriStr) && fValidate && !laxThisOne) @@ -2123,6 +2125,8 @@ if (!elemDecl) { // still not found, fault this in and issue error later + // switch back to original grammar first + switchGrammar(original_uriStr); elemDecl = fGrammar->putElemDecl(uriId , nameRawBuf , fPrefixBuf.getRawBuffer() @@ -2147,8 +2151,6 @@ , currentScope ); - unsigned orgGrammarUri = fURIStringPool->getId(fGrammar->getTargetNamespace()); - if (!elemDecl && orgGrammarUri != fEmptyNamespaceId) { //not found, switch grammar and try globalNS if (!switchGrammar(XMLUni::fgZeroLenString) && fValidate && !laxThisOne) @@ -2182,13 +2184,12 @@ if (!elemDecl && orgGrammarUri != fEmptyNamespaceId) { // still Not found in specified uri // go to original Grammar again to see if element needs to be fully qualified. - const XMLCh* uriStr = getURIText(orgGrammarUri); - if (!switchGrammar(uriStr) && fValidate && !laxThisOne) + if (!switchGrammar(original_uriStr) && fValidate && !laxThisOne) { fValidator->emitError ( XMLValid::GrammarNotFound - ,uriStr + ,original_uriStr ); } @@ -2212,6 +2213,8 @@ if (!elemDecl) { // still not found, fault this in and issue error later + // switch back to original grammar first + switchGrammar(original_uriStr); elemDecl = fGrammar->putElemDecl(uriId , nameRawBuf , fPrefixBuf.getRawBuffer() 1.12 +10 -7 xml-xerces/c/src/xercesc/internal/SGXMLScanner.cpp Index: SGXMLScanner.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/SGXMLScanner.cpp,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- SGXMLScanner.cpp 17 Jan 2003 19:13:21 -0000 1.11 +++ SGXMLScanner.cpp 23 Jan 2003 19:54:35 -0000 1.12 @@ -1177,6 +1177,8 @@ XMLElementDecl* elemDecl = 0; bool wasAdded = false; const XMLCh* nameRawBuf = &qnameRawBuf[prefixColonPos + 1]; + const XMLCh* original_uriStr = fGrammar->getTargetNamespace(); + unsigned orgGrammarUri = fURIStringPool->getId(original_uriStr); if (uriId != fEmptyNamespaceId) { @@ -1189,7 +1191,7 @@ , currentScope ); - if (!elemDecl && (fURIStringPool->getId(fGrammar->getTargetNamespace()) != uriId)) { + if (!elemDecl && (orgGrammarUri != uriId)) { // not found, switch to the specified grammar const XMLCh* uriStr = getURIText(uriId); if (!switchGrammar(uriStr) && fValidate && !laxThisOne) @@ -1243,6 +1245,8 @@ if (!elemDecl) { // still not found, fault this in and issue error later + // switch back to original grammar first + switchGrammar(original_uriStr); elemDecl = fGrammar->putElemDecl(uriId , nameRawBuf , fPrefixBuf.getRawBuffer() @@ -1267,8 +1271,6 @@ , currentScope ); - unsigned orgGrammarUri = fURIStringPool->getId(fGrammar->getTargetNamespace()); - if (!elemDecl && orgGrammarUri != fEmptyNamespaceId) { //not found, switch grammar and try globalNS if (!switchGrammar(XMLUni::fgZeroLenString) && fValidate && !laxThisOne) @@ -1302,13 +1304,12 @@ if (!elemDecl && orgGrammarUri != fEmptyNamespaceId) { // still Not found in specified uri // go to original Grammar again to see if element needs to be fully qualified. - const XMLCh* uriStr = getURIText(orgGrammarUri); - if (!switchGrammar(uriStr) && fValidate && !laxThisOne) + if (!switchGrammar(original_uriStr) && fValidate && !laxThisOne) { fValidator->emitError ( XMLValid::GrammarNotFound - ,uriStr + ,original_uriStr ); } @@ -1332,6 +1333,8 @@ if (!elemDecl) { // still not found, fault this in and issue error later + // switch back to original grammar first + switchGrammar(original_uriStr); elemDecl = fGrammar->putElemDecl(uriId , nameRawBuf , fPrefixBuf.getRawBuffer()
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]