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]