Xalan-C++ API Reference  1.12.0
XercesCommentBridge.hpp
Go to the documentation of this file.
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements. See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership. The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18 #if !defined(XERCESCOMMENTBRIDGE_HEADER_GUARD_1357924680)
19 #define XERCESCOMMENTBRIDGE_HEADER_GUARD_1357924680
20 
21 
22 
24 
25 
26 
27 #if XERCES_VERSION_MAJOR >= 2
28 #include <xercesc/dom/deprecated/DOM_Comment.hpp>
29 #else
30 #include <xercesc/dom/DOM_Comment.hpp>
31 #endif
32 
33 
34 
36 
37 
38 
40 
41 
42 
43 namespace XALAN_CPP_NAMESPACE {
44 
45 
46 
47 class XercesBridgeNavigator;
48 
49 
50 /**
51  * This class is deprecated.
52  *
53  * @deprecated This class is part of the deprecated Xerces DOM bridge.
54  */
56 {
57 public:
58 
60  const DOM_CommentType& theXercesComment,
61  const XercesBridgeNavigator& theNavigator);
62 
63  virtual
65 
66 
67  /**
68  * Gets the name of this node.
69  */
70  virtual const XalanDOMString&
71  getNodeName() const;
72 
73  /**
74  * Gets the value of this node, depending on its type.
75  */
76  virtual const XalanDOMString&
77  getNodeValue() const;
78 
79  /**
80  * An enum value representing the type of the underlying object.
81  */
82  virtual NodeType
83  getNodeType() const;
84 
85  /**
86  * Gets the parent of this node.
87  *
88  * All nodes, except <code>Document</code>,
89  * <code>DocumentFragment</code>, and <code>Attr</code> may have a parent.
90  * However, if a node has just been created and not yet added to the tree,
91  * or if it has been removed from the tree, a <code>null</code> DOM_Node
92  * is returned.
93  */
94  virtual XalanNode*
95  getParentNode() const;
96 
97  /**
98  * Gets a <code>NodeList</code> that contains all children of this node.
99  *
100  * If there
101  * are no children, this is a <code>NodeList</code> containing no nodes.
102  * The content of the returned <code>NodeList</code> is "live" in the sense
103  * that, for instance, changes to the children of the node object that
104  * it was created from are immediately reflected in the nodes returned by
105  * the <code>NodeList</code> accessors; it is not a static snapshot of the
106  * content of the node. This is true for every <code>NodeList</code>,
107  * including the ones returned by the <code>getElementsByTagName</code>
108  * method.
109  */
110  virtual const XalanNodeList*
111  getChildNodes() const;
112 
113  /**
114  * Gets the first child of this node.
115  *
116  * If there is no such node, this returns <code>null</code>.
117  */
118  virtual XalanNode*
119  getFirstChild() const;
120 
121  /**
122  * Gets the last child of this node.
123  *
124  * If there is no such node, this returns <code>null</code>.
125  */
126  virtual XalanNode*
127  getLastChild() const;
128 
129  /**
130  * Gets the node immediately preceding this node.
131  *
132  * If there is no such node, this returns <code>null</code>.
133  */
134  virtual XalanNode*
136 
137  /**
138  * Gets the node immediately following this node.
139  *
140  * If there is no such node, this returns <code>null</code>.
141  */
142  virtual XalanNode*
143  getNextSibling() const;
144 
145  /**
146  * Gets a <code>NamedNodeMap</code> containing the attributes of this node (if it
147  * is an <code>Element</code>) or <code>null</code> otherwise.
148  */
149  virtual const XalanNamedNodeMap*
150  getAttributes() const;
151 
152  /**
153  * Gets the <code>DOM_Document</code> object associated with this node.
154  *
155  * This is also
156  * the <code>DOM_Document</code> object used to create new nodes. When this
157  * node is a <code>DOM_Document</code> or a <code>DOM_DocumentType</code>
158  * which is not used with any <code>DOM_Document</code> yet, this is
159  * <code>null</code>.
160  */
161  virtual XalanDocument*
163 
164  //@}
165  /** @name Cloning function. */
166  //@{
167 
168  /**
169  * Returns a duplicate of this node.
170  *
171  * This function serves as a generic copy constructor for nodes.
172  *
173  * The duplicate node has no parent (
174  * <code>parentNode</code> returns <code>null</code>.).
175  * <br>Cloning an <code>Element</code> copies all attributes and their
176  * values, including those generated by the XML processor to represent
177  * defaulted attributes, but this method does not copy any text it contains
178  * unless it is a deep clone, since the text is contained in a child
179  * <code>Text</code> node. Cloning any other type of node simply returns a
180  * copy of this node.
181  * @param deep If <code>true</code>, recursively clone the subtree under the
182  * specified node; if <code>false</code>, clone only the node itself (and
183  * its attributes, if it is an <code>Element</code>).
184  * @return The duplicate node.
185  */
186  virtual XercesCommentBridge*
187  cloneNode(bool deep) const;
188 
189  //@}
190  /** @name Functions to modify the DOM Node. */
191  //@{
192 
193  /**
194  * Inserts the node <code>newChild</code> before the existing child node
195  * <code>refChild</code>.
196  *
197  * If <code>refChild</code> is <code>null</code>,
198  * insert <code>newChild</code> at the end of the list of children.
199  * <br>If <code>newChild</code> is a <code>DocumentFragment</code> object,
200  * all of its children are inserted, in the same order, before
201  * <code>refChild</code>. If the <code>newChild</code> is already in the
202  * tree, it is first removed. Note that a <code>DOM_Node</code> that
203  * has never been assigned to refer to an actual node is == null.
204  * @param newChild The node to insert.
205  * @param refChild The reference node, i.e., the node before which the new
206  * node must be inserted.
207  * @return The node being inserted.
208  */
209  virtual XalanNode*
211  XalanNode* newChild,
212  XalanNode* refChild);
213 
214  /**
215  * Replaces the child node <code>oldChild</code> with <code>newChild</code>
216  * in the list of children, and returns the <code>oldChild</code> node.
217  *
218  * If <CODE>newChild</CODE> is a <CODE>DOM_DocumentFragment</CODE> object,
219  * <CODE>oldChild</CODE> is replaced by all of the <CODE>DOM_DocumentFragment</CODE>
220  * children, which are inserted in the same order.
221  *
222  * If the <code>newChild</code> is already in the tree, it is first removed.
223  * @param newChild The new node to put in the child list.
224  * @param oldChild The node being replaced in the list.
225  * @return The node replaced.
226  */
227  virtual XalanNode*
229  XalanNode* newChild,
230  XalanNode* oldChild);
231 
232  /**
233  * Removes the child node indicated by <code>oldChild</code> from the list
234  * of children, and returns it.
235  *
236  * @param oldChild The node being removed.
237  * @return The node removed.
238  */
239  virtual XalanNode*
240  removeChild(XalanNode* oldChild);
241 
242  /**
243  * Adds the node <code>newChild</code> to the end of the list of children of
244  * this node.
245  *
246  * If the <code>newChild</code> is already in the tree, it is
247  * first removed.
248  * @param newChild The node to add.If it is a <code>DocumentFragment</code>
249  * object, the entire contents of the document fragment are moved into
250  * the child list of this node
251  * @return The node added.
252  */
253  virtual XalanNode*
254  appendChild(XalanNode* newChild);
255 
256  //@}
257  /** @name Query functions. */
258  //@{
259 
260  /**
261  * This is a convenience method to allow easy determination of whether a
262  * node has any children.
263  *
264  * @return <code>true</code> if the node has any children,
265  * <code>false</code> if the node has no children.
266  */
267  virtual bool
268  hasChildNodes() const;
269 
270 
271  //@}
272  /** @name Set functions. */
273  //@{
274 
275  /**
276  * Sets the value of the node.
277  *
278  * Any node which can have a nodeValue (@see getNodeValue) will
279  * also accept requests to set it to a string. The exact response to
280  * this varies from node to node -- Attribute, for example, stores
281  * its values in its children and has to replace them with a new Text
282  * holding the replacement value.
283  *
284  * For most types of Node, value is null and attempting to set it
285  * will throw DOMException(NO_MODIFICATION_ALLOWED_ERR). This will
286  * also be thrown if the node is read-only.
287  */
288  virtual void
289  setNodeValue(const XalanDOMString& nodeValue);
290 
291  //@}
292  /** @name Functions introduced in DOM Level 2. */
293  //@{
294 
295  /**
296  * Puts all <CODE>DOM_Text</CODE>
297  * nodes in the full depth of the sub-tree underneath this <CODE>DOM_Node</CODE>,
298  * including attribute nodes, into a "normal" form where only markup (e.g.,
299  * tags, comments, processing instructions, CDATA sections, and entity
300  * references) separates <CODE>DOM_Text</CODE>
301  * nodes, i.e., there are no adjacent <CODE>DOM_Text</CODE>
302  * nodes. This can be used to ensure that the DOM view of a document is the
303  * same as if it were saved and re-loaded, and is useful when operations
304  * (such as XPointer lookups) that depend on a particular document tree
305  * structure are to be used.
306  * <P><B>Note:</B> In cases where the document contains <CODE>DOM_CDATASections</CODE>,
307  * the normalize operation alone may not be sufficient, since XPointers do
308  * not differentiate between <CODE>DOM_Text</CODE>
309  * nodes and <CODE>DOM_CDATASection</CODE> nodes.</P>
310  */
311  virtual void
313 
314  /**
315  * Tests whether the DOM implementation implements a specific
316  * feature and that feature is supported by this node.
317  * @param feature The string of the feature to test. This is the same
318  * name as what can be passed to the method <code>hasFeature</code> on
319  * <code>DOMImplementation</code>.
320  * @param version This is the version number of the feature to test. In
321  * Level 2, version 1, this is the string "2.0". If the version is not
322  * specified, supporting any version of the feature will cause the
323  * method to return <code>true</code>.
324  * @return Returns <code>true</code> if the specified feature is supported
325  * on this node, <code>false</code> otherwise.
326  */
327  virtual bool
329  const XalanDOMString& feature,
330  const XalanDOMString& version) const;
331 
332  /**
333  * Get the <em>namespace URI</em> of
334  * this node, or <code>null</code> if it is unspecified.
335  * <p>
336  * This is not a computed value that is the result of a namespace lookup
337  * based on an examination of the namespace declarations in scope. It is
338  * merely the namespace URI given at creation time.
339  * <p>
340  * For nodes of any type other than <CODE>ELEMENT_NODE</CODE> and
341  * <CODE>ATTRIBUTE_NODE</CODE> and nodes created with a DOM Level 1 method,
342  * such as <CODE>createElement</CODE> from the <CODE>Document</CODE>
343  * interface, this is always <CODE>null</CODE>.
344  */
345  virtual const XalanDOMString&
347 
348  /**
349  * Get the <em>namespace prefix</em>
350  * of this node, or <code>null</code> if it is unspecified.
351  */
352  virtual const XalanDOMString&
353  getPrefix() const;
354 
355  /**
356  * Returns the local part of the <em>qualified name</em> of this node.
357  * <p>
358  * For nodes created with a DOM Level 1 method, such as
359  * <code>createElement</code> from the <code>DOM_Document</code> interface,
360  * it is null.
361  */
362  virtual const XalanDOMString&
363  getLocalName() const;
364 
365  /**
366  * Set the <em>namespace prefix</em> of this node.
367  * <p>
368  * Note that setting this attribute, when permitted, changes
369  * the <CODE>nodeName</CODE> attribute, which holds the <EM>qualified
370  * name</EM>, as well as the <CODE>tagName</CODE> and <CODE>name</CODE>
371  * attributes of the <CODE>DOM_Element</CODE> and <CODE>DOM_Attr</CODE>
372  * interfaces, when applicable.
373  * <p>
374  * Note also that changing the prefix of an
375  * attribute, that is known to have a default value, does not make a new
376  * attribute with the default value and the original prefix appear, since the
377  * <CODE>namespaceURI</CODE> and <CODE>localName</CODE> do not change.
378  *
379  * @param prefix The prefix of this node.
380  * @exception DOMException
381  * INVALID_CHARACTER_ERR: Raised if the specified prefix contains
382  * an illegal character.
383  * <br>
384  * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
385  * <br>
386  * NAMESPACE_ERR: Raised if the specified <CODE>prefix</CODE> is
387  * malformed, if the specified prefix is "xml" and the
388  * <CODE>namespaceURI</CODE> of this node is different from
389  * "http://www.w3.org/XML/1998/namespace", if specified prefix is
390  * "xmlns" and the <CODE>namespaceURI</CODE> is neither
391  * <CODE>null</CODE> nor an empty string, or if the
392  * <CODE>localName</CODE> is <CODE>null</CODE>.
393  */
394  virtual void
395  setPrefix(const XalanDOMString& prefix);
396 
397  virtual bool
398  isIndexed() const;
399 
400  virtual IndexType
401  getIndex() const;
402 
403  //@}
404 
405  // These interfaces are inherited from XalanCDATASection...
406 
407  /** @name Getter functions. */
408  //@{
409  /**
410  * Returns the character data of the node that implements this interface.
411  *
412  * The DOM implementation may not put arbitrary limits on the amount of data that
413  * may be stored in a <code>CharacterData</code> node. However,
414  * implementation limits may mean that the entirety of a node's data may
415  * not fit into a single <code>DOMString</code>. In such cases, the user
416  * may call <code>substringData</code> to retrieve the data in
417  * appropriately sized pieces.
418  * @exception DOMException
419  * NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
420  * @exception DOMException
421  * DOMSTRING_SIZE_ERR: Raised when it would return more characters than
422  * fit in a <code>DOMString</code> variable on the implementation
423  * platform.
424  */
425  virtual const XalanDOMString&
426  getData() const;
427 
428  /**
429  * Returns the number of characters that are available through <code>data</code> and
430  * the <code>substringData</code> method below.
431  *
432  * This may have the value
433  * zero, i.e., <code>CharacterData</code> nodes may be empty.
434  */
435  virtual unsigned int
436  getLength() const;
437 
438  /**
439  * Extracts a range of data from the node.
440  *
441  * @param offset Start offset of substring to extract.
442  * @param count The number of characters to extract.
443  * @return The specified substring. If the sum of <code>offset</code> and
444  * <code>count</code> exceeds the <code>length</code>, then all
445  * characters to the end of the data are returned.
446  * @exception DOMException
447  * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater
448  * than the number of characters in <code>data</code>, or if the
449  * specified <code>count</code> is negative.
450  * <br>DOMSTRING_SIZE_ERR: Raised if the specified range of text does not
451  * fit into a <code>DOMString</code>.
452  */
453  virtual XalanDOMString
455  unsigned int offset,
456  unsigned int count) const;
457 
458  //@}
459  /** @name Functions that set or change data. */
460  //@{
461  /**
462  * Append the string to the end of the character data of the node.
463  *
464  * Upon success, <code>data</code> provides access to the concatenation of
465  * <code>data</code> and the <code>DOMString</code> specified.
466  * @param arg The <code>DOMString</code> to append.
467  * @exception DOMException
468  * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
469  */
470  virtual void
472 
473  /**
474  * Insert a string at the specified character offset.
475  *
476  * @param offset The character offset at which to insert.
477  * @param arg The <code>DOMString</code> to insert.
478  * @exception DOMException
479  * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater
480  * than the number of characters in <code>data</code>.
481  * <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
482  */
483  virtual void
485  unsigned int offset,
486  const XalanDOMString& arg);
487 
488  /**
489  * Remove a range of characters from the node.
490  *
491  * Upon success,
492  * <code>data</code> and <code>length</code> reflect the change.
493  * @param offset The offset from which to remove characters.
494  * @param count The number of characters to delete. If the sum of
495  * <code>offset</code> and <code>count</code> exceeds <code>length</code>
496  * then all characters from <code>offset</code> to the end of the data
497  * are deleted.
498  * @exception DOMException
499  * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater
500  * than the number of characters in <code>data</code>, or if the
501  * specified <code>count</code> is negative.
502  * <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
503  */
504  virtual void
506  unsigned int offset,
507  unsigned int count);
508 
509  /**
510  * Replace the characters starting at the specified character offset with
511  * the specified string.
512  *
513  * @param offset The offset from which to start replacing.
514  * @param count The number of characters to replace. If the sum of
515  * <code>offset</code> and <code>count</code> exceeds <code>length</code>
516  * , then all characters to the end of the data are replaced (i.e., the
517  * effect is the same as a <code>remove</code> method call with the same
518  * range, followed by an <code>append</code> method invocation).
519  * @param arg The <code>DOMString</code> with which the range must be
520  * replaced.
521  * @exception DOMException
522  * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater
523  * than the number of characters in <code>data</code>, or if the
524  * specified <code>count</code> is negative.
525  * <br>NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
526  */
527  virtual void
529  unsigned int offset,
530  unsigned int count,
531  const XalanDOMString& arg);
532 
533  /**
534  * Get the Xerces node this instance represent.
535  *
536  * @return The Xerces node
537  */
540  {
541  return m_xercesNode;
542  }
543 
544  //@}
545 
546 private:
547 
548  // Not implemented...
549  XercesCommentBridge(const XercesCommentBridge& theSource);
550 
552  operator=(const XercesCommentBridge& theSource);
553 
554  bool
555  operator==(const XercesCommentBridge& theRHS) const;
556 
557  // Data members...
558  DOM_CommentType m_xercesNode;
559 
560  const XercesBridgeNavigator& m_navigator;
561 };
562 
563 
564 
565 }
566 
567 
568 
569 #endif // !defined(XERCESCOMMENTBRIDGE_HEADER_GUARD_1357924680)
#define XALAN_CPP_NAMESPACE
Xalan-C++ namespace, including major and minor version.
#define XALAN_XERCESPARSERLIAISON_EXPORT
unsigned long IndexType
Definition: XalanNode.hpp:64
This class is deprecated.
virtual XalanNode * replaceChild(XalanNode *newChild, XalanNode *oldChild)
Replaces the child node oldChild with newChild in the list of children, and returns the oldChild node...
virtual XalanNode * insertBefore(XalanNode *newChild, XalanNode *refChild)
Inserts the node newChild before the existing child node refChild.
virtual XalanNode * getFirstChild() const
Gets the first child of this node.
virtual const XalanDOMString & getData() const
Returns the character data of the node that implements this interface.
virtual void deleteData(unsigned int offset, unsigned int count)
Remove a range of characters from the node.
virtual const XalanDOMString & getNodeValue() const
Gets the value of this node, depending on its type.
XercesCommentBridge(const DOM_CommentType &theXercesComment, const XercesBridgeNavigator &theNavigator)
virtual const XalanNodeList * getChildNodes() const
Gets a NodeList that contains all children of this node.
virtual void insertData(unsigned int offset, const XalanDOMString &arg)
Insert a string at the specified character offset.
virtual void setNodeValue(const XalanDOMString &nodeValue)
Sets the value of the node.
virtual XalanDocument * getOwnerDocument() const
Gets the DOM_Document object associated with this node.
virtual const XalanDOMString & getLocalName() const
Returns the local part of the qualified name of this node.
virtual unsigned int getLength() const
Returns the number of characters that are available through data and the substringData method below.
virtual XalanNode * getParentNode() const
Gets the parent of this node.
virtual IndexType getIndex() const
Get the node's index.
virtual bool isSupported(const XalanDOMString &feature, const XalanDOMString &version) const
Tests whether the DOM implementation implements a specific feature and that feature is supported by t...
virtual const XalanDOMString & getPrefix() const
Get the namespace prefix of this node, or null if it is unspecified.
virtual const XalanDOMString & getNodeName() const
Gets the name of this node.
virtual bool isIndexed() const
Determine if the document is node-order indexed.
virtual void normalize()
Puts all DOM_Text nodes in the full depth of the sub-tree underneath this DOM_Node,...
virtual const XalanNamedNodeMap * getAttributes() const
Gets a NamedNodeMap containing the attributes of this node (if it is an Element) or null otherwise.
virtual XalanNode * getNextSibling() const
Gets the node immediately following this node.
virtual bool hasChildNodes() const
This is a convenience method to allow easy determination of whether a node has any children.
virtual const XalanDOMString & getNamespaceURI() const
Get the namespace URI of this node, or null if it is unspecified.
virtual XalanDOMString substringData(unsigned int offset, unsigned int count) const
Extracts a range of data from the node.
virtual XalanNode * appendChild(XalanNode *newChild)
Adds the node newChild to the end of the list of children of this node.
virtual XercesCommentBridge * cloneNode(bool deep) const
Returns a duplicate of this node.
virtual XalanNode * getPreviousSibling() const
Gets the node immediately preceding this node.
virtual XalanNode * removeChild(XalanNode *oldChild)
Removes the child node indicated by oldChild from the list of children, and returns it.
virtual NodeType getNodeType() const
An enum value representing the type of the underlying object.
virtual void appendData(const XalanDOMString &arg)
Append the string to the end of the character data of the node.
virtual void replaceData(unsigned int offset, unsigned int count, const XalanDOMString &arg)
Replace the characters starting at the specified character offset with the specified string.
virtual void setPrefix(const XalanDOMString &prefix)
Set the namespace prefix of this node.
virtual XalanNode * getLastChild() const
Gets the last child of this node.
DOM_CommentType getXercesNode() const
Get the Xerces node this instance represent.
bool operator==(const XalanVector< Type > &theLHS, const XalanVector< Type > &theRHS)
xercesc::DOM_Comment DOM_CommentType