📄 igxmlscanner.hpp
字号:
virtual void scanCDSection(); virtual void scanCharData(XMLBuffer& toToUse); virtual EntityExpRes scanEntityRef ( const bool inAttVal , XMLCh& firstCh , XMLCh& secondCh , bool& escaped ); virtual void scanDocTypeDecl(); virtual void scanReset(const InputSource& src); virtual void sendCharData(XMLBuffer& toSend); // ----------------------------------------------------------------------- // Private helper methods // ----------------------------------------------------------------------- void commonInit(); void cleanUp(); InputSource* resolveSystemId(const XMLCh* const sysId); // return owned by caller // Spaces are not allowed in URI, so %20 is used instead. // Convert %20 to spaces before resolving the URI void normalizeURI(const XMLCh* const systemURI, XMLBuffer& normalizedURI); unsigned int buildAttList ( const RefVectorOf<KVStringPair>& providedAttrs , const unsigned int attCount , XMLElementDecl* elemDecl , RefVectorOf<XMLAttr>& toFill ); bool normalizeAttValue ( const XMLAttDef* const attDef , const XMLCh* const name , const XMLCh* const value , XMLBuffer& toFill ); bool normalizeAttRawValue ( const XMLCh* const attrName , const XMLCh* const value , XMLBuffer& toFill ); unsigned int resolvePrefix ( const XMLCh* const prefix , const ElemStack::MapModes mode ); unsigned int resolvePrefix ( const XMLCh* const prefix , XMLBuffer& uriBufToFill , const ElemStack::MapModes mode ); void updateNSMap ( const XMLCh* const attrName , const XMLCh* const attrValue ); void scanRawAttrListforNameSpaces(int attCount); void parseSchemaLocation(const XMLCh* const schemaLocationStr); void resolveSchemaGrammar(const XMLCh* const loc, const XMLCh* const uri); bool switchGrammar(const XMLCh* const newGrammarNameSpace); bool laxElementValidation(QName* element, ContentLeafNameTypeVector* cv, const XMLContentModel* const cm, const unsigned int parentElemDepth); bool anyAttributeValidation(SchemaAttDef* attWildCard, unsigned int uriId, bool& skipThisOne, bool& laxThisOne); void resizeElemState(); void processSchemaLocation(XMLCh* const schemaLoc); // ----------------------------------------------------------------------- // Private scanning methods // ----------------------------------------------------------------------- bool basicAttrValueScan ( const XMLCh* const attrName , XMLBuffer& toFill ); unsigned int rawAttrScan ( const XMLCh* const elemName , RefVectorOf<KVStringPair>& toFill , bool& isEmpty ); bool scanAttValue ( const XMLAttDef* const attDef , const XMLCh* const attrName , XMLBuffer& toFill ); bool scanContent(); void scanEndTag(bool& gotData); bool scanStartTag(bool& gotData); bool scanStartTagNS(bool& gotData); // ----------------------------------------------------------------------- // IdentityConstraints Activation methods // ----------------------------------------------------------------------- void activateSelectorFor(IdentityConstraint* const ic, const int initialDepth); // ----------------------------------------------------------------------- // Grammar preparsing methods // ----------------------------------------------------------------------- Grammar* loadXMLSchemaGrammar(const InputSource& src, const bool toCache = false); Grammar* loadDTDGrammar(const InputSource& src, const bool toCache = false); // ----------------------------------------------------------------------- // PSVI handling methods // ----------------------------------------------------------------------- void endElementPSVI(SchemaElementDecl* const elemDecl, DatatypeValidator* const memberDV); void resetPSVIElemContext(); // ----------------------------------------------------------------------- // Data members // // fRawAttrList // During the initial scan of the attributes we can only do a raw // scan for key/value pairs. So this vector is used to store them // until they can be processed (and put into fAttrList.) // // fDTDValidator // The DTD validator instance. // // fSchemaValidator // The Schema validator instance. // // fSeeXsi // This flag indicates a schema has been seen. // // fElemState // fElemStateSize // Stores an element next state from DFA content model - used for // wildcard validation // // fMatcherStack // Stack of active XPath matchers for identity constraints. All // active XPath matchers are notified of startElement, characters // and endElement callbacks in order to perform their matches. // // fValueStoreCache // Cache of value stores for identity constraint fields. // // fFieldActivator // Activates fields within a certain scope when a selector matches // its xpath. // fDTDElemNonDeclPool // registry of "faulted-in" DTD element decls // fSchemaElemNonDeclPool // registry for elements without decls in the grammar // fElemCount // count of the number of start tags seen so far (starts at 1). // Used for duplicate attribute detection/processing of required/defaulted attributes // fAttDefRegistry // mapping from XMLAttDef instances to the count of the last // start tag where they were utilized. // fUndeclaredAttrRegistry // mapping of attr QNames to the count of the last start tag in which they occurred // fUndeclaredAttrRegistryNS // mapping of namespaceId/localName pairs to the count of the last // start tag in which they occurred. // fPSVIAttrList // PSVI attribute list implementation that needs to be // filled when a PSVIHandler is registered // // ----------------------------------------------------------------------- bool fSeeXsi; Grammar::GrammarType fGrammarType; unsigned int fElemStateSize; unsigned int* fElemState; XMLBuffer fContent; RefVectorOf<KVStringPair>* fRawAttrList; DTDValidator* fDTDValidator; SchemaValidator* fSchemaValidator; DTDGrammar* fDTDGrammar; XPathMatcherStack* fMatcherStack; ValueStoreCache* fValueStoreCache; FieldActivator* fFieldActivator; ValueVectorOf<XMLCh*>* fLocationPairs; NameIdPool<DTDElementDecl>* fDTDElemNonDeclPool; RefHash3KeysIdPool<SchemaElementDecl>* fSchemaElemNonDeclPool; unsigned int fElemCount; RefHashTableOf<unsigned int>* fAttDefRegistry; RefHashTableOf<unsigned int>* fUndeclaredAttrRegistry; RefHash2KeysTableOf<unsigned int>* fUndeclaredAttrRegistryNS; PSVIAttributeList * fPSVIAttrList; XSModel* fModel; PSVIElement* fPSVIElement; ValueStackOf<bool>* fErrorStack; PSVIElemContext fPSVIElemContext;};inline const XMLCh* IGXMLScanner::getName() const{ return XMLUni::fgIGXMLScanner;}XERCES_CPP_NAMESPACE_END#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -