1
/****************************************************************************
2
** $Id: qdom.h,v 1.1 2004/02/29 00:05:06 justin Exp $
4
** Definition of QDomDocument and related classes.
8
** Copyright (C) 1992-2002 Trolltech AS. All rights reserved.
10
** This file is part of the xml module of the Qt GUI Toolkit.
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.
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.
21
** Licensees holding valid Qt Enterprise Edition licenses may use this
22
** file in accordance with the Qt Commercial License Agreement provided
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.
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.
33
** Contact info@trolltech.com if any conditions of this licensing are
36
**********************************************************************/
45
#if !defined(QT_MODULE_XML) || defined( QT_LICENSE_PROFESSIONAL ) || defined( QT_INTERNAL_XML )
48
#define QM_EXPORT_DOM Q_EXPORT
58
class QXmlInputSource;
61
class QDomDocumentPrivate;
62
class QDomDocumentTypePrivate;
63
class QDomDocumentFragmentPrivate;
64
class QDomNodePrivate;
65
class QDomNodeListPrivate;
66
class QDomImplementationPrivate;
67
class QDomElementPrivate;
68
class QDomNotationPrivate;
69
class QDomEntityPrivate;
70
class QDomEntityReferencePrivate;
71
class QDomProcessingInstructionPrivate;
72
class QDomAttrPrivate;
73
class QDomCharacterDataPrivate;
74
class QDomTextPrivate;
75
class QDomCommentPrivate;
76
class QDomCDATASectionPrivate;
77
class QDomNamedNodeMapPrivate;
78
class QDomImplementationPrivate;
84
class QDomCDATASection;
85
class QDomProcessingInstruction;
87
class QDomEntityReference;
89
class QDomNamedNodeMap;
91
class QDomDocumentFragment;
92
class QDomDocumentType;
93
class QDomImplementation;
97
class QDomCharacterData;
99
class QM_EXPORT_DOM QDomImplementation
102
QDomImplementation();
103
QDomImplementation( const QDomImplementation& );
104
virtual ~QDomImplementation();
105
QDomImplementation& operator= ( const QDomImplementation& );
106
bool operator== ( const QDomImplementation& ) const;
107
bool operator!= ( const QDomImplementation& ) const;
110
virtual bool hasFeature( const QString& feature, const QString& version );
111
virtual QDomDocumentType createDocumentType( const QString& qName, const QString& publicId, const QString& systemId );
112
virtual QDomDocument createDocument( const QString& nsURI, const QString& qName, const QDomDocumentType& doctype );
118
QDomImplementationPrivate* impl;
119
QDomImplementation( QDomImplementationPrivate* );
121
friend class QDomDocument;
124
class QM_EXPORT_DOM QDomNode
131
CDATASectionNode = 4,
132
EntityReferenceNode = 5,
134
ProcessingInstructionNode = 7,
137
DocumentTypeNode = 10,
138
DocumentFragmentNode = 11,
140
BaseNode = 21,// this is not in the standard
141
CharacterDataNode = 22 // this is not in the standard
145
QDomNode( const QDomNode& );
146
QDomNode& operator= ( const QDomNode& );
147
bool operator== ( const QDomNode& ) const;
148
bool operator!= ( const QDomNode& ) const;
152
virtual QDomNode insertBefore( const QDomNode& newChild, const QDomNode& refChild );
153
virtual QDomNode insertAfter( const QDomNode& newChild, const QDomNode& refChild );
154
virtual QDomNode replaceChild( const QDomNode& newChild, const QDomNode& oldChild );
155
virtual QDomNode removeChild( const QDomNode& oldChild );
156
virtual QDomNode appendChild( const QDomNode& newChild );
157
virtual bool hasChildNodes() const;
158
virtual QDomNode cloneNode( bool deep = TRUE ) const;
159
virtual void normalize();
160
virtual bool isSupported( const QString& feature, const QString& version ) const;
162
// DOM read only attributes
163
virtual QString nodeName() const;
164
virtual QDomNode::NodeType nodeType() const;
165
virtual QDomNode parentNode() const;
166
virtual QDomNodeList childNodes() const;
167
virtual QDomNode firstChild() const;
168
virtual QDomNode lastChild() const;
169
virtual QDomNode previousSibling() const;
170
virtual QDomNode nextSibling() const;
171
virtual QDomNamedNodeMap attributes() const;
172
virtual QDomDocument ownerDocument() const;
173
virtual QString namespaceURI() const;
174
virtual QString localName() const;
175
virtual bool hasAttributes() const;
178
virtual QString nodeValue() const;
179
virtual void setNodeValue( const QString& );
180
virtual QString prefix() const;
181
virtual void setPrefix( const QString& pre );
184
virtual bool isAttr() const;
185
virtual bool isCDATASection() const;
186
virtual bool isDocumentFragment() const;
187
virtual bool isDocument() const;
188
virtual bool isDocumentType() const;
189
virtual bool isElement() const;
190
virtual bool isEntityReference() const;
191
virtual bool isText() const;
192
virtual bool isEntity() const;
193
virtual bool isNotation() const;
194
virtual bool isProcessingInstruction() const;
195
virtual bool isCharacterData() const;
196
virtual bool isComment() const;
199
* Shortcut to avoid dealing with QDomNodeList
202
QDomNode namedItem( const QString& name ) const;
208
QDomCDATASection toCDATASection();
209
QDomDocumentFragment toDocumentFragment();
210
QDomDocument toDocument();
211
QDomDocumentType toDocumentType();
212
QDomElement toElement();
213
QDomEntityReference toEntityReference();
215
QDomEntity toEntity();
216
QDomNotation toNotation();
217
QDomProcessingInstruction toProcessingInstruction();
218
QDomCharacterData toCharacterData();
219
QDomComment toComment();
221
void save( QTextStream&, int ) const;
224
QDomNodePrivate* impl;
225
QDomNode( QDomNodePrivate* );
228
friend class QDomDocument;
229
friend class QDomDocumentType;
230
friend class QDomNodeList;
231
friend class QDomNamedNodeMap;
234
class QM_EXPORT_DOM QDomNodeList
238
QDomNodeList( const QDomNodeList& );
239
QDomNodeList& operator= ( const QDomNodeList& );
240
bool operator== ( const QDomNodeList& ) const;
241
bool operator!= ( const QDomNodeList& ) const;
242
virtual ~QDomNodeList();
245
virtual QDomNode item( int index ) const;
247
// DOM read only attributes
248
virtual uint length() const;
249
uint count() const { return length(); } // Qt API consitancy
252
QDomNodeListPrivate* impl;
253
QDomNodeList( QDomNodeListPrivate* );
255
friend class QDomNode;
256
friend class QDomElement;
257
friend class QDomDocument;
260
class QM_EXPORT_DOM QDomDocumentType : public QDomNode
264
QDomDocumentType( const QDomDocumentType& x );
265
QDomDocumentType& operator= ( const QDomDocumentType& );
268
// DOM read only attributes
269
virtual QString name() const;
270
virtual QDomNamedNodeMap entities() const;
271
virtual QDomNamedNodeMap notations() const;
272
virtual QString publicId() const;
273
virtual QString systemId() const;
274
virtual QString internalSubset() const;
276
// Reimplemented from QDomNode
277
QDomNode::NodeType nodeType() const;
278
bool isDocumentType() const;
281
QDomDocumentType( QDomDocumentTypePrivate* );
283
friend class QDomImplementation;
284
friend class QDomDocument;
285
friend class QDomNode;
288
class QM_EXPORT_DOM QDomDocument : public QDomNode
292
Q_EXPLICIT QDomDocument( const QString& name );
293
Q_EXPLICIT QDomDocument( const QDomDocumentType& doctype );
294
QDomDocument( const QDomDocument& x );
295
QDomDocument& operator= ( const QDomDocument& );
299
QDomElement createElement( const QString& tagName );
300
QDomDocumentFragment createDocumentFragment();
301
QDomText createTextNode( const QString& data );
302
QDomComment createComment( const QString& data );
303
QDomCDATASection createCDATASection( const QString& data );
304
QDomProcessingInstruction createProcessingInstruction( const QString& target, const QString& data );
305
QDomAttr createAttribute( const QString& name );
306
QDomEntityReference createEntityReference( const QString& name );
307
QDomNodeList elementsByTagName( const QString& tagname ) const;
308
QDomNode importNode( const QDomNode& importedNode, bool deep );
309
QDomElement createElementNS( const QString& nsURI, const QString& qName );
310
QDomAttr createAttributeNS( const QString& nsURI, const QString& qName );
311
QDomNodeList elementsByTagNameNS( const QString& nsURI, const QString& localName );
312
QDomElement elementById( const QString& elementId );
314
// DOM read only attributes
315
QDomDocumentType doctype() const;
316
QDomImplementation implementation() const;
317
QDomElement documentElement() const;
320
bool setContent( const QCString& text, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
321
bool setContent( const QByteArray& text, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
322
bool setContent( const QString& text, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
323
bool setContent( QIODevice* dev, bool namespaceProcessing, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
324
bool setContent( const QCString& text, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
325
bool setContent( const QByteArray& text, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
326
bool setContent( const QString& text, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
327
bool setContent( QIODevice* dev, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
329
bool setContent( QXmlInputSource *source, QXmlReader *reader, QString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
331
// Reimplemented from QDomNode
332
QDomNode::NodeType nodeType() const;
333
bool isDocument() const;
336
QString toString() const; // ### Qt 4: merge the two overloads
337
QString toString( int ) const;
338
QCString toCString() const; // ### Qt 4: merge the two overloads
339
QCString toCString( int ) const;
342
QDomDocument( QDomDocumentPrivate* );
344
friend class QDomNode;
347
class QM_EXPORT_DOM QDomNamedNodeMap
351
QDomNamedNodeMap( const QDomNamedNodeMap& );
352
QDomNamedNodeMap& operator= ( const QDomNamedNodeMap& );
353
bool operator== ( const QDomNamedNodeMap& ) const;
354
bool operator!= ( const QDomNamedNodeMap& ) const;
358
QDomNode namedItem( const QString& name ) const;
359
QDomNode setNamedItem( const QDomNode& newNode );
360
QDomNode removeNamedItem( const QString& name );
361
QDomNode item( int index ) const;
362
QDomNode namedItemNS( const QString& nsURI, const QString& localName ) const;
363
QDomNode setNamedItemNS( const QDomNode& newNode );
364
QDomNode removeNamedItemNS( const QString& nsURI, const QString& localName );
366
// DOM read only attributes
368
uint count() const { return length(); } // Qt API consitancy
371
bool contains( const QString& name ) const;
374
QDomNamedNodeMapPrivate* impl;
375
QDomNamedNodeMap( QDomNamedNodeMapPrivate* );
377
friend class QDomNode;
378
friend class QDomDocumentType;
379
friend class QDomElement;
382
class QM_EXPORT_DOM QDomDocumentFragment : public QDomNode
385
QDomDocumentFragment();
386
QDomDocumentFragment( const QDomDocumentFragment& x );
387
QDomDocumentFragment& operator= ( const QDomDocumentFragment& );
388
~QDomDocumentFragment();
390
// Reimplemented from QDomNode
391
QDomNode::NodeType nodeType() const;
392
bool isDocumentFragment() const;
395
QDomDocumentFragment( QDomDocumentFragmentPrivate* );
397
friend class QDomDocument;
398
friend class QDomNode;
401
class QM_EXPORT_DOM QDomCharacterData : public QDomNode
405
QDomCharacterData( const QDomCharacterData& x );
406
QDomCharacterData& operator= ( const QDomCharacterData& );
407
~QDomCharacterData();
410
virtual QString substringData( unsigned long offset, unsigned long count );
411
virtual void appendData( const QString& arg );
412
virtual void insertData( unsigned long offset, const QString& arg );
413
virtual void deleteData( unsigned long offset, unsigned long count );
414
virtual void replaceData( unsigned long offset, unsigned long count, const QString& arg );
416
// DOM read only attributes
417
virtual uint length() const;
420
virtual QString data() const;
421
virtual void setData( const QString& );
423
// Reimplemented from QDomNode
424
QDomNode::NodeType nodeType() const;
425
bool isCharacterData() const;
428
QDomCharacterData( QDomCharacterDataPrivate* );
430
friend class QDomDocument;
431
friend class QDomText;
432
friend class QDomComment;
433
friend class QDomNode;
436
class QM_EXPORT_DOM QDomAttr : public QDomNode
440
QDomAttr( const QDomAttr& x );
441
QDomAttr& operator= ( const QDomAttr& );
444
// DOM read only attributes
445
virtual QString name() const;
446
virtual bool specified() const;
447
virtual QDomElement ownerElement() const;
450
virtual QString value() const;
451
virtual void setValue( const QString& );
453
// Reimplemented from QDomNode
454
QDomNode::NodeType nodeType() const;
458
QDomAttr( QDomAttrPrivate* );
460
friend class QDomDocument;
461
friend class QDomElement;
462
friend class QDomNode;
465
class QM_EXPORT_DOM QDomElement : public QDomNode
469
QDomElement( const QDomElement& x );
470
QDomElement& operator= ( const QDomElement& );
474
QString attribute( const QString& name, const QString& defValue = QString::null ) const;
475
void setAttribute( const QString& name, const QString& value );
476
void setAttribute( const QString& name, int value );
477
void setAttribute( const QString& name, uint value );
478
void setAttribute( const QString& name, long value );
479
void setAttribute( const QString& name, ulong value );
480
void setAttribute( const QString& name, double value );
481
void removeAttribute( const QString& name );
482
QDomAttr attributeNode( const QString& name);
483
QDomAttr setAttributeNode( const QDomAttr& newAttr );
484
QDomAttr removeAttributeNode( const QDomAttr& oldAttr );
485
virtual QDomNodeList elementsByTagName( const QString& tagname ) const;
486
bool hasAttribute( const QString& name ) const;
488
QString attributeNS( const QString nsURI, const QString& localName, const QString& defValue ) const;
489
void setAttributeNS( const QString nsURI, const QString& qName, const QString& value );
490
void setAttributeNS( const QString nsURI, const QString& qName, int value );
491
void setAttributeNS( const QString nsURI, const QString& qName, uint value );
492
void setAttributeNS( const QString nsURI, const QString& qName, long value );
493
void setAttributeNS( const QString nsURI, const QString& qName, ulong value );
494
void setAttributeNS( const QString nsURI, const QString& qName, double value );
495
void removeAttributeNS( const QString& nsURI, const QString& localName );
496
QDomAttr attributeNodeNS( const QString& nsURI, const QString& localName );
497
QDomAttr setAttributeNodeNS( const QDomAttr& newAttr );
498
virtual QDomNodeList elementsByTagNameNS( const QString& nsURI, const QString& localName ) const;
499
bool hasAttributeNS( const QString& nsURI, const QString& localName ) const;
501
// DOM read only attributes
502
QString tagName() const;
503
void setTagName( const QString& name ); // Qt extension
505
// Reimplemented from QDomNode
506
QDomNamedNodeMap attributes() const;
507
QDomNode::NodeType nodeType() const;
508
bool isElement() const;
510
QString text() const;
513
QDomElement( QDomElementPrivate* );
515
friend class QDomDocument;
516
friend class QDomNode;
517
friend class QDomAttr;
520
class QM_EXPORT_DOM QDomText : public QDomCharacterData
524
QDomText( const QDomText& x );
525
QDomText& operator= ( const QDomText& );
529
QDomText splitText( int offset );
531
// Reimplemented from QDomNode
532
QDomNode::NodeType nodeType() const;
536
QDomText( QDomTextPrivate* );
538
friend class QDomCDATASection;
539
friend class QDomDocument;
540
friend class QDomNode;
543
class QM_EXPORT_DOM QDomComment : public QDomCharacterData
547
QDomComment( const QDomComment& x );
548
QDomComment& operator= ( const QDomComment& );
551
// Reimplemented from QDomNode
552
QDomNode::NodeType nodeType() const;
553
bool isComment() const;
556
QDomComment( QDomCommentPrivate* );
558
friend class QDomDocument;
559
friend class QDomNode;
562
class QM_EXPORT_DOM QDomCDATASection : public QDomText
566
QDomCDATASection( const QDomCDATASection& x );
567
QDomCDATASection& operator= ( const QDomCDATASection& );
570
// Reimplemented from QDomNode
571
QDomNode::NodeType nodeType() const;
572
bool isCDATASection() const;
575
QDomCDATASection( QDomCDATASectionPrivate* );
577
friend class QDomDocument;
578
friend class QDomNode;
581
class QM_EXPORT_DOM QDomNotation : public QDomNode
585
QDomNotation( const QDomNotation& x );
586
QDomNotation& operator= ( const QDomNotation& );
589
// DOM read only attributes
590
QString publicId() const;
591
QString systemId() const;
593
// Reimplemented from QDomNode
594
QDomNode::NodeType nodeType() const;
595
bool isNotation() const;
598
QDomNotation( QDomNotationPrivate* );
600
friend class QDomDocument;
601
friend class QDomNode;
604
class QM_EXPORT_DOM QDomEntity : public QDomNode
608
QDomEntity( const QDomEntity& x );
609
QDomEntity& operator= ( const QDomEntity& );
612
// DOM read only attributes
613
virtual QString publicId() const;
614
virtual QString systemId() const;
615
virtual QString notationName() const;
617
// Reimplemented from QDomNode
618
QDomNode::NodeType nodeType() const;
619
bool isEntity() const;
622
QDomEntity( QDomEntityPrivate* );
624
friend class QDomNode;
627
class QM_EXPORT_DOM QDomEntityReference : public QDomNode
630
QDomEntityReference();
631
QDomEntityReference( const QDomEntityReference& x );
632
QDomEntityReference& operator= ( const QDomEntityReference& );
633
~QDomEntityReference();
635
// Reimplemented from QDomNode
636
QDomNode::NodeType nodeType() const;
637
bool isEntityReference() const;
640
QDomEntityReference( QDomEntityReferencePrivate* );
642
friend class QDomDocument;
643
friend class QDomNode;
646
class QM_EXPORT_DOM QDomProcessingInstruction : public QDomNode
649
QDomProcessingInstruction();
650
QDomProcessingInstruction( const QDomProcessingInstruction& x );
651
QDomProcessingInstruction& operator= ( const QDomProcessingInstruction& );
652
~QDomProcessingInstruction();
654
// DOM read only attributes
655
virtual QString target() const;
658
virtual QString data() const;
659
virtual void setData( const QString& d );
661
// Reimplemented from QDomNode
662
QDomNode::NodeType nodeType() const;
663
bool isProcessingInstruction() const;
666
QDomProcessingInstruction( QDomProcessingInstructionPrivate* );
668
friend class QDomDocument;
669
friend class QDomNode;
673
QM_EXPORT_DOM QTextStream& operator<<( QTextStream&, const QDomNode& );
675
} // namespace PsiXml
677
using namespace PsiXml;