xref: /aoo4110/main/unoxml/source/dom/element.hxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski #ifndef DOM_ELEMENT_HXX
25*b1cdbd2cSJim Jagielski #define DOM_ELEMENT_HXX
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include <libxml/tree.h>
28*b1cdbd2cSJim Jagielski 
29*b1cdbd2cSJim Jagielski #include <com/sun/star/uno/Reference.h>
30*b1cdbd2cSJim Jagielski #include <com/sun/star/xml/dom/XNode.hpp>
31*b1cdbd2cSJim Jagielski #include <com/sun/star/xml/dom/XNodeList.hpp>
32*b1cdbd2cSJim Jagielski #include <com/sun/star/xml/dom/XNamedNodeMap.hpp>
33*b1cdbd2cSJim Jagielski #include <com/sun/star/xml/dom/NodeType.hpp>
34*b1cdbd2cSJim Jagielski 
35*b1cdbd2cSJim Jagielski #include <node.hxx>
36*b1cdbd2cSJim Jagielski 
37*b1cdbd2cSJim Jagielski 
38*b1cdbd2cSJim Jagielski using ::rtl::OUString;
39*b1cdbd2cSJim Jagielski using namespace com::sun::star::uno;
40*b1cdbd2cSJim Jagielski using namespace com::sun::star::xml::dom;
41*b1cdbd2cSJim Jagielski 
42*b1cdbd2cSJim Jagielski namespace DOM
43*b1cdbd2cSJim Jagielski {
44*b1cdbd2cSJim Jagielski     typedef ::cppu::ImplInheritanceHelper1<CNode, XElement > CElement_Base;
45*b1cdbd2cSJim Jagielski 
46*b1cdbd2cSJim Jagielski     class CElement
47*b1cdbd2cSJim Jagielski         : public CElement_Base
48*b1cdbd2cSJim Jagielski     {
49*b1cdbd2cSJim Jagielski     private:
50*b1cdbd2cSJim Jagielski         friend class CDocument;
51*b1cdbd2cSJim Jagielski 
52*b1cdbd2cSJim Jagielski         Reference< XAttr > setAttributeNode_Impl_Lock(
53*b1cdbd2cSJim Jagielski                 Reference< XAttr > const& xNewAttr, bool const bNS);
54*b1cdbd2cSJim Jagielski 
55*b1cdbd2cSJim Jagielski     protected:
56*b1cdbd2cSJim Jagielski         CElement(CDocument const& rDocument, ::osl::Mutex const& rMutex,
57*b1cdbd2cSJim Jagielski                 xmlNodePtr const pNode);
58*b1cdbd2cSJim Jagielski 
59*b1cdbd2cSJim Jagielski     public:
60*b1cdbd2cSJim Jagielski 
61*b1cdbd2cSJim Jagielski         virtual void saxify(const Reference< XDocumentHandler >& i_xHandler);
62*b1cdbd2cSJim Jagielski 
63*b1cdbd2cSJim Jagielski         virtual void fastSaxify( Context& i_rContext );
64*b1cdbd2cSJim Jagielski 
65*b1cdbd2cSJim Jagielski         virtual bool IsChildTypeAllowed(NodeType const nodeType);
66*b1cdbd2cSJim Jagielski 
67*b1cdbd2cSJim Jagielski         /**
68*b1cdbd2cSJim Jagielski         Retrieves an attribute value by name.
69*b1cdbd2cSJim Jagielski         */
70*b1cdbd2cSJim Jagielski         virtual OUString  SAL_CALL getAttribute(const OUString& name)
71*b1cdbd2cSJim Jagielski             throw (RuntimeException);
72*b1cdbd2cSJim Jagielski 
73*b1cdbd2cSJim Jagielski         /**
74*b1cdbd2cSJim Jagielski         Retrieves an attribute node by name.
75*b1cdbd2cSJim Jagielski         */
76*b1cdbd2cSJim Jagielski         virtual Reference< XAttr > SAL_CALL getAttributeNode(const OUString& name)
77*b1cdbd2cSJim Jagielski             throw (RuntimeException);
78*b1cdbd2cSJim Jagielski 
79*b1cdbd2cSJim Jagielski         /**
80*b1cdbd2cSJim Jagielski         Retrieves an Attr node by local name and namespace URI.
81*b1cdbd2cSJim Jagielski         */
82*b1cdbd2cSJim Jagielski         virtual Reference< XAttr > SAL_CALL getAttributeNodeNS(const OUString& namespaceURI, const OUString& localName)
83*b1cdbd2cSJim Jagielski             throw (RuntimeException);
84*b1cdbd2cSJim Jagielski 
85*b1cdbd2cSJim Jagielski         /**
86*b1cdbd2cSJim Jagielski         Retrieves an attribute value by local name and namespace URI.
87*b1cdbd2cSJim Jagielski         */
88*b1cdbd2cSJim Jagielski         virtual OUString SAL_CALL getAttributeNS(const OUString& namespaceURI, const OUString& localName)
89*b1cdbd2cSJim Jagielski             throw (RuntimeException);
90*b1cdbd2cSJim Jagielski 
91*b1cdbd2cSJim Jagielski         /**
92*b1cdbd2cSJim Jagielski         Returns a NodeList of all descendant Elements with a given tag name,
93*b1cdbd2cSJim Jagielski         in the order in which they are
94*b1cdbd2cSJim Jagielski         encountered in a preorder traversal of this Element tree.
95*b1cdbd2cSJim Jagielski         */
96*b1cdbd2cSJim Jagielski         virtual Reference< XNodeList > SAL_CALL getElementsByTagName(const OUString& name)
97*b1cdbd2cSJim Jagielski             throw (RuntimeException);
98*b1cdbd2cSJim Jagielski 
99*b1cdbd2cSJim Jagielski         /**
100*b1cdbd2cSJim Jagielski         Returns a NodeList of all the descendant Elements with a given local
101*b1cdbd2cSJim Jagielski         name and namespace URI in the order in which they are encountered in
102*b1cdbd2cSJim Jagielski         a preorder traversal of this Element tree.
103*b1cdbd2cSJim Jagielski         */
104*b1cdbd2cSJim Jagielski         virtual Reference< XNodeList > SAL_CALL getElementsByTagNameNS(const OUString& namespaceURI,
105*b1cdbd2cSJim Jagielski                 const OUString& localName)
106*b1cdbd2cSJim Jagielski             throw (RuntimeException);
107*b1cdbd2cSJim Jagielski 
108*b1cdbd2cSJim Jagielski         /**
109*b1cdbd2cSJim Jagielski         The name of the element.
110*b1cdbd2cSJim Jagielski         */
111*b1cdbd2cSJim Jagielski         virtual OUString SAL_CALL getTagName()
112*b1cdbd2cSJim Jagielski             throw (RuntimeException);
113*b1cdbd2cSJim Jagielski 
114*b1cdbd2cSJim Jagielski         /**
115*b1cdbd2cSJim Jagielski         Returns true when an attribute with a given name is specified on this
116*b1cdbd2cSJim Jagielski         element or has a default value, false otherwise.
117*b1cdbd2cSJim Jagielski         */
118*b1cdbd2cSJim Jagielski         virtual sal_Bool SAL_CALL hasAttribute(const OUString& name)
119*b1cdbd2cSJim Jagielski             throw (RuntimeException);
120*b1cdbd2cSJim Jagielski 
121*b1cdbd2cSJim Jagielski         /**
122*b1cdbd2cSJim Jagielski         Returns true when an attribute with a given local name and namespace
123*b1cdbd2cSJim Jagielski         URI is specified on this element or has a default value, false otherwise.
124*b1cdbd2cSJim Jagielski         */
125*b1cdbd2cSJim Jagielski         virtual sal_Bool SAL_CALL hasAttributeNS(const OUString& namespaceURI, const OUString& localName)
126*b1cdbd2cSJim Jagielski             throw (RuntimeException);
127*b1cdbd2cSJim Jagielski 
128*b1cdbd2cSJim Jagielski         /**
129*b1cdbd2cSJim Jagielski         Removes an attribute by name.
130*b1cdbd2cSJim Jagielski         */
131*b1cdbd2cSJim Jagielski         virtual void SAL_CALL removeAttribute(const OUString& name)
132*b1cdbd2cSJim Jagielski             throw (RuntimeException, DOMException);
133*b1cdbd2cSJim Jagielski 
134*b1cdbd2cSJim Jagielski         /**
135*b1cdbd2cSJim Jagielski         Removes the specified attribute node.
136*b1cdbd2cSJim Jagielski         */
137*b1cdbd2cSJim Jagielski         virtual Reference< XAttr > SAL_CALL removeAttributeNode(const Reference< XAttr >& oldAttr)
138*b1cdbd2cSJim Jagielski             throw (RuntimeException, DOMException);
139*b1cdbd2cSJim Jagielski 
140*b1cdbd2cSJim Jagielski         /**
141*b1cdbd2cSJim Jagielski         Removes an attribute by local name and namespace URI.
142*b1cdbd2cSJim Jagielski         */
143*b1cdbd2cSJim Jagielski         virtual void SAL_CALL removeAttributeNS(const OUString& namespaceURI, const OUString& localName)
144*b1cdbd2cSJim Jagielski             throw (RuntimeException, DOMException);
145*b1cdbd2cSJim Jagielski 
146*b1cdbd2cSJim Jagielski         /**
147*b1cdbd2cSJim Jagielski         Adds a new attribute.
148*b1cdbd2cSJim Jagielski         */
149*b1cdbd2cSJim Jagielski         virtual void SAL_CALL setAttribute(const OUString& name, const OUString& value)
150*b1cdbd2cSJim Jagielski             throw (RuntimeException, DOMException);
151*b1cdbd2cSJim Jagielski 
152*b1cdbd2cSJim Jagielski         /**
153*b1cdbd2cSJim Jagielski         Adds a new attribute node.
154*b1cdbd2cSJim Jagielski         */
155*b1cdbd2cSJim Jagielski         virtual Reference< XAttr > SAL_CALL setAttributeNode(const Reference< XAttr >& newAttr)
156*b1cdbd2cSJim Jagielski             throw (RuntimeException, DOMException);
157*b1cdbd2cSJim Jagielski 
158*b1cdbd2cSJim Jagielski         /**
159*b1cdbd2cSJim Jagielski         Adds a new attribute.
160*b1cdbd2cSJim Jagielski         */
161*b1cdbd2cSJim Jagielski         virtual Reference< XAttr > SAL_CALL setAttributeNodeNS(const Reference< XAttr >& newAttr)
162*b1cdbd2cSJim Jagielski             throw (RuntimeException, DOMException);
163*b1cdbd2cSJim Jagielski 
164*b1cdbd2cSJim Jagielski         /**
165*b1cdbd2cSJim Jagielski         Adds a new attribute.
166*b1cdbd2cSJim Jagielski         */
167*b1cdbd2cSJim Jagielski         virtual void SAL_CALL setAttributeNS(
168*b1cdbd2cSJim Jagielski                 const OUString& namespaceURI, const OUString& qualifiedName, const OUString& value)
169*b1cdbd2cSJim Jagielski             throw (RuntimeException, DOMException);
170*b1cdbd2cSJim Jagielski 
171*b1cdbd2cSJim Jagielski         /**
172*b1cdbd2cSJim Jagielski         sets the element name
173*b1cdbd2cSJim Jagielski         */
174*b1cdbd2cSJim Jagielski         virtual void SAL_CALL setElementName(const OUString& elementName)
175*b1cdbd2cSJim Jagielski             throw (RuntimeException, DOMException);
176*b1cdbd2cSJim Jagielski 
177*b1cdbd2cSJim Jagielski         // overrides for XNode base
178*b1cdbd2cSJim Jagielski         virtual OUString SAL_CALL getNodeName()
179*b1cdbd2cSJim Jagielski             throw (RuntimeException);
180*b1cdbd2cSJim Jagielski         virtual OUString SAL_CALL getNodeValue()
181*b1cdbd2cSJim Jagielski             throw (RuntimeException);
182*b1cdbd2cSJim Jagielski         virtual Reference< XNamedNodeMap > SAL_CALL getAttributes()
183*b1cdbd2cSJim Jagielski             throw (RuntimeException);
184*b1cdbd2cSJim Jagielski         virtual OUString SAL_CALL getLocalName()
185*b1cdbd2cSJim Jagielski             throw (RuntimeException);
186*b1cdbd2cSJim Jagielski 
187*b1cdbd2cSJim Jagielski         // resolve uno inheritance problems...
188*b1cdbd2cSJim Jagielski         // --- delegation for XNde base.
appendChild(const Reference<XNode> & newChild)189*b1cdbd2cSJim Jagielski         virtual Reference< XNode > SAL_CALL appendChild(const Reference< XNode >& newChild)
190*b1cdbd2cSJim Jagielski             throw (RuntimeException, DOMException)
191*b1cdbd2cSJim Jagielski         {
192*b1cdbd2cSJim Jagielski             return CNode::appendChild(newChild);
193*b1cdbd2cSJim Jagielski         }
cloneNode(sal_Bool deep)194*b1cdbd2cSJim Jagielski         virtual Reference< XNode > SAL_CALL cloneNode(sal_Bool deep)
195*b1cdbd2cSJim Jagielski             throw (RuntimeException)
196*b1cdbd2cSJim Jagielski         {
197*b1cdbd2cSJim Jagielski             return CNode::cloneNode(deep);
198*b1cdbd2cSJim Jagielski         }
getChildNodes()199*b1cdbd2cSJim Jagielski         virtual Reference< XNodeList > SAL_CALL getChildNodes()
200*b1cdbd2cSJim Jagielski             throw (RuntimeException)
201*b1cdbd2cSJim Jagielski         {
202*b1cdbd2cSJim Jagielski             return CNode::getChildNodes();
203*b1cdbd2cSJim Jagielski         }
getFirstChild()204*b1cdbd2cSJim Jagielski         virtual Reference< XNode > SAL_CALL getFirstChild()
205*b1cdbd2cSJim Jagielski             throw (RuntimeException)
206*b1cdbd2cSJim Jagielski         {
207*b1cdbd2cSJim Jagielski             return CNode::getFirstChild();
208*b1cdbd2cSJim Jagielski         }
getLastChild()209*b1cdbd2cSJim Jagielski         virtual Reference< XNode > SAL_CALL getLastChild()
210*b1cdbd2cSJim Jagielski             throw (RuntimeException)
211*b1cdbd2cSJim Jagielski         {
212*b1cdbd2cSJim Jagielski             return CNode::getLastChild();
213*b1cdbd2cSJim Jagielski         }
getNamespaceURI()214*b1cdbd2cSJim Jagielski         virtual OUString SAL_CALL getNamespaceURI()
215*b1cdbd2cSJim Jagielski             throw (RuntimeException)
216*b1cdbd2cSJim Jagielski         {
217*b1cdbd2cSJim Jagielski             return CNode::getNamespaceURI();
218*b1cdbd2cSJim Jagielski         }
getNextSibling()219*b1cdbd2cSJim Jagielski         virtual Reference< XNode > SAL_CALL getNextSibling()
220*b1cdbd2cSJim Jagielski             throw (RuntimeException)
221*b1cdbd2cSJim Jagielski         {
222*b1cdbd2cSJim Jagielski             return CNode::getNextSibling();
223*b1cdbd2cSJim Jagielski         }
getNodeType()224*b1cdbd2cSJim Jagielski         virtual NodeType SAL_CALL getNodeType()
225*b1cdbd2cSJim Jagielski             throw (RuntimeException)
226*b1cdbd2cSJim Jagielski         {
227*b1cdbd2cSJim Jagielski             return CNode::getNodeType();
228*b1cdbd2cSJim Jagielski         }
getOwnerDocument()229*b1cdbd2cSJim Jagielski         virtual Reference< XDocument > SAL_CALL getOwnerDocument()
230*b1cdbd2cSJim Jagielski             throw (RuntimeException)
231*b1cdbd2cSJim Jagielski         {
232*b1cdbd2cSJim Jagielski             return CNode::getOwnerDocument();
233*b1cdbd2cSJim Jagielski         }
getParentNode()234*b1cdbd2cSJim Jagielski         virtual Reference< XNode > SAL_CALL getParentNode()
235*b1cdbd2cSJim Jagielski             throw (RuntimeException)
236*b1cdbd2cSJim Jagielski         {
237*b1cdbd2cSJim Jagielski             return CNode::getParentNode();
238*b1cdbd2cSJim Jagielski         }
getPrefix()239*b1cdbd2cSJim Jagielski         virtual OUString SAL_CALL getPrefix()
240*b1cdbd2cSJim Jagielski             throw (RuntimeException)
241*b1cdbd2cSJim Jagielski         {
242*b1cdbd2cSJim Jagielski             return CNode::getPrefix();
243*b1cdbd2cSJim Jagielski         }
getPreviousSibling()244*b1cdbd2cSJim Jagielski         virtual Reference< XNode > SAL_CALL getPreviousSibling()
245*b1cdbd2cSJim Jagielski             throw (RuntimeException)
246*b1cdbd2cSJim Jagielski         {
247*b1cdbd2cSJim Jagielski             return CNode::getPreviousSibling();
248*b1cdbd2cSJim Jagielski         }
hasAttributes()249*b1cdbd2cSJim Jagielski         virtual sal_Bool SAL_CALL hasAttributes()
250*b1cdbd2cSJim Jagielski             throw (RuntimeException)
251*b1cdbd2cSJim Jagielski         {
252*b1cdbd2cSJim Jagielski             return CNode::hasAttributes();
253*b1cdbd2cSJim Jagielski         }
hasChildNodes()254*b1cdbd2cSJim Jagielski         virtual sal_Bool SAL_CALL hasChildNodes()
255*b1cdbd2cSJim Jagielski             throw (RuntimeException)
256*b1cdbd2cSJim Jagielski         {
257*b1cdbd2cSJim Jagielski             return CNode::hasChildNodes();
258*b1cdbd2cSJim Jagielski         }
insertBefore(const Reference<XNode> & newChild,const Reference<XNode> & refChild)259*b1cdbd2cSJim Jagielski         virtual Reference< XNode > SAL_CALL insertBefore(
260*b1cdbd2cSJim Jagielski                 const Reference< XNode >& newChild, const Reference< XNode >& refChild)
261*b1cdbd2cSJim Jagielski             throw (RuntimeException, DOMException)
262*b1cdbd2cSJim Jagielski         {
263*b1cdbd2cSJim Jagielski             return CNode::insertBefore(newChild, refChild);
264*b1cdbd2cSJim Jagielski         }
isSupported(const OUString & feature,const OUString & ver)265*b1cdbd2cSJim Jagielski         virtual sal_Bool SAL_CALL isSupported(const OUString& feature, const OUString& ver)
266*b1cdbd2cSJim Jagielski             throw (RuntimeException)
267*b1cdbd2cSJim Jagielski         {
268*b1cdbd2cSJim Jagielski             return CNode::isSupported(feature, ver);
269*b1cdbd2cSJim Jagielski         }
normalize()270*b1cdbd2cSJim Jagielski         virtual void SAL_CALL normalize()
271*b1cdbd2cSJim Jagielski             throw (RuntimeException)
272*b1cdbd2cSJim Jagielski         {
273*b1cdbd2cSJim Jagielski             CNode::normalize();
274*b1cdbd2cSJim Jagielski         }
removeChild(const Reference<XNode> & oldChild)275*b1cdbd2cSJim Jagielski         virtual Reference< XNode > SAL_CALL removeChild(const Reference< XNode >& oldChild)
276*b1cdbd2cSJim Jagielski             throw (RuntimeException, DOMException)
277*b1cdbd2cSJim Jagielski         {
278*b1cdbd2cSJim Jagielski             return CNode::removeChild(oldChild);
279*b1cdbd2cSJim Jagielski         }
replaceChild(const Reference<XNode> & newChild,const Reference<XNode> & oldChild)280*b1cdbd2cSJim Jagielski         virtual Reference< XNode > SAL_CALL replaceChild(
281*b1cdbd2cSJim Jagielski                 const Reference< XNode >& newChild, const Reference< XNode >& oldChild)
282*b1cdbd2cSJim Jagielski             throw (RuntimeException, DOMException)
283*b1cdbd2cSJim Jagielski         {
284*b1cdbd2cSJim Jagielski             return CNode::replaceChild(newChild, oldChild);
285*b1cdbd2cSJim Jagielski         }
setNodeValue(const OUString & nodeValue)286*b1cdbd2cSJim Jagielski         virtual void SAL_CALL setNodeValue(const OUString& nodeValue)
287*b1cdbd2cSJim Jagielski             throw (RuntimeException, DOMException)
288*b1cdbd2cSJim Jagielski         {
289*b1cdbd2cSJim Jagielski             return CNode::setNodeValue(nodeValue);
290*b1cdbd2cSJim Jagielski         }
setPrefix(const OUString & prefix)291*b1cdbd2cSJim Jagielski         virtual void SAL_CALL setPrefix(const OUString& prefix)
292*b1cdbd2cSJim Jagielski             throw (RuntimeException, DOMException)
293*b1cdbd2cSJim Jagielski         {
294*b1cdbd2cSJim Jagielski             return CNode::setPrefix(prefix);
295*b1cdbd2cSJim Jagielski         }
296*b1cdbd2cSJim Jagielski 
297*b1cdbd2cSJim Jagielski     };
298*b1cdbd2cSJim Jagielski 
299*b1cdbd2cSJim Jagielski }
300*b1cdbd2cSJim Jagielski 
301*b1cdbd2cSJim Jagielski #endif
302