source: trunk/include/qdom.h@ 138

Last change on this file since 138 was 2, checked in by dmik, 20 years ago

Imported xplatform parts of the official release 3.3.1 from Trolltech

  • Property svn:keywords set to Id
File size: 21.4 KB
Line 
1/****************************************************************************
2** $Id: qdom.h 2 2005-11-16 15:49:26Z dmik $
3**
4** Definition of QDomDocument and related classes.
5**
6** Created : 000518
7**
8** Copyright (C) 1992-2002 Trolltech AS. All rights reserved.
9**
10** This file is part of the xml module of the Qt GUI Toolkit.
11**
12** This file may be distributed under the terms of the Q Public License
13** as defined by Trolltech AS of Norway and appearing in the file
14** LICENSE.QPL included in the packaging of this file.
15**
16** This file may be distributed and/or modified under the terms of the
17** GNU General Public License version 2 as published by the Free Software
18** Foundation and appearing in the file LICENSE.GPL included in the
19** packaging of this file.
20**
21** Licensees holding valid Qt Enterprise Edition licenses may use this
22** file in accordance with the Qt Commercial License Agreement provided
23** with the Software.
24**
25** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
26** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
27**
28** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
29** information about Qt Commercial License Agreements.
30** See http://www.trolltech.com/qpl/ for QPL licensing information.
31** See http://www.trolltech.com/gpl/ for GPL licensing information.
32**
33** Contact info@trolltech.com if any conditions of this licensing are
34** not clear to you.
35**
36**********************************************************************/
37
38#ifndef QDOM_H
39#define QDOM_H
40
41#ifndef QT_H
42#include "qstring.h"
43#endif // QT_H
44
45#if !defined(QT_MODULE_XML) || defined( QT_LICENSE_PROFESSIONAL ) || defined( QT_INTERNAL_XML )
46#define QM_EXPORT_DOM
47#else
48#define QM_EXPORT_DOM Q_EXPORT
49#endif
50
51#ifndef QT_NO_DOM
52
53class QIODevice;
54class QTextStream;
55
56class QXmlInputSource;
57class QXmlReader;
58
59class QDomDocumentPrivate;
60class QDomDocumentTypePrivate;
61class QDomDocumentFragmentPrivate;
62class QDomNodePrivate;
63class QDomNodeListPrivate;
64class QDomImplementationPrivate;
65class QDomElementPrivate;
66class QDomNotationPrivate;
67class QDomEntityPrivate;
68class QDomEntityReferencePrivate;
69class QDomProcessingInstructionPrivate;
70class QDomAttrPrivate;
71class QDomCharacterDataPrivate;
72class QDomTextPrivate;
73class QDomCommentPrivate;
74class QDomCDATASectionPrivate;
75class QDomNamedNodeMapPrivate;
76class QDomImplementationPrivate;
77
78class QDomNodeList;
79class QDomElement;
80class QDomText;
81class QDomComment;
82class QDomCDATASection;
83class QDomProcessingInstruction;
84class QDomAttr;
85class QDomEntityReference;
86class QDomDocument;
87class QDomNamedNodeMap;
88class QDomDocument;
89class QDomDocumentFragment;
90class QDomDocumentType;
91class QDomImplementation;
92class QDomNode;
93class QDomEntity;
94class QDomNotation;
95class QDomCharacterData;
96
97class QM_EXPORT_DOM QDomImplementation
98{
99public:
100 QDomImplementation();
101 QDomImplementation( const QDomImplementation& );
102 virtual ~QDomImplementation();
103 QDomImplementation& operator= ( const QDomImplementation& );
104 bool operator== ( const QDomImplementation& ) const;
105 bool operator!= ( const QDomImplementation& ) const;
106
107 // functions
108 virtual bool hasFeature( const QString& feature, const QString& version );
109 virtual QDomDocumentType createDocumentType( const QString& qName, const QString& publicId, const QString& systemId );
110 virtual QDomDocument createDocument( const QString& nsURI, const QString& qName, const QDomDocumentType& doctype );
111
112 // Qt extension
113 bool isNull();
114
115private:
116 QDomImplementationPrivate* impl;
117 QDomImplementation( QDomImplementationPrivate* );
118
119 friend class QDomDocument;
120};
121
122class QM_EXPORT_DOM QDomNode
123{
124public:
125 enum NodeType {
126 ElementNode = 1,
127 AttributeNode = 2,
128 TextNode = 3,
129 CDATASectionNode = 4,
130 EntityReferenceNode = 5,
131 EntityNode = 6,
132 ProcessingInstructionNode = 7,
133 CommentNode = 8,
134 DocumentNode = 9,
135 DocumentTypeNode = 10,
136 DocumentFragmentNode = 11,
137 NotationNode = 12,
138 BaseNode = 21,// this is not in the standard
139 CharacterDataNode = 22 // this is not in the standard
140 };
141
142 QDomNode();
143 QDomNode( const QDomNode& );
144 QDomNode& operator= ( const QDomNode& );
145 bool operator== ( const QDomNode& ) const;
146 bool operator!= ( const QDomNode& ) const;
147 virtual ~QDomNode();
148
149 // DOM functions
150 virtual QDomNode insertBefore( const QDomNode& newChild, const QDomNode& refChild );
151 virtual QDomNode insertAfter( const QDomNode& newChild, const QDomNode& refChild );
152 virtual QDomNode replaceChild( const QDomNode& newChild, const QDomNode& oldChild );
153 virtual QDomNode removeChild( const QDomNode& oldChild );
154 virtual QDomNode appendChild( const QDomNode& newChild );
155 virtual bool hasChildNodes() const;
156 virtual QDomNode cloneNode( bool deep = TRUE ) const;
157 virtual void normalize();
158 virtual bool isSupported( const QString& feature, const QString& version ) const;
159
160 // DOM read only attributes
161 virtual QString nodeName() const;
162 virtual QDomNode::NodeType nodeType() const;
163 virtual QDomNode parentNode() const;
164 virtual QDomNodeList childNodes() const;
165 virtual QDomNode firstChild() const;
166 virtual QDomNode lastChild() const;
167 virtual QDomNode previousSibling() const;
168 virtual QDomNode nextSibling() const;
169 virtual QDomNamedNodeMap attributes() const;
170 virtual QDomDocument ownerDocument() const;
171 virtual QString namespaceURI() const;
172 virtual QString localName() const;
173 virtual bool hasAttributes() const;
174
175 // DOM attributes
176 virtual QString nodeValue() const;
177 virtual void setNodeValue( const QString& );
178 virtual QString prefix() const;
179 virtual void setPrefix( const QString& pre );
180
181 // Qt extensions
182 virtual bool isAttr() const;
183 virtual bool isCDATASection() const;
184 virtual bool isDocumentFragment() const;
185 virtual bool isDocument() const;
186 virtual bool isDocumentType() const;
187 virtual bool isElement() const;
188 virtual bool isEntityReference() const;
189 virtual bool isText() const;
190 virtual bool isEntity() const;
191 virtual bool isNotation() const;
192 virtual bool isProcessingInstruction() const;
193 virtual bool isCharacterData() const;
194 virtual bool isComment() const;
195
196 /**
197 * Shortcut to avoid dealing with QDomNodeList
198 * all the time.
199 */
200 QDomNode namedItem( const QString& name ) const;
201
202 bool isNull() const;
203 void clear();
204
205 QDomAttr toAttr();
206 QDomCDATASection toCDATASection();
207 QDomDocumentFragment toDocumentFragment();
208 QDomDocument toDocument();
209 QDomDocumentType toDocumentType();
210 QDomElement toElement();
211 QDomEntityReference toEntityReference();
212 QDomText toText();
213 QDomEntity toEntity();
214 QDomNotation toNotation();
215 QDomProcessingInstruction toProcessingInstruction();
216 QDomCharacterData toCharacterData();
217 QDomComment toComment();
218
219 void save( QTextStream&, int ) const;
220
221protected:
222 QDomNodePrivate* impl;
223 QDomNode( QDomNodePrivate* );
224
225private:
226 friend class QDomDocument;
227 friend class QDomDocumentType;
228 friend class QDomNodeList;
229 friend class QDomNamedNodeMap;
230};
231
232class QM_EXPORT_DOM QDomNodeList
233{
234public:
235 QDomNodeList();
236 QDomNodeList( const QDomNodeList& );
237 QDomNodeList& operator= ( const QDomNodeList& );
238 bool operator== ( const QDomNodeList& ) const;
239 bool operator!= ( const QDomNodeList& ) const;
240 virtual ~QDomNodeList();
241
242 // DOM functions
243 virtual QDomNode item( int index ) const;
244
245 // DOM read only attributes
246 virtual uint length() const;
247 uint count() const { return length(); } // Qt API consitancy
248
249private:
250 QDomNodeListPrivate* impl;
251 QDomNodeList( QDomNodeListPrivate* );
252
253 friend class QDomNode;
254 friend class QDomElement;
255 friend class QDomDocument;
256};
257
258class QM_EXPORT_DOM QDomDocumentType : public QDomNode
259{
260public:
261 QDomDocumentType();
262 QDomDocumentType( const QDomDocumentType& x );
263 QDomDocumentType& operator= ( const QDomDocumentType& );
264 ~QDomDocumentType();
265
266 // DOM read only attributes
267 virtual QString name() const;
268 virtual QDomNamedNodeMap entities() const;
269 virtual QDomNamedNodeMap notations() const;
270 virtual QString publicId() const;
271 virtual QString systemId() const;
272 virtual QString internalSubset() const;
273
274 // Reimplemented from QDomNode
275 QDomNode::NodeType nodeType() const;
276 bool isDocumentType() const;
277
278private:
279 QDomDocumentType( QDomDocumentTypePrivate* );
280
281 friend class QDomImplementation;
282 friend class QDomDocument;
283 friend class QDomNode;
284};
285
286class QM_EXPORT_DOM QDomDocument : public QDomNode
287{
288public:
289 QDomDocument();
290 Q_EXPLICIT QDomDocument( const QString& name );
291 Q_EXPLICIT QDomDocument( const QDomDocumentType& doctype );
292 QDomDocument( const QDomDocument& x );
293 QDomDocument& operator= ( const QDomDocument& );
294 ~QDomDocument();
295
296 // DOM functions
297 QDomElement createElement( const QString& tagName );
298 QDomDocumentFragment createDocumentFragment();
299 QDomText createTextNode( const QString& data );
300 QDomComment createComment( const QString& data );
301 QDomCDATASection createCDATASection( const QString& data );
302 QDomProcessingInstruction createProcessingInstruction( const QString& target, const QString& data );
303 QDomAttr createAttribute( const QString& name );
304 QDomEntityReference createEntityReference( const QString& name );
305 QDomNodeList elementsByTagName( const QString& tagname ) const;
306 QDomNode importNode( const QDomNode& importedNode, bool deep );
307 QDomElement createElementNS( const QString& nsURI, const QString& qName );
308 QDomAttr createAttributeNS( const QString& nsURI, const QString& qName );
309 QDomNodeList elementsByTagNameNS( const QString& nsURI, const QString& localName );
310 QDomElement elementById( const QString& elementId );
311
312 // DOM read only attributes
313 QDomDocumentType doctype() const;
314 QDomImplementation implementation() const;
315 QDomElement documentElement() const;
316
317 // Qt extensions
318 bool setContent( const QCString& text, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
319 bool setContent( const QByteArray& text, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
320 bool setContent( const QString& text, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
321 bool setContent( QIODevice* dev, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
322 bool setContent( const QCString& text, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
323 bool setContent( const QByteArray& text, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
324 bool setContent( const QString& text, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
325 bool setContent( QIODevice* dev, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
326
327 bool setContent( QXmlInputSource *source, QXmlReader *reader, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
328
329 // Reimplemented from QDomNode
330 QDomNode::NodeType nodeType() const;
331 bool isDocument() const;
332
333 // Qt extensions
334 QString toString() const; // ### Qt 4: merge the two overloads
335 QString toString( int ) const;
336 QCString toCString() const; // ### Qt 4: merge the two overloads
337 QCString toCString( int ) const;
338
339private:
340 QDomDocument( QDomDocumentPrivate* );
341
342 friend class QDomNode;
343};
344
345class QM_EXPORT_DOM QDomNamedNodeMap
346{
347public:
348 QDomNamedNodeMap();
349 QDomNamedNodeMap( const QDomNamedNodeMap& );
350 QDomNamedNodeMap& operator= ( const QDomNamedNodeMap& );
351 bool operator== ( const QDomNamedNodeMap& ) const;
352 bool operator!= ( const QDomNamedNodeMap& ) const;
353 ~QDomNamedNodeMap();
354
355 // DOM functions
356 QDomNode namedItem( const QString& name ) const;
357 QDomNode setNamedItem( const QDomNode& newNode );
358 QDomNode removeNamedItem( const QString& name );
359 QDomNode item( int index ) const;
360 QDomNode namedItemNS( const QString& nsURI, const QString& localName ) const;
361 QDomNode setNamedItemNS( const QDomNode& newNode );
362 QDomNode removeNamedItemNS( const QString& nsURI, const QString& localName );
363
364 // DOM read only attributes
365 uint length() const;
366 uint count() const { return length(); } // Qt API consitancy
367
368 // Qt extension
369 bool contains( const QString& name ) const;
370
371private:
372 QDomNamedNodeMapPrivate* impl;
373 QDomNamedNodeMap( QDomNamedNodeMapPrivate* );
374
375 friend class QDomNode;
376 friend class QDomDocumentType;
377 friend class QDomElement;
378};
379
380class QM_EXPORT_DOM QDomDocumentFragment : public QDomNode
381{
382public:
383 QDomDocumentFragment();
384 QDomDocumentFragment( const QDomDocumentFragment& x );
385 QDomDocumentFragment& operator= ( const QDomDocumentFragment& );
386 ~QDomDocumentFragment();
387
388 // Reimplemented from QDomNode
389 QDomNode::NodeType nodeType() const;
390 bool isDocumentFragment() const;
391
392private:
393 QDomDocumentFragment( QDomDocumentFragmentPrivate* );
394
395 friend class QDomDocument;
396 friend class QDomNode;
397};
398
399class QM_EXPORT_DOM QDomCharacterData : public QDomNode
400{
401public:
402 QDomCharacterData();
403 QDomCharacterData( const QDomCharacterData& x );
404 QDomCharacterData& operator= ( const QDomCharacterData& );
405 ~QDomCharacterData();
406
407 // DOM functions
408 virtual QString substringData( unsigned long offset, unsigned long count );
409 virtual void appendData( const QString& arg );
410 virtual void insertData( unsigned long offset, const QString& arg );
411 virtual void deleteData( unsigned long offset, unsigned long count );
412 virtual void replaceData( unsigned long offset, unsigned long count, const QString& arg );
413
414 // DOM read only attributes
415 virtual uint length() const;
416
417 // DOM attributes
418 virtual QString data() const;
419 virtual void setData( const QString& );
420
421 // Reimplemented from QDomNode
422 QDomNode::NodeType nodeType() const;
423 bool isCharacterData() const;
424
425private:
426 QDomCharacterData( QDomCharacterDataPrivate* );
427
428 friend class QDomDocument;
429 friend class QDomText;
430 friend class QDomComment;
431 friend class QDomNode;
432};
433
434class QM_EXPORT_DOM QDomAttr : public QDomNode
435{
436public:
437 QDomAttr();
438 QDomAttr( const QDomAttr& x );
439 QDomAttr& operator= ( const QDomAttr& );
440 ~QDomAttr();
441
442 // DOM read only attributes
443 virtual QString name() const;
444 virtual bool specified() const;
445 virtual QDomElement ownerElement() const;
446
447 // DOM attributes
448 virtual QString value() const;
449 virtual void setValue( const QString& );
450
451 // Reimplemented from QDomNode
452 QDomNode::NodeType nodeType() const;
453 bool isAttr() const;
454
455private:
456 QDomAttr( QDomAttrPrivate* );
457
458 friend class QDomDocument;
459 friend class QDomElement;
460 friend class QDomNode;
461};
462
463class QM_EXPORT_DOM QDomElement : public QDomNode
464{
465public:
466 QDomElement();
467 QDomElement( const QDomElement& x );
468 QDomElement& operator= ( const QDomElement& );
469 ~QDomElement();
470
471 // DOM functions
472 QString attribute( const QString& name, const QString& defValue = QString::null ) const;
473 void setAttribute( const QString& name, const QString& value );
474 void setAttribute( const QString& name, int value );
475 void setAttribute( const QString& name, uint value );
476 void setAttribute( const QString& name, long value );
477 void setAttribute( const QString& name, ulong value );
478 void setAttribute( const QString& name, double value );
479 void removeAttribute( const QString& name );
480 QDomAttr attributeNode( const QString& name);
481 QDomAttr setAttributeNode( const QDomAttr& newAttr );
482 QDomAttr removeAttributeNode( const QDomAttr& oldAttr );
483 virtual QDomNodeList elementsByTagName( const QString& tagname ) const;
484 bool hasAttribute( const QString& name ) const;
485
486 QString attributeNS( const QString nsURI, const QString& localName, const QString& defValue ) const;
487 void setAttributeNS( const QString nsURI, const QString& qName, const QString& value );
488 void setAttributeNS( const QString nsURI, const QString& qName, int value );
489 void setAttributeNS( const QString nsURI, const QString& qName, uint value );
490 void setAttributeNS( const QString nsURI, const QString& qName, long value );
491 void setAttributeNS( const QString nsURI, const QString& qName, ulong value );
492 void setAttributeNS( const QString nsURI, const QString& qName, double value );
493 void removeAttributeNS( const QString& nsURI, const QString& localName );
494 QDomAttr attributeNodeNS( const QString& nsURI, const QString& localName );
495 QDomAttr setAttributeNodeNS( const QDomAttr& newAttr );
496 virtual QDomNodeList elementsByTagNameNS( const QString& nsURI, const QString& localName ) const;
497 bool hasAttributeNS( const QString& nsURI, const QString& localName ) const;
498
499 // DOM read only attributes
500 QString tagName() const;
501 void setTagName( const QString& name ); // Qt extension
502
503 // Reimplemented from QDomNode
504 QDomNamedNodeMap attributes() const;
505 QDomNode::NodeType nodeType() const;
506 bool isElement() const;
507
508 QString text() const;
509
510private:
511 QDomElement( QDomElementPrivate* );
512
513 friend class QDomDocument;
514 friend class QDomNode;
515 friend class QDomAttr;
516};
517
518class QM_EXPORT_DOM QDomText : public QDomCharacterData
519{
520public:
521 QDomText();
522 QDomText( const QDomText& x );
523 QDomText& operator= ( const QDomText& );
524 ~QDomText();
525
526 // DOM functions
527 QDomText splitText( int offset );
528
529 // Reimplemented from QDomNode
530 QDomNode::NodeType nodeType() const;
531 bool isText() const;
532
533private:
534 QDomText( QDomTextPrivate* );
535
536 friend class QDomCDATASection;
537 friend class QDomDocument;
538 friend class QDomNode;
539};
540
541class QM_EXPORT_DOM QDomComment : public QDomCharacterData
542{
543public:
544 QDomComment();
545 QDomComment( const QDomComment& x );
546 QDomComment& operator= ( const QDomComment& );
547 ~QDomComment();
548
549 // Reimplemented from QDomNode
550 QDomNode::NodeType nodeType() const;
551 bool isComment() const;
552
553private:
554 QDomComment( QDomCommentPrivate* );
555
556 friend class QDomDocument;
557 friend class QDomNode;
558};
559
560class QM_EXPORT_DOM QDomCDATASection : public QDomText
561{
562public:
563 QDomCDATASection();
564 QDomCDATASection( const QDomCDATASection& x );
565 QDomCDATASection& operator= ( const QDomCDATASection& );
566 ~QDomCDATASection();
567
568 // Reimplemented from QDomNode
569 QDomNode::NodeType nodeType() const;
570 bool isCDATASection() const;
571
572private:
573 QDomCDATASection( QDomCDATASectionPrivate* );
574
575 friend class QDomDocument;
576 friend class QDomNode;
577};
578
579class QM_EXPORT_DOM QDomNotation : public QDomNode
580{
581public:
582 QDomNotation();
583 QDomNotation( const QDomNotation& x );
584 QDomNotation& operator= ( const QDomNotation& );
585 ~QDomNotation();
586
587 // DOM read only attributes
588 QString publicId() const;
589 QString systemId() const;
590
591 // Reimplemented from QDomNode
592 QDomNode::NodeType nodeType() const;
593 bool isNotation() const;
594
595private:
596 QDomNotation( QDomNotationPrivate* );
597
598 friend class QDomDocument;
599 friend class QDomNode;
600};
601
602class QM_EXPORT_DOM QDomEntity : public QDomNode
603{
604public:
605 QDomEntity();
606 QDomEntity( const QDomEntity& x );
607 QDomEntity& operator= ( const QDomEntity& );
608 ~QDomEntity();
609
610 // DOM read only attributes
611 virtual QString publicId() const;
612 virtual QString systemId() const;
613 virtual QString notationName() const;
614
615 // Reimplemented from QDomNode
616 QDomNode::NodeType nodeType() const;
617 bool isEntity() const;
618
619private:
620 QDomEntity( QDomEntityPrivate* );
621
622 friend class QDomNode;
623};
624
625class QM_EXPORT_DOM QDomEntityReference : public QDomNode
626{
627public:
628 QDomEntityReference();
629 QDomEntityReference( const QDomEntityReference& x );
630 QDomEntityReference& operator= ( const QDomEntityReference& );
631 ~QDomEntityReference();
632
633 // Reimplemented from QDomNode
634 QDomNode::NodeType nodeType() const;
635 bool isEntityReference() const;
636
637private:
638 QDomEntityReference( QDomEntityReferencePrivate* );
639
640 friend class QDomDocument;
641 friend class QDomNode;
642};
643
644class QM_EXPORT_DOM QDomProcessingInstruction : public QDomNode
645{
646public:
647 QDomProcessingInstruction();
648 QDomProcessingInstruction( const QDomProcessingInstruction& x );
649 QDomProcessingInstruction& operator= ( const QDomProcessingInstruction& );
650 ~QDomProcessingInstruction();
651
652 // DOM read only attributes
653 virtual QString target() const;
654
655 // DOM attributes
656 virtual QString data() const;
657 virtual void setData( const QString& d );
658
659 // Reimplemented from QDomNode
660 QDomNode::NodeType nodeType() const;
661 bool isProcessingInstruction() const;
662
663private:
664 QDomProcessingInstruction( QDomProcessingInstructionPrivate* );
665
666 friend class QDomDocument;
667 friend class QDomNode;
668};
669
670
671QM_EXPORT_DOM QTextStream& operator<<( QTextStream&, const QDomNode& );
672
673#endif //QT_NO_DOM
674#endif // QDOM_H
Note: See TracBrowser for help on using the repository browser.