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]