22 #ifndef _SCHEMAVALIDATORFILTER_HPP
23 #define _SCHEMAVALIDATORFILTER_HPP
29 #include <xercesc/framework/XMLDocumentHandler.hpp>
30 #include <xercesc/framework/XMLErrorReporter.hpp>
31 #include <xercesc/validators/schema/SchemaValidator.hpp>
32 #include <xercesc/validators/schema/identity/IdentityConstraintHandler.hpp>
33 #include <xercesc/internal/XMLScanner.hpp>
34 #include <xercesc/util/RefHash3KeysIdPool.hpp>
39 #if _XERCES_VERSION < 30000
51 private XERCES_CPP_NAMESPACE_QUALIFIER XMLScanner,
52 private XERCES_CPP_NAMESPACE_QUALIFIER XMLDocumentHandler,
53 private XERCES_CPP_NAMESPACE_QUALIFIER XMLErrorReporter
57 XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *mm,
const LocationInfo *info);
64 virtual void startElementEvent(
const XMLCh *prefix,
const XMLCh *uri,
const XMLCh *localname);
65 virtual void endElementEvent(
const XMLCh *prefix,
const XMLCh *uri,
const XMLCh *localname,
66 const XMLCh *typeURI,
const XMLCh *typeName);
67 virtual void piEvent(
const XMLCh *target,
const XMLCh *value);
68 virtual void textEvent(
const XMLCh *value);
69 virtual void textEvent(
const XMLCh *chars,
unsigned int length);
71 virtual void attributeEvent(
const XMLCh *prefix,
const XMLCh *uri,
const XMLCh *localname,
const XMLCh *value,
72 const XMLCh *typeURI,
const XMLCh *typeName);
73 virtual void namespaceEvent(
const XMLCh *prefix,
const XMLCh *uri);
77 virtual const XMLCh *getName()
const {
return 0; }
78 virtual XERCES_CPP_NAMESPACE_QUALIFIER NameIdPool<XERCES_CPP_NAMESPACE_QUALIFIER DTDEntityDecl> *getEntityDeclPool() {
return 0; }
79 virtual const XERCES_CPP_NAMESPACE_QUALIFIER NameIdPool<XERCES_CPP_NAMESPACE_QUALIFIER DTDEntityDecl> *getEntityDeclPool()
const {
return 0; }
80 #if _XERCES_VERSION < 30100
81 virtual unsigned int resolveQName(
const XMLCh *
const qName, XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer &prefixBufToFill,
82 const short mode,
int &prefixColonPos);
84 virtual void scanDocument(
const XERCES_CPP_NAMESPACE_QUALIFIER InputSource &src) {}
85 virtual bool scanNext(XERCES_CPP_NAMESPACE_QUALIFIER XMLPScanToken &toFill) {
return false; }
86 virtual XERCES_CPP_NAMESPACE_QUALIFIER Grammar *loadGrammar(
const XERCES_CPP_NAMESPACE_QUALIFIER InputSource &src,
87 const short grammarType,
const bool toCache) {
return 0; }
89 virtual void scanCDSection() {}
90 virtual void scanCharData(XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer &toToUse) {}
91 virtual EntityExpRes scanEntityRef(
const bool inAttVal, XMLCh &firstCh, XMLCh &secondCh,
92 bool &escaped) {
return EntityExp_Returned; }
93 virtual void scanDocTypeDecl() {}
94 virtual void scanReset(
const XERCES_CPP_NAMESPACE_QUALIFIER InputSource &src) {}
95 virtual void sendCharData(XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer &toSend) {}
98 virtual void startDocument() {}
99 virtual void endDocument() {}
100 virtual void resetDocument() {}
101 #if _XERCES_VERSION >= 30000
102 virtual void startElement(
const XERCES_CPP_NAMESPACE_QUALIFIER XMLElementDecl& elemDecl,
const unsigned int urlId,
103 const XMLCh*
const elemPrefix,
104 const XERCES_CPP_NAMESPACE_QUALIFIER RefVectorOf<XERCES_CPP_NAMESPACE_QUALIFIER XMLAttr>& attrList,
105 const XMLSize_t attrCount,
const bool isEmpty,
const bool isRoot) {}
106 virtual void docCharacters(
const XMLCh*
const chars,
const XMLSize_t length,
const bool cdataSection);
107 virtual void ignorableWhitespace(
const XMLCh*
const chars,
const XMLSize_t length,
const bool cdataSection) {}
109 virtual void startElement(
const XERCES_CPP_NAMESPACE_QUALIFIER XMLElementDecl& elemDecl,
const unsigned int urlId,
110 const XMLCh*
const elemPrefix,
111 const XERCES_CPP_NAMESPACE_QUALIFIER RefVectorOf<XERCES_CPP_NAMESPACE_QUALIFIER XMLAttr>& attrList,
112 const unsigned int attrCount,
const bool isEmpty,
const bool isRoot) {}
113 virtual void docCharacters(
const XMLCh*
const chars,
const unsigned int length,
const bool cdataSection);
114 virtual void ignorableWhitespace(
const XMLCh*
const chars,
const unsigned int length,
const bool cdataSection) {}
116 virtual void endElement(
const XERCES_CPP_NAMESPACE_QUALIFIER XMLElementDecl& elemDecl,
const unsigned int urlId,
117 const bool isRoot,
const XMLCh*
const elemPrefix=0) {}
118 virtual void docComment(
const XMLCh*
const comment) {}
119 virtual void docPI(
const XMLCh*
const target,
const XMLCh*
const data) {}
120 virtual void startEntityReference(
const XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityDecl& entDecl) {}
121 virtual void endEntityReference(
const XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityDecl& entDecl) {}
122 virtual void XMLDecl(
const XMLCh*
const versionStr,
const XMLCh*
const encodingStr,
const XMLCh*
const standaloneStr,
123 const XMLCh*
const actualEncodingStr) {}
126 virtual void resetErrors() {}
127 virtual void error(
const unsigned int errCode,
const XMLCh*
const errDomain,
const XMLErrorReporter::ErrTypes type,
const XMLCh*
const errorText,
128 const XMLCh*
const systemId,
const XMLCh*
const publicId,
const XMLFileLoc lineNum,
const XMLFileLoc colNum);
131 void processStartElement();
132 void processAttrs(XERCES_CPP_NAMESPACE_QUALIFIER XMLElementDecl *elemDecl);
134 bool switchGrammar(
const XMLCh *uri);
135 bool laxElementValidation(XERCES_CPP_NAMESPACE_QUALIFIER QName* element,
136 XERCES_CPP_NAMESPACE_QUALIFIER ContentLeafNameTypeVector* cv,
137 const XERCES_CPP_NAMESPACE_QUALIFIER XMLContentModel *cm,
138 unsigned int parentElemDepth);
139 bool anyAttributeValidation(XERCES_CPP_NAMESPACE_QUALIFIER SchemaAttDef* attWildCard,
unsigned int uriId,
bool& skipThisOne,
bool& laxThisOne);
140 XERCES_CPP_NAMESPACE_QUALIFIER XMLElementDecl *createElementDecl(
unsigned int uriId,
unsigned int currentScope,
145 XERCES_CPP_NAMESPACE_QUALIFIER SchemaValidator *fSchemaValidator;
146 XERCES_CPP_NAMESPACE_QUALIFIER SchemaGrammar *fSchemaGrammar;
147 XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer fContent;
148 XERCES_CPP_NAMESPACE_QUALIFIER IdentityConstraintHandler *fICHandler;
149 XERCES_CPP_NAMESPACE_QUALIFIER RefHash3KeysIdPool<XERCES_CPP_NAMESPACE_QUALIFIER SchemaElementDecl> *fElemNonDeclPool;
151 bool strictValidation_;
154 XERCES_CPP_NAMESPACE_QUALIFIER ElemStack::StackElem *parentStack_;
155 unsigned int elemDepth_;
156 XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer prefix_;
157 XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer uri_;
158 XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer localname_;
159 bool elementToProcess_;
160 const XMLCh *xsiType_;
161 unsigned int attrCount_;