xmlattdef.hpp
来自「IBM的解析xml的工具Xerces的源代码」· HPP 代码 · 共 681 行 · 第 1/2 页
HPP
681 行
/* * Copyright 1999-2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *//* * $Log: XMLAttDef.hpp,v $ * Revision 1.14 2004/09/08 13:55:58 peiyongz * Apache License Version 2.0 * * Revision 1.13 2004/09/02 19:08:09 cargilld * Fix API Doc warning message * * Revision 1.12 2003/12/17 00:18:33 cargilld * Update to memory management so that the static memory manager (one used to call Initialize) is only for static data. * * Revision 1.11 2003/11/24 05:19:15 neilg * update method documentation * * Revision 1.10 2003/10/10 16:23:29 peiyongz * Implementation of Serialization/Deserialization * * Revision 1.9 2003/05/16 21:36:55 knoaman * Memory manager implementation: Modify constructors to pass in the memory manager. * * Revision 1.8 2003/05/15 18:26:07 knoaman * Partial implementation of the configurable memory manager. * * Revision 1.7 2003/04/21 20:46:01 knoaman * Use XMLString::release to prepare for configurable memory manager. * * Revision 1.6 2003/03/07 18:08:10 tng * Return a reference instead of void for operator= * * Revision 1.5 2003/01/29 19:45:35 gareth * added api for DOMTypeInfo * * Revision 1.4 2002/12/10 02:15:55 knoaman * Schema Errata: E1-21. * * Revision 1.3 2002/11/04 15:00:21 tng * C++ Namespace Support. * * Revision 1.2 2002/02/20 18:17:01 tng * [Bug 5977] Warnings on generating apiDocs. * * Revision 1.1.1.1 2002/02/01 22:21:50 peiyongz * sane_include * * Revision 1.13 2001/11/15 16:36:36 knoaman * Re-organize constant values. * * Revision 1.12 2001/08/09 15:23:37 knoaman * add support for <anyAttribute> declaration. * * Revision 1.11 2001/06/21 14:25:26 knoaman * Fix for bug 1946 * * Revision 1.10 2001/05/11 13:25:31 tng * Copyright update. * * Revision 1.9 2001/02/27 18:48:20 tng * Schema: Add SchemaAttDef, SchemaElementDecl, SchemaAttDefList. * * Revision 1.8 2000/12/14 18:49:56 tng * Fix API document generation warning: "Warning: end of member group without matching begin" * * Revision 1.7 2000/11/30 18:22:38 andyh * reuseValidator - fix bugs (spurious errors) that occured on reuse due to * pools already containing some items. Fixed by Tinny Ng. * * Revision 1.6 2000/07/07 22:23:38 jpolast * remove useless getKey() functions. * * Revision 1.5 2000/02/24 20:00:22 abagchi * Swat for removing Log from API docs * * Revision 1.4 2000/02/16 23:03:48 roddey * More documentation updates * * Revision 1.3 2000/02/15 01:21:30 roddey * Some initial documentation improvements. More to come... * * Revision 1.2 2000/02/06 07:47:46 rahulj * Year 2K copyright swat. * * Revision 1.1.1.1 1999/11/09 01:08:27 twl * Initial checkin * * Revision 1.2 1999/11/08 20:44:34 rahul * Swat for adding in Product name and CVS comment log variable. * */#if !defined(ATTDEF_HPP)#define ATTDEF_HPP#include <xercesc/util/PlatformUtils.hpp>#include <xercesc/util/XMLString.hpp>#include <xercesc/util/XMemory.hpp>#include <xercesc/internal/XSerializable.hpp>XERCES_CPP_NAMESPACE_BEGINclass XMLAttr;/** Represents the core information of an atribute definition * * This class defines the basic characteristics of an attribute, no matter * what type of validator is used. If a particular schema associates more * information with an attribute it will create a derivative of this class. * So this class provides an abstract way to get basic information on * attributes from any type of validator. * * This class supports keyed collection semantics on the fully qualified * attribute name, by providing a getKey() method to extract the key string. * getKey(), in this case, just calls the virtual method getFullName() to * get the fully qualified name, as defined by the derived class. * * Note that the 'value' of an attribute type definition is the default or * of fixed value given to it in its definition. If the attribute is of the * enumerated or notation type, it will have an 'enumeration value' as well * which is a space separated list of its possible vlaues. */class XMLPARSER_EXPORT XMLAttDef : public XSerializable, public XMemory{public: // ----------------------------------------------------------------------- // Class specific types // // AttTypes // The list of possible types that an attribute can have, according // to the XML 1.0 spec and schema. // // DefAttTypes // The modifiers that an attribute decl can have, which indicates // whether instances of that attributes are required, implied, etc.. // // CreateReasons // This type is used to store how an attribute declaration got into // the elementdecl's attribute pool. // // ----------------------------------------------------------------------- enum AttTypes { CData = 0 , ID = 1 , IDRef = 2 , IDRefs = 3 , Entity = 4 , Entities = 5 , NmToken = 6 , NmTokens = 7 , Notation = 8 , Enumeration = 9 , Simple = 10 , Any_Any = 11 , Any_Other = 12 , Any_List = 13 , AttTypes_Count , AttTypes_Min = 0 , AttTypes_Max = 13 , AttTypes_Unknown = -1 }; enum DefAttTypes { Default = 0 , Fixed = 1 , Required = 2 , Required_And_Fixed = 3 , Implied = 4 , ProcessContents_Skip = 5 , ProcessContents_Lax = 6 , ProcessContents_Strict = 7 , Prohibited = 8 , DefAttTypes_Count , DefAttTypes_Min = 0 , DefAttTypes_Max = 8 , DefAttTypes_Unknown = -1 }; enum CreateReasons { NoReason , JustFaultIn }; // ----------------------------------------------------------------------- // Public static data members // ----------------------------------------------------------------------- static const unsigned int fgInvalidAttrId; // ----------------------------------------------------------------------- // Public, static methods // ----------------------------------------------------------------------- /** @name Public, static methods */ //@{ /** Get a string representation of the passed attribute type enum * * This method allows you to get a textual representation of an attriubte * type, mostly for debug or display. * * @param attrType The attribute type value to get the string for. * @param manager The MemoryManager to use to allocate objects * @return A const pointer to the static string that holds the text * description of the passed type. */ static const XMLCh* getAttTypeString(const AttTypes attrType , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** Get a string representation of the passed def attribute type enum * * This method allows you to get a textual representation of an default * attributetype, mostly for debug or display. * * @param attrType The default attribute type value to get the string for. * @param manager The MemoryManager to use to allocate objects * @return A const pointer to the static string that holds the text * description of the passed default type. */ static const XMLCh* getDefAttTypeString(const DefAttTypes attrType , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); //@} // ----------------------------------------------------------------------- // Destructor // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor */ virtual ~XMLAttDef(); //@} // ----------------------------------------------------------------------- // The virtual attribute def interface // ----------------------------------------------------------------------- /** @name Virtual interface */ //@{ /** Get the full name of this attribute type * * The derived class should return a const pointer to the full name of * this attribute. This will vary depending on the type of validator in * use. * * @return A const pointer to the full name of this attribute type. */ virtual const XMLCh* getFullName() const = 0; /** * The derived class should implement any cleaning up required between * each use of an instance of this class for validation */ virtual void reset() = 0; //@} // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** @name Getter methods */ //@{ /** Get the default type of this attribute type * * This method returns the 'default type' of the attribute. Default * type in this case refers to the XML concept of a default type for * an attribute, i.e. #FIXED, #IMPLIED, etc... * * @return The default type enum for this attribute type. */ DefAttTypes getDefaultType() const; /** Get the enumeration value (if any) of this attribute type * * If the attribute is of an enumeration or notatin type, then this * method will return a const reference to a string that contains the * space separated values that can the attribute can have. * * @return A const pointer to a string that contains the space separated * legal values for this attribute. */ const XMLCh* getEnumeration() const; /** Get the pool id of this attribute type * * This method will return the id of this attribute in the validator's * attribute pool. It was set by the validator when this attribute was * created. * * @return The pool id of this attribute type. */ unsigned int getId() const; /** Query whether the attribute was explicitly provided. * * When the scanner scans a start tag, it will ask the element decl * object of the element type of that start tag to clear the 'provided' * flag on all its attributes. As the scanner sees explicitly provided * attributes, its turns on this flag to indicate that this attribute * has been provided. In this way, the scanner can catch duplicated * attributes and required attributes that aren't provided, and default * in fixed/default valued attributes that are not explicitly provided. * * @return Returns a boolean value that indicates whether this attribute * was explicitly provided. * @deprecated */ bool getProvided() const; /** Get the type of this attribute * * Gets the type of this attribute. This type is represented by an enum * that convers the types of attributes allowed by XML, e.g. CDATA, NMTOKEN,
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?