source: icXML/icXML-devel/src/xercesc/dom/DOMAttr.hpp @ 2722

Last change on this file since 2722 was 2722, checked in by cameron, 6 years ago

Original Xerces files with import mods for icxercesc

File size: 6.2 KB
Line 
1/*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements.  See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License.  You may obtain a copy of the License at
8 *
9 *      http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18/*
19 * $Id: DOMAttr.hpp 527149 2007-04-10 14:56:39Z amassari $
20 */
21
22#if !defined(XERCESC_INCLUDE_GUARD_DOMATTR_HPP)
23#define XERCESC_INCLUDE_GUARD_DOMATTR_HPP
24
25#include <xercesc/util/XercesDefs.hpp>
26#include <xercesc/dom/DOMNode.hpp>
27
28XERCES_CPP_NAMESPACE_BEGIN
29
30class DOMElement;
31class DOMTypeInfo;
32
33/**
34 * The <code>DOMAttr</code> class refers to an attribute of an XML element.
35 *
36 * Typically the allowable values for the
37 * attribute are defined in a documenttype definition.
38 * <p><code>DOMAttr</code> objects inherit the <code>DOMNode</code>  interface, but
39 * since attributes are not actually child nodes of the elements they are associated with, the
40 * DOM does not consider them part of the document  tree.  Thus, the
41 * <code>DOMNode</code> attributes <code>parentNode</code>,
42 * <code>previousSibling</code>, and <code>nextSibling</code> have a  null
43 * value for <code>DOMAttr</code> objects. The DOM takes the  view that
44 * attributes are properties of elements rather than having a  separate
45 * identity from the elements they are associated with;  this should make it
46 * more efficient to implement such features as default attributes associated
47 * with all elements of a  given type.  Furthermore, attribute nodes
48 * may not be immediate children of a <code>DOMDocumentFragment</code>. However,
49 * they can be associated with <code>DOMElement</code> nodes contained within a
50 * <code>DOMDocumentFragment</code>. In short, users of the DOM
51 * need to be aware that  <code>DOMAttr</code> nodes have some things in  common
52 * with other objects inheriting the <code>DOMNode</code> interface, but they
53 * also are quite distinct.
54 *
55 * @since DOM Level 1
56 */
57class CDOM_EXPORT DOMAttr: public DOMNode {
58protected:
59    // -----------------------------------------------------------------------
60    //  Hidden constructors
61    // -----------------------------------------------------------------------
62    /** @name Hidden constructors */
63    //@{   
64    DOMAttr() {}
65    DOMAttr(const DOMAttr &other) : DOMNode(other) {}
66    //@}
67
68private:   
69    // -----------------------------------------------------------------------
70    // Unimplemented constructors and operators
71    // -----------------------------------------------------------------------
72    /** @name Unimplemented operators */
73    //@{
74    DOMAttr & operator = (const DOMAttr &);
75    //@}
76
77public:
78    // -----------------------------------------------------------------------
79    //  All constructors are hidden, just the destructor is available
80    // -----------------------------------------------------------------------
81    /** @name Destructor */
82    //@{
83    /**
84     * Destructor
85     *
86     */
87    virtual ~DOMAttr() {};
88    //@}
89
90    // -----------------------------------------------------------------------
91    //  Virtual DOMAttr interface
92    // -----------------------------------------------------------------------
93    /** @name Functions introduced in DOM Level 1 */
94    //@{
95    // -----------------------------------------------------------------------
96    //  Getter methods
97    // -----------------------------------------------------------------------
98    /**
99     * Returns the name of this attribute.
100     * @since DOM Level 1
101     */
102    virtual const XMLCh *       getName() const = 0;
103
104    /**
105     *
106     * Returns true if the attribute received its value explicitly in the
107     * XML document, or if a value was assigned programatically with
108     * the setValue function.  Returns false if the attribute value
109     * came from the default value declared in the document's DTD.
110     * @since DOM Level 1
111     */
112    virtual bool            getSpecified() const = 0;
113
114    /**
115     * Returns the value of the attribute.
116     *
117     * The value of the attribute is returned as a string.
118     * Character and general entity references are replaced with their values.
119     * @since DOM Level 1
120     */
121    virtual const XMLCh *       getValue() const = 0;
122
123    // -----------------------------------------------------------------------
124    //  Setter methods
125    // -----------------------------------------------------------------------
126    /**
127     * Sets the value of the attribute.  A text node with the unparsed contents
128     * of the string will be created.
129     *
130     * @param value The value of the DOM attribute to be set
131     * @since DOM Level 1
132     */
133    virtual void            setValue(const XMLCh *value) = 0;
134    //@}
135
136    /** @name Functions introduced in DOM Level 2. */
137    //@{
138    /**
139     * The <code>DOMElement</code> node this attribute is attached to or
140     * <code>null</code> if this attribute is not in use.
141     *
142     * @since DOM Level 2
143     */
144    virtual DOMElement     *getOwnerElement() const = 0;
145    //@}
146
147    /** @name Functions introduced in DOM Level 3. */
148    //@{
149    /**
150     * Returns whether this attribute is known to be of type ID or not.
151     * When it is and its value is unique, the ownerElement of this attribute
152     * can be retrieved using getElementById on DOMDocument.
153     *
154     * @return <code>bool</code> stating if this <code>DOMAttr</code> is an ID
155     * @since DOM level 3
156     */
157    virtual bool            isId() const = 0;
158
159
160    /**
161     * Returns the type information associated with this attribute.
162     *
163     * @return the <code>DOMTypeInfo</code> associated with this attribute
164     * @since DOM level 3
165     */
166    virtual const DOMTypeInfo * getSchemaTypeInfo() const = 0;
167
168    //@}
169
170};
171
172XERCES_CPP_NAMESPACE_END
173
174#endif
175
176
Note: See TracBrowser for help on using the repository browser.