📄 xmlattdef.hpp
字号:
/* * The Apache Software License, Version 1.1 * * Copyright (c) 1999-2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Xerces" and "Apache Software Foundation" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact apache\@apache.org. * * 5. Products derived from this software may not be called "Apache", * nor may "Apache" appear in their name, without prior written * permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation, and was * originally based on software copyright (c) 1999, International * Business Machines, Inc., http://www.ibm.com . For more information * on the Apache Software Foundation, please see * <http://www.apache.org/>. *//* * $Log: XMLAttDef.hpp,v $ * 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. * * @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. * * @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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -