peiyongz    2004/09/21 09:10:47

  Modified:    c/src/xercesc/internal SGXMLScanner.cpp IGXMLScanner.cpp
  Log:
  Handle partial PSVIElement
  
  Revision  Changes    Path
  1.94      +57 -1     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.93
  retrieving revision 1.94
  diff -u -r1.93 -r1.94
  --- SGXMLScanner.cpp  20 Sep 2004 15:00:50 -0000      1.93
  +++ SGXMLScanner.cpp  21 Sep 2004 16:10:47 -0000      1.94
  @@ -1758,7 +1758,63 @@
           }
       }
       else    // not empty
  +    {
  +
  +        // send a partial element psvi
  +        if (fPSVIHandler)
  +        {
  +
  +            ComplexTypeInfo*   curTypeInfo = 0;
  +            DatatypeValidator* curDV = 0;
  +            XSTypeDefinition*  typeDef = 0;
  +        
  +            if (fValidate && elemDecl->isDeclared())
  +            {
  +                curTypeInfo = ((SchemaValidator*) fValidator)->getCurrentTypeInfo();
  +                    
  +                if (curTypeInfo)
  +                {
  +                    typeDef = (XSTypeDefinition*) fModel->getXSObject(curTypeInfo); 
      
  +                }
  +                else
  +                {
  +                    curDV = ((SchemaValidator*) 
fValidator)->getCurrentDatatypeValidator();
  +
  +                    if (curDV)
  +                    {
  +                        typeDef = (XSTypeDefinition*) fModel->getXSObject(curDV);
  +                    }
  +                }
  +            }
  +                       
  +            fPSVIElement->reset
  +                (
  +                  PSVIElement::VALIDITY_NOTKNOWN 
  +                , PSVIElement::VALIDATION_NONE   
  +                , fRootElemName                  
  +                , ((SchemaValidator*) fValidator)->getIsElemSpecified() 
  +                , (elemDecl->isDeclared()) ? (XSElementDeclaration*) 
fModel->getXSObject(elemDecl) : 0
  +                , typeDef 
  +                , 0 //memberType
  +                , fModel 
  +                , ((SchemaElementDecl*)elemDecl)->getDefaultValue()  
  +                , 0                                                  
  +                , 0                                                  
  +                , 0                                                  
  +                );
  +
  +
  +            fPSVIHandler->handlePartialElementPSVI
  +                (
  +                  elemDecl->getBaseName()
  +                , fURIStringPool->getValueForId(elemDecl->getURI())
  +                , fPSVIElement
  +                );
  +
  +        }
  +
           fErrorStack->push(fPSVIElemContext.fErrorOccurred);
  +    }
   
       return true;
   }
  
  
  
  1.75      +54 -1     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.74
  retrieving revision 1.75
  diff -u -r1.74 -r1.75
  --- IGXMLScanner.cpp  20 Sep 2004 15:00:50 -0000      1.74
  +++ IGXMLScanner.cpp  21 Sep 2004 16:10:47 -0000      1.75
  @@ -2899,6 +2899,59 @@
       }
       else if (fGrammarType == Grammar::SchemaGrammarType) 
       {   
  +        // send a partial element psvi
  +        if (fPSVIHandler)
  +        {
  +
  +            ComplexTypeInfo*   curTypeInfo = 0;
  +            DatatypeValidator* curDV = 0;
  +            XSTypeDefinition*  typeDef = 0;
  +        
  +            if (fValidate && elemDecl->isDeclared())
  +            {
  +                curTypeInfo = ((SchemaValidator*) fValidator)->getCurrentTypeInfo();
  +                    
  +                if (curTypeInfo)
  +                {
  +                    typeDef = (XSTypeDefinition*) fModel->getXSObject(curTypeInfo); 
      
  +                }
  +                else
  +                {
  +                    curDV = ((SchemaValidator*) 
fValidator)->getCurrentDatatypeValidator();
  +
  +                    if (curDV)
  +                    {
  +                        typeDef = (XSTypeDefinition*) fModel->getXSObject(curDV);
  +                    }
  +                }
  +            }
  +                       
  +            fPSVIElement->reset
  +                (
  +                  PSVIElement::VALIDITY_NOTKNOWN 
  +                , PSVIElement::VALIDATION_NONE   
  +                , fRootElemName                  
  +                , ((SchemaValidator*) fValidator)->getIsElemSpecified() 
  +                , (elemDecl->isDeclared()) ? (XSElementDeclaration*) 
fModel->getXSObject(elemDecl) : 0
  +                , typeDef 
  +                , 0 //memberType
  +                , fModel 
  +                , ((SchemaElementDecl*)elemDecl)->getDefaultValue()  
  +                , 0                                                  
  +                , 0                                                  
  +                , 0                                                  
  +                );
  +
  +
  +            fPSVIHandler->handlePartialElementPSVI
  +                (
  +                  elemDecl->getBaseName()
  +                , fURIStringPool->getValueForId(elemDecl->getURI())
  +                , fPSVIElement
  +                );
  +
  +        }
  +
           // not empty
           fErrorStack->push(fPSVIElemContext.fErrorOccurred);
       }
  
  
  

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

Reply via email to