20 #ifndef _SCHEMAVALIDATORFILTER_HPP 21 #define _SCHEMAVALIDATORFILTER_HPP 27 #include <xercesc/framework/XMLDocumentHandler.hpp> 28 #include <xercesc/framework/XMLErrorReporter.hpp> 29 #include <xercesc/validators/schema/SchemaValidator.hpp> 30 #include <xercesc/validators/schema/identity/IdentityConstraintHandler.hpp> 31 #include <xercesc/internal/XMLScanner.hpp> 32 #include <xercesc/util/RefHash3KeysIdPool.hpp> 37 #if _XERCES_VERSION < 30000 49 public XERCES_CPP_NAMESPACE_QUALIFIER XMLScanner,
50 private XERCES_CPP_NAMESPACE_QUALIFIER XMLDocumentHandler,
51 private XERCES_CPP_NAMESPACE_QUALIFIER XMLErrorReporter
55 XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *mm,
const LocationInfo *info);
62 virtual void startElementEvent(
const XMLCh *prefix,
const XMLCh *uri,
const XMLCh *localname);
63 virtual void endElementEvent(
const XMLCh *prefix,
const XMLCh *uri,
const XMLCh *localname,
64 const XMLCh *typeURI,
const XMLCh *typeName);
65 virtual void piEvent(
const XMLCh *target,
const XMLCh *value);
66 virtual void textEvent(
const XMLCh *value);
67 virtual void textEvent(
const XMLCh *chars,
unsigned int length);
69 virtual void attributeEvent(
const XMLCh *prefix,
const XMLCh *uri,
const XMLCh *localname,
const XMLCh *value,
70 const XMLCh *typeURI,
const XMLCh *typeName);
71 virtual void namespaceEvent(
const XMLCh *prefix,
const XMLCh *uri);
75 virtual const XMLCh *getName()
const {
return 0; }
76 virtual XERCES_CPP_NAMESPACE_QUALIFIER NameIdPool<XERCES_CPP_NAMESPACE_QUALIFIER DTDEntityDecl> *getEntityDeclPool() {
return 0; }
77 virtual const XERCES_CPP_NAMESPACE_QUALIFIER NameIdPool<XERCES_CPP_NAMESPACE_QUALIFIER DTDEntityDecl> *getEntityDeclPool()
const {
return 0; }
78 #if _XERCES_VERSION < 30100 79 virtual unsigned int resolveQName(
const XMLCh *
const qName, XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer &prefixBufToFill,
80 const short mode,
int &prefixColonPos);
82 virtual void scanDocument(
const XERCES_CPP_NAMESPACE_QUALIFIER InputSource &src) {}
83 virtual bool scanNext(XERCES_CPP_NAMESPACE_QUALIFIER XMLPScanToken &toFill) {
return false; }
84 virtual XERCES_CPP_NAMESPACE_QUALIFIER Grammar *loadGrammar(
const XERCES_CPP_NAMESPACE_QUALIFIER InputSource &src,
85 const short grammarType,
const bool toCache) {
return 0; }
87 virtual void scanCDSection() {}
88 virtual void scanCharData(XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer &toToUse) {}
89 virtual EntityExpRes scanEntityRef(
const bool inAttVal, XMLCh &firstCh, XMLCh &secondCh,
90 bool &escaped) {
return EntityExp_Returned; }
91 virtual void scanDocTypeDecl() {}
92 virtual void scanReset(
const XERCES_CPP_NAMESPACE_QUALIFIER InputSource &src) {}
93 virtual void sendCharData(XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer &toSend) {}
96 virtual void startDocument() {}
97 virtual void endDocument() {}
98 virtual void resetDocument() {}
99 #if _XERCES_VERSION >= 30000 100 virtual void startElement(
const XERCES_CPP_NAMESPACE_QUALIFIER XMLElementDecl& elemDecl,
const unsigned int urlId,
101 const XMLCh*
const elemPrefix,
102 const XERCES_CPP_NAMESPACE_QUALIFIER RefVectorOf<XERCES_CPP_NAMESPACE_QUALIFIER XMLAttr>& attrList,
103 const XMLSize_t attrCount,
const bool isEmpty,
const bool isRoot) {}
104 virtual void docCharacters(
const XMLCh*
const chars,
const XMLSize_t length,
const bool cdataSection);
105 virtual void ignorableWhitespace(
const XMLCh*
const chars,
const XMLSize_t length,
const bool cdataSection) {}
107 virtual void startElement(
const XERCES_CPP_NAMESPACE_QUALIFIER XMLElementDecl& elemDecl,
const unsigned int urlId,
108 const XMLCh*
const elemPrefix,
109 const XERCES_CPP_NAMESPACE_QUALIFIER RefVectorOf<XERCES_CPP_NAMESPACE_QUALIFIER XMLAttr>& attrList,
110 const unsigned int attrCount,
const bool isEmpty,
const bool isRoot) {}
111 virtual void docCharacters(
const XMLCh*
const chars,
const unsigned int length,
const bool cdataSection);
112 virtual void ignorableWhitespace(
const XMLCh*
const chars,
const unsigned int length,
const bool cdataSection) {}
114 virtual void endElement(
const XERCES_CPP_NAMESPACE_QUALIFIER XMLElementDecl& elemDecl,
const unsigned int urlId,
115 const bool isRoot,
const XMLCh*
const elemPrefix=0) {}
116 virtual void docComment(
const XMLCh*
const comment) {}
117 virtual void docPI(
const XMLCh*
const target,
const XMLCh*
const data) {}
118 virtual void startEntityReference(
const XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityDecl& entDecl) {}
119 virtual void endEntityReference(
const XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityDecl& entDecl) {}
120 virtual void XMLDecl(
const XMLCh*
const versionStr,
const XMLCh*
const encodingStr,
const XMLCh*
const standaloneStr,
121 const XMLCh*
const actualEncodingStr) {}
124 virtual void resetErrors() {}
125 virtual void error(
const unsigned int errCode,
const XMLCh*
const errDomain,
const XMLErrorReporter::ErrTypes type,
const XMLCh*
const errorText,
126 const XMLCh*
const systemId,
const XMLCh*
const publicId,
const XMLFileLoc lineNum,
const XMLFileLoc colNum);
129 void processStartElement();
130 void processAttrs(XERCES_CPP_NAMESPACE_QUALIFIER XMLElementDecl *elemDecl);
132 bool switchGrammar(
const XMLCh *uri);
133 bool laxElementValidation(XERCES_CPP_NAMESPACE_QUALIFIER QName* element,
134 XERCES_CPP_NAMESPACE_QUALIFIER ContentLeafNameTypeVector* cv,
135 const XERCES_CPP_NAMESPACE_QUALIFIER XMLContentModel *cm,
136 unsigned int parentElemDepth);
137 bool anyAttributeValidation(XERCES_CPP_NAMESPACE_QUALIFIER SchemaAttDef* attWildCard,
unsigned int uriId,
bool& skipThisOne,
bool& laxThisOne);
138 XERCES_CPP_NAMESPACE_QUALIFIER XMLElementDecl *createElementDecl(
unsigned int uriId,
unsigned int currentScope,
143 XERCES_CPP_NAMESPACE_QUALIFIER SchemaValidator *fSchemaValidator;
144 XERCES_CPP_NAMESPACE_QUALIFIER SchemaGrammar *fSchemaGrammar;
145 XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer fContent;
146 XERCES_CPP_NAMESPACE_QUALIFIER IdentityConstraintHandler *fICHandler;
147 XERCES_CPP_NAMESPACE_QUALIFIER RefHash3KeysIdPool<XERCES_CPP_NAMESPACE_QUALIFIER SchemaElementDecl> *fElemNonDeclPool;
149 bool strictValidation_;
152 XERCES_CPP_NAMESPACE_QUALIFIER ElemStack::StackElem *parentStack_;
153 unsigned int elemDepth_;
154 XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer prefix_;
155 XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer uri_;
156 XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer localname_;
157 bool elementToProcess_;
158 const XMLCh *xsiType_;
159 unsigned int attrCount_;
Definition: EventHandler.hpp:67
virtual void startElementEvent(const XMLCh *prefix, const XMLCh *uri, const XMLCh *localname)
Handles the start of an element node as an event.
Definition: EventHandler.hpp:95
Definition: EventHandler.hpp:29
virtual void endDocumentEvent()
Handles a document node as an event.
Definition: EventHandler.hpp:90
The SchemaValidatorFilter class will modify the incoming event stream by validating it against the sc...
Definition: SchemaValidatorFilter.hpp:48
XMLSSize_t XMLFileLoc
Definition: SchemaValidatorFilter.hpp:35
virtual void namespaceEvent(const XMLCh *prefix, const XMLCh *uri)
Handles a namespace binding as an event.
Definition: EventHandler.hpp:132
virtual void startDocumentEvent(const XMLCh *documentURI, const XMLCh *encoding)
Handles a document node as an event.
Definition: EventHandler.hpp:85
virtual void attributeEvent(const XMLCh *prefix, const XMLCh *uri, const XMLCh *localname, const XMLCh *value, const XMLCh *typeURI, const XMLCh *typeName)
Handles an attribute node as an event.
Definition: EventHandler.hpp:126
The execution time dynamic context interface.
Definition: DynamicContext.hpp:38
virtual void endElementEvent(const XMLCh *prefix, const XMLCh *uri, const XMLCh *localname, const XMLCh *typeURI, const XMLCh *typeName)
Handles the end of an element node as an event.
Definition: EventHandler.hpp:100
virtual void piEvent(const XMLCh *target, const XMLCh *value)
Handles a processing instruction node as an event.
Definition: EventHandler.hpp:106
A class that gives records a location in the query.
Definition: LocationInfo.hpp:29
virtual void commentEvent(const XMLCh *value)
Handles a comment node as an event.
Definition: EventHandler.hpp:121
virtual void textEvent(const XMLCh *value)
Handles a text node as an event.
Definition: EventHandler.hpp:111