You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by kn...@apache.org on 2001/07/24 20:32:27 UTC

cvs commit: xml-xerces/c/src/internal XMLScanner.cpp

knoaman     01/07/24 11:32:27

  Modified:    c/src/internal XMLScanner.cpp
  Log:
  Added support for <group> + extra constraint checking for complexType
  
  Revision  Changes    Path
  1.57      +39 -25    xml-xerces/c/src/internal/XMLScanner.cpp
  
  Index: XMLScanner.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/internal/XMLScanner.cpp,v
  retrieving revision 1.56
  retrieving revision 1.57
  diff -u -r1.56 -r1.57
  --- XMLScanner.cpp	2001/07/13 16:56:41	1.56
  +++ XMLScanner.cpp	2001/07/24 18:32:27	1.57
  @@ -55,7 +55,7 @@
    */
   
   /*
  - * $Id: XMLScanner.cpp,v 1.56 2001/07/13 16:56:41 tng Exp $
  + * $Id: XMLScanner.cpp,v 1.57 2001/07/24 18:32:27 knoaman Exp $
    */
   
   
  @@ -2814,28 +2814,41 @@
       //
       bool wasAdded = false;
       XMLElementDecl* elemDecl;
  +    const XMLCh* nameRawBuf = fNameBuf.getRawBuffer();
  +    const XMLCh* qnameRawBuf = fQNameBuf.getRawBuffer(); 
   
       if (uriId != fEmptyNamespaceId) {
  -        if (fURIStringPool->getId(fGrammar->getTargetNamespace()) != uriId) {
  +
  +        // Check in current grammar before switching if necessary
  +        elemDecl = fGrammar->getElemDecl
  +        (
  +          uriId
  +          , nameRawBuf
  +          , qnameRawBuf
  +          , currentScope
  +        );
  +
  +        if (!elemDecl && fURIStringPool->getId(fGrammar->getTargetNamespace()) != uriId) {
  +
               // switch grammar first
  -            XMLBuffer bufURI;
  -            getURIText(uriId, bufURI);
  -            if (!switchGrammar(bufURI.getRawBuffer()) && fValidate && !laxThisOne)
  +            const XMLCh* uriStr = getURIText(uriId);
  +            if (!switchGrammar(uriStr) && fValidate && !laxThisOne)
               {
                   fValidator->emitError
                   (
                       XMLValid::GrammarNotFound
  -                    , bufURI.getRawBuffer()
  +                    ,uriStr
                   );
               }
  +
  +            elemDecl = fGrammar->getElemDecl
  +            (
  +              uriId
  +              , nameRawBuf
  +              , qnameRawBuf
  +              , currentScope
  +            );
           }
  -        elemDecl = fGrammar->getElemDecl
  -                   (
  -                      uriId
  -                    , fNameBuf.getRawBuffer()
  -                    , fQNameBuf.getRawBuffer()
  -                    , currentScope
  -                    );
   
           if (!elemDecl) {
               if (currentScope != Grammar::TOP_LEVEL_SCOPE) {
  @@ -2844,8 +2857,8 @@
                   elemDecl = fGrammar->getElemDecl
                              (
                                  fEmptyNamespaceId
  -                               , fNameBuf.getRawBuffer()
  -                               , fQNameBuf.getRawBuffer()
  +                               , nameRawBuf
  +                               , qnameRawBuf
                                  , currentScope
                              );
               }
  @@ -2862,9 +2875,9 @@
                   elemDecl = fGrammar->findOrAddElemDecl
                   (
                       uriId
  -                    , fNameBuf.getRawBuffer()
  +                    , nameRawBuf
                       , fPrefixBuf.getRawBuffer()
  -                    , fQNameBuf.getRawBuffer()
  +                    , qnameRawBuf
                       , Grammar::TOP_LEVEL_SCOPE
                       , wasAdded
                   );
  @@ -2881,8 +2894,8 @@
           elemDecl = fGrammar->getElemDecl
                      (
                         uriId
  -                    , fNameBuf.getRawBuffer()
  -                    , fQNameBuf.getRawBuffer()
  +                    , nameRawBuf
  +                    , qnameRawBuf
                       , currentScope
                       );
   
  @@ -2892,8 +2905,8 @@
               elemDecl = fGrammar->getElemDecl
                          (
                              fURIStringPool->getId(fGrammar->getTargetNamespace())
  -                           , fNameBuf.getRawBuffer()
  -                           , fQNameBuf.getRawBuffer()
  +                           , nameRawBuf
  +                           , qnameRawBuf
                              , currentScope
                          );
   
  @@ -2920,8 +2933,8 @@
                   elemDecl = fGrammar->getElemDecl
                              (
                                 uriId
  -                            , fNameBuf.getRawBuffer()
  -                            , fQNameBuf.getRawBuffer()
  +                            , nameRawBuf
  +                            , qnameRawBuf
                               , currentScope
                               );
   
  @@ -2930,9 +2943,9 @@
                       elemDecl = fGrammar->findOrAddElemDecl
                       (
                           uriId
  -                        , fNameBuf.getRawBuffer()
  +                        , nameRawBuf
                           , fPrefixBuf.getRawBuffer()
  -                        , fQNameBuf.getRawBuffer()
  +                        , qnameRawBuf
                           , Grammar::TOP_LEVEL_SCOPE
                           , wasAdded
                       );
  @@ -3478,4 +3491,5 @@
   
       return false;
   }
  +
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org