gareth      2003/08/27 06:19:14

  Modified:    c/src/xercesc/internal IGXMLScanner.cpp SGXMLScanner.cpp
               c/tests/DOM/TypeInfo TypeInfo.cpp
               c/tests/DOM/TypeInfo/data TypeInfo.xml TypeInfoNoDTD.xml
  Log:
  Fixed a bug where multiple invalid elements with the same name/uri were not being 
set with appropriate PSVI info. Added a test case to expose the problem.
  
  Revision  Changes    Path
  1.22      +8 -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.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- IGXMLScanner.cpp  14 Aug 2003 02:56:41 -0000      1.21
  +++ IGXMLScanner.cpp  27 Aug 2003 13:19:14 -0000      1.22
  @@ -2335,11 +2335,17 @@
   
           // If its not marked declared and validating, then emit an error
           if (!elemDecl->isDeclared()) {
  +            if(elemDecl->getCreateReason() == XMLElementDecl::NoReason) {
  +                if(fGrammarType == Grammar::SchemaGrammarType) {
  +                    ((SchemaElementDecl 
*)(elemDecl))->setValidity(PSVIDefs::INVALID);
  +                    ((SchemaElementDecl 
*)(elemDecl))->setValidationAttempted(PSVIDefs::FULL);
  +                }
  +            }
  +            
               if (laxThisOne) {
                   fValidate = false;
                   fElemStack.setValidationFlag(fValidate);
               }
  -
               if (fValidate)
               {
                   fValidator->emitError
  @@ -2347,11 +2353,6 @@
                       XMLValid::ElementNotDefined
                       , elemDecl->getFullName()
                   );
  -
  -                if(fGrammarType == Grammar::SchemaGrammarType) {
  -                    ((SchemaElementDecl 
*)(elemDecl))->setValidity(PSVIDefs::INVALID);
  -                    ((SchemaElementDecl 
*)(elemDecl))->setValidationAttempted(PSVIDefs::FULL);
  -                }
               }
           }
   
  
  
  
  1.34      +5 -3      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.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- SGXMLScanner.cpp  31 Jul 2003 17:05:03 -0000      1.33
  +++ SGXMLScanner.cpp  27 Aug 2003 13:19:14 -0000      1.34
  @@ -1421,6 +1421,10 @@
   
           // If its not marked declared and validating, then emit an error
           if (!elemDecl->isDeclared()) {
  +            if(elemDecl->getCreateReason() == XMLElementDecl::NoReason) {
  +                ((SchemaElementDecl *)(elemDecl))->setValidity(PSVIDefs::INVALID);
  +                ((SchemaElementDecl 
*)(elemDecl))->setValidationAttempted(PSVIDefs::FULL);
  +            }
               if (laxThisOne) {
                   fValidate = false;
                   fElemStack.setValidationFlag(fValidate);                
  @@ -1433,8 +1437,6 @@
                       XMLValid::ElementNotDefined
                       , elemDecl->getFullName()
                   );
  -                ((SchemaElementDecl *)(elemDecl))->setValidity(PSVIDefs::INVALID);
  -                ((SchemaElementDecl 
*)(elemDecl))->setValidationAttempted(PSVIDefs::FULL);
               }
           }
   
  
  
  
  1.6       +3 -0      xml-xerces/c/tests/DOM/TypeInfo/TypeInfo.cpp
  
  Index: TypeInfo.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/tests/DOM/TypeInfo/TypeInfo.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- TypeInfo.cpp      30 May 2003 13:08:25 -0000      1.5
  +++ TypeInfo.cpp      27 Aug 2003 13:19:14 -0000      1.6
  @@ -725,6 +725,9 @@
       testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling();
       DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgATTVAL_ANYTYPE, 
SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__);
   
  +    DOMElement *testEle2 = (DOMElement *)testEle->getFirstChild()->getNextSibling();
  +    DOMTYPEINFOTEST(testEle2->getTypeInfo(), SchemaSymbols::fgATTVAL_ANYTYPE, 
SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__);
  +    
       testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling();
       DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgATTVAL_ANYTYPE, 
SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__);
   
  
  
  
  1.3       +1 -1      xml-xerces/c/tests/DOM/TypeInfo/data/TypeInfo.xml
  
  Index: TypeInfo.xml
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/tests/DOM/TypeInfo/data/TypeInfo.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TypeInfo.xml      6 Feb 2003 13:52:33 -0000       1.2
  +++ TypeInfo.xml      27 Aug 2003 13:19:14 -0000      1.3
  @@ -160,7 +160,7 @@
       <b >b</b>
     </complexXsi>
     <unionTest >hello1</unionTest>
  -  <empty ><a /></empty>
  +  <empty ><a /><a /></empty>
     <invalidAttrTest attr="lala" />
     <missingAttrTest />
     <prohibitedAttrTest attr="lala" />
  
  
  
  1.3       +1 -1      xml-xerces/c/tests/DOM/TypeInfo/data/TypeInfoNoDTD.xml
  
  Index: TypeInfoNoDTD.xml
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/tests/DOM/TypeInfo/data/TypeInfoNoDTD.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TypeInfoNoDTD.xml 6 Feb 2003 13:52:33 -0000       1.2
  +++ TypeInfoNoDTD.xml 27 Aug 2003 13:19:14 -0000      1.3
  @@ -157,7 +157,7 @@
       <b >b</b>
     </complexXsi>
     <unionTest >hello1</unionTest>
  -  <empty ><a /></empty>
  +  <empty ><a /><a /></empty>
     <invalidAttrTest attr="lala" />
     <missingAttrTest />
     <prohibitedAttrTest attr="lala" />
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to