neilg 2003/11/21 14:38:20
Modified: c/src/xercesc/internal IGXMLScanner.cpp IGXMLScanner2.cpp
SGXMLScanner.cpp
Log:
Setting the stage for PSVI (element and attribute) implementation:
pointing out all places in scanners where validation updates need
to occur. Thanks to David Cargill.
Revision Changes Path
1.32 +67 -32 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.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- IGXMLScanner.cpp 21 Nov 2003 14:46:56 -0000 1.31
+++ IGXMLScanner.cpp 21 Nov 2003 22:38:19 -0000 1.32
@@ -1131,10 +1131,9 @@
}
// reset xsi:type ComplexTypeInfo
- if (fGrammarType == Grammar::SchemaGrammarType) {
- // REVISIT XXX: should not be necessary
+ if (fGrammarType == Grammar::SchemaGrammarType) {
((SchemaElementDecl*)topElem->fThisElement)->reset();
- if (!isRoot && false)
+ if (!isRoot)
((SchemaElementDecl*)(fElemStack.topElement()->fThisElement))->
setXsiComplexTypeInfo(((SchemaValidator*)fValidator)->getCurrentTypeInfo());
}
@@ -2025,7 +2024,7 @@
// This method is called to scan a start tag when we are processing
// namespaces. There are two different versions of this method, one for
-// namespace aware processing an done for non-namespace aware processing.
+// namespace aware processing and one for non-namespace aware processing.
//
// This method is called after we've scanned the < of a start tag. So we
// have to get the element name, then scan the attributes, after which
@@ -2450,13 +2449,10 @@
fValidate = false;
fElemStack.setValidationFlag(fValidate);
}
- else if(fGrammarType == Grammar::SchemaGrammarType && fValidate) {
- ((SchemaElementDecl
*)(elemDecl))->setValidationAttempted(PSVIDefs::FULL);
- }
-
- // If validating then emit an error
- if (fValidate)
+ else if (fValidate)
{
+ // If validating then emit an error
+
// This is to tell the reuse Validator that this element was
// faulted-in, was not an element in the grammar pool originally
elemDecl->setCreateReason(XMLElementDecl::JustFaultIn);
@@ -2468,7 +2464,16 @@
);
if(fGrammarType == Grammar::SchemaGrammarType)
- ((SchemaElementDecl *)(elemDecl))->setValidity(PSVIDefs::INVALID);
+ {
+ ((SchemaElementDecl
*)(elemDecl))->setValidationAttempted(PSVIDefs::FULL);
+ ((SchemaElementDecl *)(elemDecl))->setValidity(PSVIDefs::INVALID);\
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ //
PSVIElement->setValidationAttempted(PSVIItem::VALIDATION_FULL);
+ // PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
+ }
}
}
else
@@ -2477,6 +2482,12 @@
if (fValidate) {
((SchemaElementDecl
*)(elemDecl))->setValidationAttempted(PSVIDefs::FULL);
((SchemaElementDecl *)(elemDecl))->setValidity(PSVIDefs::VALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ //
PSVIElement->setValidationAttempted(PSVIItem::VALIDATION_FULL);
+ // PSVIElement->setValidity(PSVIItem::VALIDITY_VALID);
+ }
}
}
@@ -2486,6 +2497,12 @@
if(fGrammarType == Grammar::SchemaGrammarType) {
((SchemaElementDecl
*)(elemDecl))->setValidity(PSVIDefs::INVALID);
((SchemaElementDecl
*)(elemDecl))->setValidationAttempted(PSVIDefs::FULL);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ //
PSVIElement->setValidationAttempted(PSVIItem::VALIDATION_FULL);
+ // PSVIElement->setValidity(PSVIItem::VALIDATION_INVALID);
+ }
}
}
@@ -2493,7 +2510,7 @@
fValidate = false;
fElemStack.setValidationFlag(fValidate);
}
- if (fValidate)
+ else if (fValidate)
{
fValidator->emitError
(
@@ -2502,9 +2519,8 @@
);
}
}
-
- // REVISIT: XXX not necessary
- if (fGrammarType == Grammar::SchemaGrammarType && false) {
+
+ if (fGrammarType == Grammar::SchemaGrammarType) {
((SchemaElementDecl*)elemDecl)->setXsiComplexTypeInfo(0);
((SchemaElementDecl*)elemDecl)->setXsiSimpleTypeInfo(0);
}
@@ -2512,6 +2528,11 @@
if(errorBeforeElementFound && fGrammarType == Grammar::SchemaGrammarType) {
((SchemaElementDecl *)(elemDecl))->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ // PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
@@ -2550,16 +2571,21 @@
(
XMLValid::GrammarNotFound
, prefixBuf.getRawBuffer()
- );
-
- if(fGrammarType == Grammar::SchemaGrammarType)
- ((SchemaElementDecl
*)(elemDecl))->setValidity(PSVIDefs::INVALID);
-
+ );
+ ((SchemaElementDecl
*)(elemDecl))->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ //
PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
- else if(errorCondition) {
- if(fGrammarType == Grammar::SchemaGrammarType) {
- ((SchemaElementDecl
*)(elemDecl))->setValidationAttempted(PSVIDefs::NONE);
- ((SchemaElementDecl
*)(elemDecl))->setValidity(PSVIDefs::UNKNOWN);
+ else if(errorCondition) {
+ ((SchemaElementDecl
*)(elemDecl))->setValidationAttempted(PSVIDefs::NONE);
+ ((SchemaElementDecl
*)(elemDecl))->setValidity(PSVIDefs::UNKNOWN);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ //
PSVIElement->setValidationAttempted(PSVIItem::VALIDATION_NONE);
+ //
PSVIElement->setValidity(PSVIItem::VALIDITY_NOTKNOWN);
}
}
}
@@ -2594,8 +2620,14 @@
fValidator->emitError(XMLValid::RootElemNotLikeDocType);
if(fGrammarType == Grammar::SchemaGrammarType)
+ {
((SchemaElementDecl *)(elemDecl))->setValidity(PSVIDefs::INVALID);
-
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ // PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
+ }
}
}
else if (parentValidation)
@@ -2634,7 +2666,6 @@
count = fMatcherStack->getMatcherCount();
for (unsigned int j = 0; j < count; j++) {
-
XPathMatcher* matcher = fMatcherStack->getMatcherAt(j);
matcher->startElement(*elemDecl, uriId, fPrefixBuf.getRawBuffer(),
*fAttrList, attCount);
}
@@ -2678,8 +2709,14 @@
, elemDecl->getFormattedContentModel()
);
if(fGrammarType == Grammar::SchemaGrammarType)
+ {
((SchemaElementDecl
*)(elemDecl))->setValidity(PSVIDefs::INVALID);
-
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ // PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
+ }
}
if (fGrammarType == Grammar::SchemaGrammarType) {
@@ -2735,7 +2772,6 @@
if(!isRoot && fGrammarType == Grammar::SchemaGrammarType)
((SchemaElementDecl
*)fElemStack.topElement()->fThisElement)->updateValidityFromElement(elemDecl,
fGrammarType);
-
// If we have a doc handler, tell it about the end tag
if (fDocHandler)
{
@@ -2749,10 +2785,9 @@
}
// reset xsi:type ComplexTypeInfo
- if (fGrammarType == Grammar::SchemaGrammarType) {
- // REVISIT XXX: should not be necessary
+ if (fGrammarType == Grammar::SchemaGrammarType) {
((SchemaElementDecl*)elemDecl)->reset();
- if (!isRoot && false)
+ if (!isRoot)
((SchemaElementDecl*)(fElemStack.topElement()->fThisElement))->
setXsiComplexTypeInfo(((SchemaValidator*)fValidator)->getCurrentTypeInfo());
}
1.41 +124 -15 xml-xerces/c/src/xercesc/internal/IGXMLScanner2.cpp
Index: IGXMLScanner2.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/IGXMLScanner2.cpp,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -r1.40 -r1.41
--- IGXMLScanner2.cpp 12 Nov 2003 20:29:47 -0000 1.40
+++ IGXMLScanner2.cpp 21 Nov 2003 22:38:19 -0000 1.41
@@ -258,6 +258,11 @@
);
if(fGrammarType == Grammar::SchemaGrammarType) {
((SchemaAttDef
*)(attDef))->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ //
PSVIAttribute->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
}
}
@@ -275,6 +280,11 @@
);
if(fGrammarType == Grammar::SchemaGrammarType) {
((SchemaAttDef
*)(attDef))->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ //
PSVIAttribute->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
}
}
@@ -300,10 +310,20 @@
if(!skipThisOne && fGrammarType == Grammar::SchemaGrammarType) {
//we may have set it to invalid already, but this is the first time
we are guarenteed to have the attDef
- if(((SchemaAttDef *)(attDef))->getValidity() != PSVIDefs::INVALID)
+ if(((SchemaAttDef *)(attDef))->getValidity() != PSVIDefs::INVALID)
((SchemaAttDef *)(attDef))->setValidity(PSVIDefs::VALID);
-
+ // REVISIT: need to check getValidity...
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ // PSVIAttribute->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
((SchemaAttDef *)(attDef))->setValidationAttempted(PSVIDefs::FULL);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ //
PSVIAttribute->setValidationAttempted(PSVIItem::VALIDATION_FULL);
+ }
}
if (wasAdded)
@@ -342,11 +362,22 @@
);
if(fGrammarType == Grammar::SchemaGrammarType) {
((SchemaAttDef *)(attDef))->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ // PSVIAttribute->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
}
else if(errorCondition && laxThisOne && fGrammarType ==
Grammar::SchemaGrammarType) {
((SchemaAttDef *)(attDef))->setValidationAttempted(PSVIDefs::NONE);
((SchemaAttDef *)(attDef))->setValidity(PSVIDefs::UNKNOWN);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ // PSVIAttribute->setValidity(PSVIItem::VALIDITY_NOTKNOWN);
+ //
PSVIAttribute->setValidationAttempted(PSVIItem::VALIDATION_NONE);
+ }
}
@@ -362,6 +393,11 @@
);
if(fGrammarType == Grammar::SchemaGrammarType) {
((SchemaAttDef *)(attDef))->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ // PSVIAttribute->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
}
else
@@ -554,6 +590,12 @@
if(fGrammarType == Grammar::SchemaGrammarType) {
((SchemaAttDef
*)curDef)->setValidationAttempted(PSVIDefs::FULL);
((SchemaAttDef *)curDef)->setValidity(PSVIDefs::VALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ // PSVIAttribute->setValidity(PSVIItem::VALIDITY_VALID;
+ //
PSVIAttribute->setValidationAttempted(PSVIItem::VALIDATION_FULL);
+ }
}
//the attributes is not provided
@@ -570,7 +612,14 @@
, curDef->getFullName()
);
if(fGrammarType == Grammar::SchemaGrammarType)
+ {
((SchemaAttDef
*)(curDef))->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ //
PSVIAttribute->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
+ }
}
else if ((defType == XMLAttDef::Default) ||
(defType == XMLAttDef::Fixed) )
@@ -581,7 +630,14 @@
// Document is standalone, so attributes must not be
defaulted.
fValidator->emitError(XMLValid::NoDefAttForStandalone,
curDef->getFullName(), elemDecl->getFullName());
if(fGrammarType == Grammar::SchemaGrammarType)
+ {
((SchemaAttDef
*)(curDef))->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ //
PSVIAttribute->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
+ }
}
}
}
@@ -648,6 +704,12 @@
if(fGrammarType == Grammar::SchemaGrammarType) {
((SchemaAttDef *)(curDef))->setValidity(PSVIDefs::INVALID);
((SchemaElementDecl
*)elemDecl)->updateValidityFromAttribute((SchemaAttDef *)curDef);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ //
PSVIAttribute->setValidity(PSVIItem::VALIDITY_INVALID);
+ // new function?
+ }
}
}
}
@@ -721,13 +783,17 @@
// XML 1.0, Section 2.9
if (fStandalone && fValidate && isAttExternal)
{
- // Can't have a standalone document declaration of "yes"
if attribute
- // values are subject to normalisation
- fValidator->emitError(XMLValid::NoAttNormForStandalone,
attDef->getFullName());
- if(fGrammarType == Grammar::SchemaGrammarType) {
- ((SchemaAttDef
*)(attDef))->setValidity(PSVIDefs::INVALID);
- }
-
+ // Can't have a standalone document declaration of "yes" if
attribute
+ // values are subject to normalisation
+ fValidator->emitError(XMLValid::NoAttNormForStandalone,
attDef->getFullName());
+ if(fGrammarType == Grammar::SchemaGrammarType) {
+ ((SchemaAttDef
*)(attDef))->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ //
PSVIAttribute->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
+ }
}
nextCh = chSpace;
}
@@ -768,6 +834,11 @@
fValidator->emitError(XMLValid::NoAttNormForStandalone,
attDef->getFullName());
if(fGrammarType == Grammar::SchemaGrammarType) {
((SchemaAttDef
*)(attDef))->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ //
PSVIAttribute->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
}
}
@@ -1073,7 +1144,14 @@
// They definitely cannot handle any type of char data
fValidator->emitError(XMLValid::NoCharDataInCM);
if(fGrammarType == Grammar::SchemaGrammarType)
+ {
((SchemaElementDecl
*)topElem->fThisElement)->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ // PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
+ }
}
else if (fReaderMgr.getCurrentReader()->isAllSpaces(rawBuf, len))
{
@@ -1166,7 +1244,14 @@
{
fValidator->emitError(XMLValid::NoCharDataInCM);
if(fGrammarType == Grammar::SchemaGrammarType)
+ {
((SchemaElementDecl
*)topElem->fThisElement)->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ // PSVIAttribute->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
+ }
}
}
}
@@ -1998,12 +2083,17 @@
// XML 1.0, Section 2.9
if (fStandalone && fValidate && isAttExternal)
{
- // Can't have a standalone document declaration of
"yes" if attribute
- // values are subject to normalisation
-
fValidator->emitError(XMLValid::NoAttNormForStandalone, attrName);
+ // Can't have a standalone document declaration of
"yes" if attribute
+ // values are subject to normalisation
+ fValidator->emitError(XMLValid::NoAttNormForStandalone,
attrName);
- if(fGrammarType == Grammar::SchemaGrammarType) {
- ((SchemaAttDef
*)attDef)->setValidity(PSVIDefs::INVALID);
+ if(fGrammarType == Grammar::SchemaGrammarType) {
+ ((SchemaAttDef
*)attDef)->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ //
PSVIAttribute->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
}
nextCh = chSpace;
@@ -2147,7 +2237,14 @@
// element type with element content whose element declaration
was external
fValidator->emitError(XMLValid::NoWSForStandalone);
if(fGrammarType == Grammar::SchemaGrammarType)
+ {
((SchemaElementDecl
*)topElem->fThisElement)->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ // PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
+ }
}
}
}
@@ -2186,6 +2283,11 @@
// They definitely cannot handle any type of char data
fValidator->emitError(XMLValid::NoCharDataInCM);
((SchemaElementDecl
*)topElem->fThisElement)->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ // PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
}
@@ -2480,7 +2582,14 @@
//
fValidator->emitError(XMLValid::NoWSForStandalone);
if(fGrammarType == Grammar::SchemaGrammarType)
+ {
((SchemaElementDecl
*)fElemStack.topElement()->fThisElement)->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ // PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
+ }
}
}
}
1.49 +163 -24 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.48
retrieving revision 1.49
diff -u -r1.48 -r1.49
--- SGXMLScanner.cpp 12 Nov 2003 20:29:47 -0000 1.48
+++ SGXMLScanner.cpp 21 Nov 2003 22:38:19 -0000 1.49
@@ -1059,12 +1059,9 @@
);
}
-
- // reset xsi:type ComplexTypeInfo
- // REVISIT mutability!
+ // reset xsi:type ComplexTypeInfo
((SchemaElementDecl*)topElem->fThisElement)->reset();
- // XXX
- if (!isRoot && false)
+ if (!isRoot)
((SchemaElementDecl*)(fElemStack.topElement()->fThisElement))->
setXsiComplexTypeInfo(((SchemaValidator*)fValidator)->getCurrentTypeInfo());
@@ -1449,6 +1446,11 @@
}
else if(fValidate) {
((SchemaElementDecl
*)(elemDecl))->setValidationAttempted(PSVIDefs::FULL);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ // PSVIElement->setValidationAttempted(PSVIItem::VALIDATION_FULL);
+ }
}
// If validating then emit an error
@@ -1464,7 +1466,11 @@
, elemDecl->getFullName()
);
((SchemaElementDecl *)(elemDecl))->setValidity(PSVIDefs::INVALID);
-
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ // PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
}
else
@@ -1473,6 +1479,12 @@
if (fValidate) {
((SchemaElementDecl
*)(elemDecl))->setValidationAttempted(PSVIDefs::FULL);
((SchemaElementDecl *)(elemDecl))->setValidity(PSVIDefs::VALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ //
PSVIElement->setValidationAttempted(PSVIItem::VALIDATION_FULL);
+ // PSVIElement->setValidity(PSVIItem::VALIDITY_VALID);
+ }
}
}
@@ -1481,6 +1493,12 @@
if(elemDecl->getCreateReason() == XMLElementDecl::NoReason) {
((SchemaElementDecl *)(elemDecl))->setValidity(PSVIDefs::INVALID);
((SchemaElementDecl
*)(elemDecl))->setValidationAttempted(PSVIDefs::FULL);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ //
PSVIElement->setValidationAttempted(PSVIItem::VALIDATION_FULL);
+ // PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
if (laxThisOne) {
fValidate = false;
@@ -1496,8 +1514,7 @@
);
}
}
-
- // XXX REVISIT: should not be necessary
+
((SchemaElementDecl*)elemDecl)->setXsiComplexTypeInfo(0);
((SchemaElementDecl*)elemDecl)->setXsiSimpleTypeInfo(0);
}
@@ -1505,6 +1522,11 @@
if(errorBeforeElementFound) {
((SchemaElementDecl *)(elemDecl))->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ // PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
// Now we can update the element stack to set the current element
@@ -1544,12 +1566,22 @@
, prefixBuf.getRawBuffer()
);
((SchemaElementDecl
*)(elemDecl))->setValidity(PSVIDefs::INVALID);
-
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ // PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
else if(errorCondition) {
((SchemaElementDecl
*)(elemDecl))->setValidationAttempted(PSVIDefs::NONE);
((SchemaElementDecl
*)(elemDecl))->setValidity(PSVIDefs::UNKNOWN);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ //
PSVIElement->setValidationAttempted(PSVIItem::VALIDATION_FULL);
+ // PSVIElement->setValidity(PSVIItem::VALIDITY_NOTKNOWN);
+ }
}
}
@@ -1576,6 +1608,11 @@
if (fValidatorFromUser &&
!fValidator->checkRootElement(elemDecl->getId())) {
fValidator->emitError(XMLValid::RootElemNotLikeDocType);
((SchemaElementDecl *)(elemDecl))->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ // PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
}
}
@@ -1661,6 +1698,11 @@
, elemDecl->getFormattedContentModel()
);
((SchemaElementDecl *)(elemDecl))->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ // PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
// call matchers and de-activate context
@@ -1724,10 +1766,9 @@
);
}
- // reset xsi:type ComplexTypeInfo
- // REVISIT XXX; should not be necessary
+ // reset xsi:type ComplexTypeInfo
((SchemaElementDecl*)elemDecl)->reset();
- if (!isRoot && false)
+ if (!isRoot)
((SchemaElementDecl*)(fElemStack.topElement()->fThisElement))->
setXsiComplexTypeInfo(((SchemaValidator*)fValidator)->getCurrentTypeInfo());
@@ -2159,6 +2200,11 @@
, attDef->getFullName()
);
((SchemaAttDef
*)(attDef))->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ //
PSVIAttribute->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
}
else {
@@ -2173,6 +2219,11 @@
, attDef->getFullName()
);
((SchemaAttDef
*)(attDef))->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ //
PSVIAttribute->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
}
}
@@ -2198,9 +2249,21 @@
if(!skipThisOne && fGrammarType == Grammar::SchemaGrammarType) {
//we may have set it to invalid already, but this is the first time
we are guarenteed to have the attDef
if(((SchemaAttDef *)(attDef))->getValidity() != PSVIDefs::INVALID)
- ((SchemaAttDef *)(attDef))->setValidity(PSVIDefs::VALID);
-
+ {
+ ((SchemaAttDef *)(attDef))->setValidity(PSVIDefs::VALID);
+ }
+ // REVISIT: need to check out value...
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ // PSVIAttribute->setValidity(PSVIItem::VALIDITY_VALID);
+ }
((SchemaAttDef *)(attDef))->setValidationAttempted(PSVIDefs::FULL);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ //
PSVIAttribute->setValidationAttempted(PSVIItem::VALIDATION_FULL);
+ }
}
if (wasAdded)
@@ -2238,10 +2301,21 @@
, elemDecl->getFullName()
);
((SchemaAttDef *)attDef)->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ // PSVIAttribute->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
else if(errorCondition && laxThisOne) {
((SchemaAttDef *)(attDef))->setValidationAttempted(PSVIDefs::NONE);
((SchemaAttDef *)(attDef))->setValidity(PSVIDefs::UNKNOWN);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ //
PSVIAttribute->setValidationAttempted(PSVIItem::VALIDATION_NONE);
+ // PSVIAttribute->setValidity(PSVIItem::VALIDITY_NOTKNOWN);
+ }
}
@@ -2256,6 +2330,11 @@
, elemDecl->getFullName()
);
((SchemaAttDef *)(attDef))->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ // PSVIAttribute->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
else
@@ -2421,6 +2500,12 @@
{
((SchemaAttDef *)curDef)->setValidationAttempted(PSVIDefs::FULL);
((SchemaAttDef *)curDef)->setValidity(PSVIDefs::VALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ //
PSVIAttribute->setValidationAttempted(PSVIItem::VALIDATION_FULL);
+ // PSVIAttribute->setValidity(PSVIItem::VALIDITY_VALID);
+ }
//the attributes is not provided
if (fValidate)
@@ -2436,6 +2521,11 @@
, curDef->getFullName()
);
((SchemaAttDef *)(curDef))->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ //
PSVIAttribute->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
else if ((defType == XMLAttDef::Default) ||
(defType == XMLAttDef::Fixed) )
@@ -2446,7 +2536,11 @@
// Document is standalone, so attributes must not be
defaulted.
fValidator->emitError(XMLValid::NoDefAttForStandalone,
curDef->getFullName(), elemDecl->getFullName());
((SchemaAttDef
*)(curDef))->setValidity(PSVIDefs::INVALID);
-
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ //
PSVIAttribute->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
}
}
@@ -2499,6 +2593,11 @@
, curDef->getFullName()
);
((SchemaAttDef *)curDef)->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ // PSVIAttribute->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
((SchemaElementDecl
*)elemDecl)->updateValidityFromAttribute((SchemaAttDef *)curDef);
}
@@ -2574,10 +2673,15 @@
// XML 1.0, Section 2.9
if (fStandalone && fValidate && isAttExternal)
{
- // Can't have a standalone document declaration of "yes"
if attribute
- // values are subject to normalisation
- fValidator->emitError(XMLValid::NoAttNormForStandalone,
attrName);
- ((SchemaAttDef *)attDef)->setValidity(PSVIDefs::INVALID);
+ // Can't have a standalone document declaration of "yes" if
attribute
+ // values are subject to normalisation
+ fValidator->emitError(XMLValid::NoAttNormForStandalone,
attrName);
+ ((SchemaAttDef *)attDef)->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ //
PSVIAttribute->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
nextCh = chSpace;
}
@@ -2613,10 +2717,15 @@
{
if (!firstNonWS || (nextCh != chSpace) || (!*srcPtr) ||
fReaderMgr.getCurrentReader()->isWhitespace(*srcPtr))
{
- // Can't have a standalone document declaration of
"yes" if attribute
- // values are subject to normalisation
-
fValidator->emitError(XMLValid::NoAttNormForStandalone, attrName);
- ((SchemaAttDef
*)attDef)->setValidity(PSVIDefs::INVALID);
+ // Can't have a standalone document declaration of
"yes" if attribute
+ // values are subject to normalisation
+ fValidator->emitError(XMLValid::NoAttNormForStandalone,
attrName);
+ ((SchemaAttDef
*)attDef)->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ //
PSVIAttribute->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
}
continue;
@@ -2894,6 +3003,11 @@
// They definitely cannot handle any type of char data
fValidator->emitError(XMLValid::NoCharDataInCM);
((SchemaElementDecl
*)topElem->fThisElement)->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ // PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
else if (fReaderMgr.getCurrentReader()->isAllSpaces(rawBuf, len))
{
@@ -2978,6 +3092,11 @@
{
fValidator->emitError(XMLValid::NoCharDataInCM);
((SchemaElementDecl
*)topElem->fThisElement)->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ // PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
}
}
@@ -3701,6 +3820,11 @@
// element type with element content whose element declaration
was external
fValidator->emitError(XMLValid::NoWSForStandalone);
((SchemaElementDecl
*)(topElem->fThisElement))->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ // PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
}
}
@@ -3737,6 +3861,11 @@
// They definitely cannot handle any type of char data
fValidator->emitError(XMLValid::NoCharDataInCM);
((SchemaElementDecl
*)topElem->fThisElement)->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ // PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
}
@@ -4015,6 +4144,11 @@
//
fValidator->emitError(XMLValid::NoWSForStandalone);
((SchemaElementDecl
*)fElemStack.topElement()->fThisElement)->setValidity(PSVIDefs::INVALID);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ // PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID);
+ }
}
}
}
@@ -4267,6 +4401,11 @@
// attribute should just be bypassed,
skipThisOne = true;
attWildCard->setValidationAttempted(PSVIDefs::NONE);
+ if (getPSVIHandler())
+ {
+ // REVISIT:
+ //
PSVIAttribute->setValidationAttempted(PSVIItem::VALIDATION_NONE);
+ }
}
else if (defType == XMLAttDef::ProcessContents_Lax) {
laxThisOne = true;
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]