xref: /aoo4110/main/offapi/com/sun/star/xml/dom/XNode.idl (revision b1cdbd2c)
1/**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements.  See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership.  The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License.  You may obtain a copy of the License at
10 *
11 *   http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied.  See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22
23
24#ifndef __com_sun_star_xml_dom_XNode_idl__
25#define __com_sun_star_xml_dom_XNode_idl__
26
27#ifndef __com_sun_star_uno_XInterface_idl__
28#include <com/sun/star/uno/XInterface.idl>
29#endif
30#ifndef __com_sun_star_xml_dom_NodeType_idl__
31#include <com/sun/star/xml/dom/NodeType.idl>
32#endif
33#ifndef __com_sun_star_xml_dom_XNodeList_idl__
34#include <com/sun/star/xml/dom/XNodeList.idl>
35#endif
36#ifndef __com_sun_star_xml_dom_XNamedNodeMap_idl__
37#include <com/sun/star/xml/dom/XNamedNodeMap.idl>
38#endif
39
40
41module com { module sun { module star { module xml { module dom {
42
43interface XDocument;
44
45/** The primary dom datatype
46
47<p>The Node interface is the primary datatype for the entire Document Object Model.
48It represents a single node in the document tree. While all objects implementing
49the Node interface expose methods for dealing with children, not all objects
50#implementing the Node interface may have children. For example, Text nodes may not
51have children, and adding children to such nodes results in a DOMException being raised.</p>
52
53<p>The attributes nodeName, nodeValue and attributes are included as a mechanism to get at
54node information without casting down to the specific derived interface. In cases where
55there is no obvious mapping of these attributes for a specific nodeType (e.g., nodeValue
56for an Element or attributes for a Comment ), this returns null. Note that the specialized
57interfaces may contain additional and more convenient mechanisms to get and set the relevant
58information.</p>
59
60<p>The values of nodeName, nodeValue, and attributes vary according to the node type as follows:
61<table align=left border=1>
62<tr><th>Interface </th><th>nodeName </th><th>nodeValue </th><th>attributes</th></tr>
63<tr><th>Attr 	                </th><td>name of attribute 	</td><td>value of attribute 	            </td><td>null</td></tr>
64<tr><th>CDATASection 	        </th><td>"#cdata-section" 	</td><td>content of the CDATA Section 	</td><td>null</td></tr>
65<tr><th>Comment 	            </th><td>"#comment" 	        </td><td>content of the comment          </td><td>null</td></tr>
66<tr><th>Document 	            </th><td>"#document" 	    </td><td>null 	</td><td>null</td></tr>
67<tr><th>DocumentFragment        </th><td>"#document-fragment"</td><td>null 	</td><td>null</td></tr>
68<tr><th>DocumentType 	        </th><td>document type name 	</td><td>null 	</td><td>null</td></tr>
69<tr><th>Element 	            </th><td>tag name 	        </td><td>null 	</td><td>NamedNodeMap</td></tr>
70<tr><th>Entity 	                </th><td>entity name 	    </td><td>null 	</td><td>null</td></tr>
71<tr><th>EntityReference         </th><td>name of entity referenced 	    </td><td>null 	</td><td>null</td></tr>
72<tr><th>Notation 	            </th><td>notation name 	    </td><td>null 	</td><td>null</td></tr>
73<tr><th>ProcessingInstruction   </th><td>target 	            </td><td>entire content excluding the target 	</td><td>null</td></tr>
74<tr><th>Text 	                </th><td>"#text" 	        </td><td>content of the text node 	</td><td>null</td></tr>
75</table></p>
76
77@see <a href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113">Document Object Model (DOM) Level 2 Core Specification</a> </p>
78@since OpenOffice 2.0
79*/
80interface XNode : com::sun::star::uno::XInterface
81{
82
83    /**
84    Adds the node newChild to the end of the list of children of this node.
85    @param newChild
86    the new child node
87    @throws com::sun::star::xml::dom::DOMException
88        <p>HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does
89           not allow children of the type of the newChild node, or if the
90           node to append is one of this node's ancestors or this node itself.</p>
91        <p>WRONG_DOCUMENT_ERR: Raised if newChild was created from a different
92           document than the one that created this node.</p>
93        <p>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly or if
94           the previous parent of the node being inserted is readonly.</p>
95    */
96    XNode appendChild([in] XNode newChild) raises (DOMException);
97
98    /**
99    Returns a duplicate of this node, i.e., serves as a generic copy
100    constructor for nodes.
101    <p></p>
102    @param deep
103    <true/>: clone node together with any children<br>
104    <false/>: clone without children
105    @returns
106    the cloned node
107    */
108    XNode cloneNode([in] boolean deep);
109
110    /**
111    A NamedNodeMap containing the attributes of this node (if it is an Element)
112    or null otherwise.
113    */
114    XNamedNodeMap getAttributes();
115
116    /**
117    A NodeList that contains all children of this node.
118    */
119    XNodeList getChildNodes();
120
121    /**
122    The first child of this node.
123    */
124    XNode getFirstChild();
125
126    /**
127    The last child of this node.
128    */
129    XNode getLastChild();
130
131    /**
132    Returns the local part of the qualified name of this node.
133    */
134    string getLocalName();
135
136    /**
137    The namespace URI of this node, or null if it is unspecified.
138    */
139    string getNamespaceURI();
140
141    /**
142    The node immediately following this node.
143    */
144    XNode getNextSibling();
145
146    /**
147    The name of this node, depending on its type; see the table above.
148    */
149    string getNodeName();
150
151    /**
152    A code representing the type of the underlying object, as defined above.
153    */
154    NodeType getNodeType();
155
156    /**
157    The value of this node, depending on its type; see the table above.
158
159    @throws com::sun::star::xml::dom::DOMException
160    <p>DOMSTRING_SIZE_ERR: Raised when it would return more characters
161    than fit in a DOMString variable on the implementation platform.</p>
162    */
163    string getNodeValue() raises (DOMException);
164
165    /**
166    The Document object associated with this node.
167    */
168    XDocument getOwnerDocument();
169
170    /**
171    The parent of this node.
172    */
173    XNode getParentNode();
174
175    /**
176    The namespace prefix of this node, or null if it is unspecified.
177    */
178    string getPrefix();
179
180    /**
181    The node immediately preceding this node.
182    */
183    XNode getPreviousSibling();
184
185    /**
186    Returns whether this node (if it is an element) has any attributes.
187    */
188    boolean hasAttributes();
189
190    /**
191    Returns whether this node has any children.
192    */
193    boolean hasChildNodes();
194
195    /**
196    Inserts the node newChild before the existing child node refChild.
197    @throws DOMException
198    <p>HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does
199                      not allow children of the type of the newChild node, or if the
200                      node to insert is one of this node's ancestors or this node itself.
201                   <p>WRONG_DOCUMENT_ERR: Raised if newChild was created from a different
202                      document than the one that created this node.
203                   <p>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly or if the
204                      parent of the node being inserted is readonly.
205                   <p>NOT_FOUND_ERR: Raised if refChild is not a child of this node.
206    */
207    XNode insertBefore([in] XNode newChild, [in] XNode refChild) raises (DOMException);
208
209    /**
210    Tests whether the DOM implementation implements a specific feature and
211    that feature is supported by this node.
212    */
213    boolean isSupported([in] string feature, [in] string ver);
214
215    /**
216    Puts all Text nodes in the full depth of the sub-tree underneath this
217    Node, including attribute nodes, into a "normal" form where only structure
218    (e.g., elements, comments, processing instructions, CDATA sections, and
219    entity references) separates Text nodes, i.e., there are neither adjacent
220    Text nodes nor empty Text nodes.
221    */
222    void normalize();
223
224    /**
225    Removes the child node indicated by oldChild from the list of children,
226    and returns it.
227    @throws DOMException
228    <p>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
229    <p>NOT_FOUND_ERR: Raised if oldChild is not a child of this node.
230    */
231    XNode removeChild([in] XNode oldChild) raises (DOMException);
232
233    /**
234    Replaces the child node oldChild with newChild in the list of children,
235    and returns the oldChild node.
236    @throws DOMException
237                   <p>HIERARCHY_REQUEST_ERR: Raised if this node is of a type that
238                      does not allow children of the type of the newChild node, or
239                      if the node to put in is one of this node's ancestors or this
240                      node itself.
241                   <p>WRONG_DOCUMENT_ERR: Raised if newChild was created from a different
242                      document than the one that created this node.
243                   <p>NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the parent of the
244                      new node is readonly.
245                   <p>NOT_FOUND_ERR: Raised if oldChild is not a child of this node.
246    */
247    XNode replaceChild([in] XNode newChild, [in] XNode oldChild) raises (DOMException);
248
249    /**
250    The value of this node, depending on its type; see the table above.
251    @throws DOMException
252        <p>NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
253        <p>DOMSTRING_SIZE_ERR: Raised when it would return more characters
254                      than fit in a DOMString variable on the implementation platform.
255    */
256    void setNodeValue([in] string nodeValue) raises (DOMException);
257
258    /**
259    The namespace prefix of this node, or null if it is unspecified.
260    @throws DOMException
261        <p>INVALID_CHARACTER_ERR: Raised if the specified prefix contains an illegal character,
262                      per the XML 1.0 specification .
263                   <p>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
264                   <p>NAMESPACE_ERR: Raised if the specified prefix is malformed per the Namespaces
265                      in XML specification, if the namespaceURI of this node is null, if the specified
266                      prefix is "xml" and the namespaceURI of this node is different from
267                      "http://www.w3.org/XML/1998/namespace", if this node is an attribute and the
268                      specified prefix is "xmlns" and the namespaceURI of this node is different from
269                      " http://www.w3.org/2000/xmlns/", or if this node is an attribute and the qualifiedName
270                      of this node is "xmlns" .
271    */
272    void setPrefix([in] string prefix) raises (DOMException);
273
274};
275
276}; }; }; }; };
277
278#endif
279