/* * Copyright (c) 2002, DecisionSoft Limited All rights reserved. * Please see LICENSE.TXT for more information. */ #ifndef _DOCUMENTCACHE_HPP #define _DOCUMENTCACHE_HPP #include #include #include "ValidationContext.hpp" class DynamicContext; class StaticContext; class QualifiedName; class XPath2MemoryManager; XERCES_CPP_NAMESPACE_BEGIN class DOMDocument; class DOMNode; class DatatypeValidator; class XMLEntityResolver; XERCES_CPP_NAMESPACE_END ///Expression Context is a storage for contexts. class PATHAN_EXPORT DocumentCache { public: enum ValidationMode { VALIDATION_DEFAULT = 0, VALIDATION_STRICT = 1, VALIDATION_SKIP = 2, VALIDATION_LAX = 3 }; /** virtual destructor */ virtual ~DocumentCache() {} /** * Sets the XMLEntityResolver that is used by Xerces when it is used * to parse documents. This affects the behaviour of Pathan whenever * it retrieves a DTD or XML Schema grammar. */ virtual void setXMLEntityResolver(XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityResolver* const handler) = 0; /** Adds the document to the internal cache, associated with the given absolute uri */ virtual void storeDocument(const XMLCh* uri, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* document) = 0; /** Clears all the documents stored in the DocumentCache */ virtual void clearStoredDocuments() = 0; /** load the DOM document from the requested URI (or get it from the cache) */ virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *loadXMLDocument(const XMLCh* Uri, StaticContext *context) = 0; /* * returns true if the type represented by uri:typename is an instance of uriToCheck:typeNameToCheck * * ie: to check * xs:integer instance of xs:decimal, * call * isTypeOrDerivedFromType("xs", "integer", "xs", "decimal") * (except of course, call with URIs, not prefixes!) */ virtual bool isTypeOrDerivedFromType(const XMLCh* const uri, const XMLCh* const typeName, const XMLCh* const uriToCheck, const XMLCh* const typeNameToCheck) const = 0; virtual void addSchemaLocation(const XMLCh* uri, const XMLCh* location, StaticContext *context) = 0; /** helper functions used to map namespace ids found in the SchemaGrammar **/ virtual unsigned int getSchemaUriId(const XMLCh* uri) const = 0; virtual const XMLCh* getSchemaUri(unsigned int id) const = 0; virtual ValidationContext updateValidationContext(ValidationContext current,QualifiedName* step,bool bIsElement,StaticContext* context) const = 0; virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *validate(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* node, ValidationMode valMode, ValidationContext valContext, StaticContext *context) = 0; virtual XERCES_CPP_NAMESPACE_QUALIFIER DatatypeValidator* getDatatypeValidator(const XMLCh* uri, const XMLCh* typeName) const = 0; virtual XERCES_CPP_NAMESPACE_QUALIFIER ComplexTypeInfo* getComplexTypeInfo(const XMLCh* uri, const XMLCh* typeName) const = 0; virtual DocumentCache *createDerivedCache(XPath2MemoryManager *memMgr) const = 0; }; #endif