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]