You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by kn...@apache.org on 2002/07/11 20:59:58 UTC
cvs commit: xml-xerces/c/src/xercesc/validators/schema TraverseSchema.hpp TraverseSchema.cpp
knoaman 2002/07/11 11:59:58
Modified: c/src/xercesc/validators/schema TraverseSchema.hpp
TraverseSchema.cpp
Log:
Look for datatype validators in the corresponding grammar instead of
the grammar resolver.
Revision Changes Path
1.12 +1 -4 xml-xerces/c/src/xercesc/validators/schema/TraverseSchema.hpp
Index: TraverseSchema.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/TraverseSchema.hpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- TraverseSchema.hpp 21 Jun 2002 18:35:42 -0000 1.11
+++ TraverseSchema.hpp 11 Jul 2002 18:59:57 -0000 1.12
@@ -88,7 +88,6 @@
// ---------------------------------------------------------------------------
class GrammarResolver;
class XMLEntityHandler;
-class XMLValidator;
class XMLScanner;
class DatatypeValidator;
class DatatypeValidatorFactory;
@@ -119,7 +118,6 @@
, SchemaGrammar* const schemaGrammar
, GrammarResolver* const grammarResolver
, XMLScanner* const xmlScanner
- , XMLValidator* const xmlValidator
, const XMLCh* const schemaURL
, XMLEntityHandler* const entityHandler
, XMLErrorReporter* const errorReporter
@@ -736,7 +734,6 @@
XMLStringPool* fURIStringPool;
XMLStringPool* fStringPool;
XMLBuffer fBuffer;
- XMLValidator* fValidator;
XMLScanner* fScanner;
NamespaceScope* fNamespaceScope;
RefHashTableOf<XMLAttDef>* fAttributeDeclRegistry;
1.21 +30 -22 xml-xerces/c/src/xercesc/validators/schema/TraverseSchema.cpp
Index: TraverseSchema.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/TraverseSchema.cpp,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- TraverseSchema.cpp 21 Jun 2002 18:35:42 -0000 1.20
+++ TraverseSchema.cpp 11 Jul 2002 18:59:57 -0000 1.21
@@ -182,7 +182,6 @@
, SchemaGrammar* const schemaGrammar
, GrammarResolver* const grammarResolver
, XMLScanner* const xmlScanner
- , XMLValidator* const xmlValidator
, const XMLCh* const schemaURL
, XMLEntityHandler* const entityHandler
, XMLErrorReporter* const errorReporter)
@@ -201,7 +200,6 @@
, fErrorReporter(errorReporter)
, fURIStringPool(uriStringPool)
, fStringPool(0)
- , fValidator(xmlValidator)
, fScanner(xmlScanner)
, fNamespaceScope(0)
, fAttributeDeclRegistry(0)
@@ -1939,7 +1937,7 @@
if (XMLString::compareString(typeURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA) == 0) {
- dv = getDatatypeValidator(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, localPart);
+ dv = fDatatypeRegistry->getDatatypeValidator(localPart);
if (XMLString::compareString(localPart,XMLUni::fgIDString) == 0) {
attType = XMLAttDef::ID;
@@ -2033,21 +2031,20 @@
if (attType == XMLAttDef::Simple && dv && valueToCheck) {
- if (ofTypeID) {
- reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::AttDeclPropCorrect3,
- SchemaSymbols::fgATT_NAME, name);
+ try {
+ dv->validate(valueToCheck);
}
- else {
- try {
- dv->validate(valueToCheck);
- }
- catch (const XMLException& excep) {
- reportSchemaError(elem, XMLUni::fgValidityDomain, XMLValid::DisplayErrorMessage, excep.getMessage());
- }
- catch(...) {
- reportSchemaError(elem, XMLUni::fgValidityDomain, XMLValid::DatatypeValidationFailure, valueToCheck);
- }
+ catch (const XMLException& excep) {
+ reportSchemaError(elem, XMLUni::fgValidityDomain, XMLValid::DisplayErrorMessage, excep.getMessage());
}
+ catch(...) {
+ reportSchemaError(elem, XMLUni::fgValidityDomain, XMLValid::DatatypeValidationFailure, valueToCheck);
+ }
+ }
+
+ if (ofTypeID && valueToCheck) {
+ reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::AttDeclPropCorrect3,
+ SchemaSymbols::fgATT_NAME, name);
}
// check for multiple attributes with type derived from ID
@@ -2359,7 +2356,7 @@
// Handle the substitutionGroup
const XMLCh* subsGroupName = getElementAttValue(elem, SchemaSymbols::fgATT_SUBSTITUTIONGROUP);
- if (XMLString::stringLen(subsGroupName) != 0) {
+ if (topLevel && XMLString::stringLen(subsGroupName) != 0) {
SchemaElementDecl* subsElemDecl = getSubstituteGroupElemDecl(elem, subsGroupName, noErrorFound);
@@ -2540,7 +2537,7 @@
elemDecl->setDatatypeValidator(validator);
elemDecl->setComplexTypeInfo(typeInfo);
elemDecl->setDefaultValue(deflt);
- elemDecl->setDefinedScope(scopeDefined);
+// elemDecl->setDefinedScope(scopeDefined);
elemDecl->setModelType(contentSpecType);
elemDecl->setContentSpec(contentSpecNode);
@@ -4292,7 +4289,18 @@
fBuffer.set(uriStr);
fBuffer.append(chComma);
fBuffer.append(localPartStr);
- dv = fDatatypeRegistry->getDatatypeValidator(fBuffer.getRawBuffer());
+
+ if (XMLString::stringLen(uriStr) && XMLString::compareString(uriStr, fTargetNSURIString)) {
+
+ Grammar* grammar = fGrammarResolver->getGrammar(uriStr);
+
+ if (grammar && grammar->getGrammarType() == Grammar::SchemaGrammarType) {
+ dv = ((SchemaGrammar*) grammar)->getDatatypeRegistry()->getDatatypeValidator(fBuffer.getRawBuffer());
+ }
+ }
+ else {
+ dv = fDatatypeRegistry->getDatatypeValidator(fBuffer.getRawBuffer());
+ }
}
return dv;
@@ -6081,6 +6089,7 @@
fTargetNSURI = targetNSURI;
fCurrentScope = saveScope;
fScopeCount = toRestore->getScopeCount();
+ fDatatypeRegistry = fSchemaGrammar->getDatatypeRegistry();
fTargetNSURIString = fSchemaGrammar->getTargetNamespace();
fGroupRegistry = fSchemaGrammar->getGroupInfoRegistry();
fAttGroupRegistry = fSchemaGrammar->getAttGroupInfoRegistry();
@@ -7661,8 +7670,7 @@
fXSDErrorReporter.setExitOnFirstFatal(fScanner->getExitOnFirstFatal());
}
- fDatatypeRegistry = fGrammarResolver->getDatatypeRegistry();
- fDatatypeRegistry->expandRegistryToFullSchemaSet();
+ fDatatypeRegistry = fSchemaGrammar->getDatatypeRegistry();
fStringPool = fGrammarResolver->getStringPool();
fEmptyNamespaceURI = fScanner->getEmptyNamespaceId();
fCurrentTypeNameStack = new ValueVectorOf<unsigned int>(8);
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org