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]

Reply via email to