You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tqt3/src/xml/ntqdom.h

678 lines
22 KiB

/****************************************************************************
**
** Definition of TQDomDocument and related classes.
**
** Created : 000518
**
** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved.
**
** This file is part of the xml module of the TQt GUI Toolkit.
**
** This file may be used under the terms of the GNU General
** Public License versions 2.0 or 3.0 as published by the Free
** Software Foundation and appearing in the files LICENSE.GPL2
** and LICENSE.GPL3 included in the packaging of this file.
** Alternatively you may (at your option) use any later version
** of the GNU General Public License if such license has been
** publicly approved by Trolltech ASA (or its successors, if any)
** and the KDE Free TQt Foundation.
**
** Please review the following information to ensure GNU General
** Public Licensing requirements will be met:
** http://trolltech.com/products/qt/licenses/licensing/opensource/.
** If you are unsure which license is appropriate for your use, please
** review the following information:
** http://trolltech.com/products/qt/licenses/licensing/licensingoverview
** or contact the sales department at sales@trolltech.com.
**
** This file may be used under the terms of the Q Public License as
** defined by Trolltech ASA and appearing in the file LICENSE.TQPL
** included in the packaging of this file. Licensees holding valid TQt
** Commercial licenses may use this file in accordance with the TQt
** Commercial License Agreement provided with the Software.
**
** This file is provided "AS IS" with NO WARRANTY OF ANY KIND,
** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted
** herein.
**
**********************************************************************/
#ifndef TQDOM_H
#define TQDOM_H
#ifndef QT_H
#include "ntqstring.h"
#endif // QT_H
#if !defined(TQT_MODULE_XML) || defined( QT_LICENSE_PROFESSIONAL ) || defined( QT_INTERNAL_XML )
#define TQM_EXPORT_DOM
#else
#define TQM_EXPORT_DOM TQ_EXPORT
#endif
#ifndef TQT_NO_DOM
class TQIODevice;
class TQTextStream;
class TQXmlInputSource;
class TQXmlReader;
class TQDomDocumentPrivate;
class TQDomDocumentTypePrivate;
class TQDomDocumentFragmentPrivate;
class TQDomNodePrivate;
class TQDomNodeListPrivate;
class TQDomImplementationPrivate;
class TQDomElementPrivate;
class TQDomNotationPrivate;
class TQDomEntityPrivate;
class TQDomEntityReferencePrivate;
class TQDomProcessingInstructionPrivate;
class TQDomAttrPrivate;
class TQDomCharacterDataPrivate;
class TQDomTextPrivate;
class TQDomCommentPrivate;
class TQDomCDATASectionPrivate;
class TQDomNamedNodeMapPrivate;
class TQDomImplementationPrivate;
class TQDomNodeList;
class TQDomElement;
class TQDomText;
class TQDomComment;
class TQDomCDATASection;
class TQDomProcessingInstruction;
class TQDomAttr;
class TQDomEntityReference;
class TQDomDocument;
class TQDomNamedNodeMap;
class TQDomDocument;
class TQDomDocumentFragment;
class TQDomDocumentType;
class TQDomImplementation;
class TQDomNode;
class TQDomEntity;
class TQDomNotation;
class TQDomCharacterData;
class TQM_EXPORT_DOM TQDomImplementation
{
public:
TQDomImplementation();
TQDomImplementation( const TQDomImplementation& );
virtual ~TQDomImplementation();
TQDomImplementation& operator= ( const TQDomImplementation& );
bool operator== ( const TQDomImplementation& ) const;
bool operator!= ( const TQDomImplementation& ) const;
// functions
virtual bool hasFeature( const TQString& feature, const TQString& version );
virtual TQDomDocumentType createDocumentType( const TQString& qName, const TQString& publicId, const TQString& systemId );
virtual TQDomDocument createDocument( const TQString& nsURI, const TQString& qName, const TQDomDocumentType& doctype );
// TQt extension
bool isNull();
private:
TQDomImplementationPrivate* impl;
TQDomImplementation( TQDomImplementationPrivate* );
friend class TQDomDocument;
};
class TQM_EXPORT_DOM TQDomNode
{
public:
enum NodeType {
ElementNode = 1,
AttributeNode = 2,
TextNode = 3,
CDATASectionNode = 4,
EntityReferenceNode = 5,
EntityNode = 6,
ProcessingInstructionNode = 7,
CommentNode = 8,
DocumentNode = 9,
DocumentTypeNode = 10,
DocumentFragmentNode = 11,
NotationNode = 12,
BaseNode = 21,// this is not in the standard
CharacterDataNode = 22 // this is not in the standard
};
TQDomNode();
TQDomNode( const TQDomNode& );
TQDomNode& operator= ( const TQDomNode& );
bool operator== ( const TQDomNode& ) const;
bool operator!= ( const TQDomNode& ) const;
virtual ~TQDomNode();
// DOM functions
virtual TQDomNode insertBefore( const TQDomNode& newChild, const TQDomNode& refChild );
virtual TQDomNode insertAfter( const TQDomNode& newChild, const TQDomNode& refChild );
virtual TQDomNode replaceChild( const TQDomNode& newChild, const TQDomNode& oldChild );
virtual TQDomNode removeChild( const TQDomNode& oldChild );
virtual TQDomNode appendChild( const TQDomNode& newChild );
virtual bool hasChildNodes() const;
virtual TQDomNode cloneNode( bool deep = TRUE ) const;
virtual void normalize();
virtual bool isSupported( const TQString& feature, const TQString& version ) const;
// DOM read only attributes
virtual TQString nodeName() const;
virtual TQDomNode::NodeType nodeType() const;
virtual TQDomNode parentNode() const;
virtual TQDomNodeList childNodes() const;
virtual TQDomNode firstChild() const;
virtual TQDomNode lastChild() const;
virtual TQDomNode previousSibling() const;
virtual TQDomNode nextSibling() const;
virtual TQDomNamedNodeMap attributes() const;
virtual TQDomDocument ownerDocument() const;
virtual TQString namespaceURI() const;
virtual TQString localName() const;
virtual bool hasAttributes() const;
// DOM attributes
virtual TQString nodeValue() const;
virtual void setNodeValue( const TQString& );
virtual TQString prefix() const;
virtual void setPrefix( const TQString& pre );
// TQt extensions
virtual bool isAttr() const;
virtual bool isCDATASection() const;
virtual bool isDocumentFragment() const;
virtual bool isDocument() const;
virtual bool isDocumentType() const;
virtual bool isElement() const;
virtual bool isEntityReference() const;
virtual bool isText() const;
virtual bool isEntity() const;
virtual bool isNotation() const;
virtual bool isProcessingInstruction() const;
virtual bool isCharacterData() const;
virtual bool isComment() const;
/**
* Shortcut to avoid dealing with TQDomNodeList
* all the time.
*/
TQDomNode namedItem( const TQString& name ) const;
bool isNull() const;
void clear();
TQDomAttr toAttr();
TQDomCDATASection toCDATASection();
TQDomDocumentFragment toDocumentFragment();
TQDomDocument toDocument();
TQDomDocumentType toDocumentType();
TQDomElement toElement();
TQDomEntityReference toEntityReference();
TQDomText toText();
TQDomEntity toEntity();
TQDomNotation toNotation();
TQDomProcessingInstruction toProcessingInstruction();
TQDomCharacterData toCharacterData();
TQDomComment toComment();
void save( TQTextStream&, int ) const;
protected:
TQDomNodePrivate* impl;
TQDomNode( TQDomNodePrivate* );
private:
friend class TQDomDocument;
friend class TQDomDocumentType;
friend class TQDomNodeList;
friend class TQDomNamedNodeMap;
};
class TQM_EXPORT_DOM TQDomNodeList
{
public:
TQDomNodeList();
TQDomNodeList( const TQDomNodeList& );
TQDomNodeList& operator= ( const TQDomNodeList& );
bool operator== ( const TQDomNodeList& ) const;
bool operator!= ( const TQDomNodeList& ) const;
virtual ~TQDomNodeList();
// DOM functions
virtual TQDomNode item( int index ) const;
// DOM read only attributes
virtual uint length() const;
uint count() const { return length(); } // TQt API consitancy
private:
TQDomNodeListPrivate* impl;
TQDomNodeList( TQDomNodeListPrivate* );
friend class TQDomNode;
friend class TQDomElement;
friend class TQDomDocument;
};
class TQM_EXPORT_DOM TQDomDocumentType : public TQDomNode
{
public:
TQDomDocumentType();
TQDomDocumentType( const TQDomDocumentType& x );
TQDomDocumentType& operator= ( const TQDomDocumentType& );
~TQDomDocumentType();
// DOM read only attributes
virtual TQString name() const;
virtual TQDomNamedNodeMap entities() const;
virtual TQDomNamedNodeMap notations() const;
virtual TQString publicId() const;
virtual TQString systemId() const;
virtual TQString internalSubset() const;
// Reimplemented from TQDomNode
TQDomNode::NodeType nodeType() const;
bool isDocumentType() const;
private:
TQDomDocumentType( TQDomDocumentTypePrivate* );
friend class TQDomImplementation;
friend class TQDomDocument;
friend class TQDomNode;
};
class TQM_EXPORT_DOM TQDomDocument : public TQDomNode
{
public:
TQDomDocument();
Q_EXPLICIT TQDomDocument( const TQString& name );
Q_EXPLICIT TQDomDocument( const TQDomDocumentType& doctype );
TQDomDocument( const TQDomDocument& x );
TQDomDocument& operator= ( const TQDomDocument& );
~TQDomDocument();
// DOM functions
TQDomElement createElement( const TQString& tagName );
TQDomDocumentFragment createDocumentFragment();
TQDomText createTextNode( const TQString& data );
TQDomComment createComment( const TQString& data );
TQDomCDATASection createCDATASection( const TQString& data );
TQDomProcessingInstruction createProcessingInstruction( const TQString& target, const TQString& data );
TQDomAttr createAttribute( const TQString& name );
TQDomEntityReference createEntityReference( const TQString& name );
TQDomNodeList elementsByTagName( const TQString& tagname ) const;
TQDomNode importNode( const TQDomNode& importedNode, bool deep );
TQDomElement createElementNS( const TQString& nsURI, const TQString& qName );
TQDomAttr createAttributeNS( const TQString& nsURI, const TQString& qName );
TQDomNodeList elementsByTagNameNS( const TQString& nsURI, const TQString& localName );
TQDomElement elementById( const TQString& elementId );
// DOM read only attributes
TQDomDocumentType doctype() const;
TQDomImplementation implementation() const;
TQDomElement documentElement() const;
// TQt extensions
bool setContent( const TQCString& text, bool namespaceProcessing, TQString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
bool setContent( const TQByteArray& text, bool namespaceProcessing, TQString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
bool setContent( const TQString& text, bool namespaceProcessing, TQString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
bool setContent( TQIODevice* dev, bool namespaceProcessing, TQString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
bool setContent( const TQCString& text, TQString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
bool setContent( const TQByteArray& text, TQString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
bool setContent( const TQString& text, TQString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
bool setContent( TQIODevice* dev, TQString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
bool setContent( TQXmlInputSource *source, TQXmlReader *reader, TQString *errorMsg=0, int *errorLine=0, int *errorColumn=0 );
// Reimplemented from TQDomNode
TQDomNode::NodeType nodeType() const;
bool isDocument() const;
// TQt extensions
TQString toString() const; // ### TQt 4: merge the two overloads
TQString toString( int ) const;
TQCString toCString() const; // ### TQt 4: merge the two overloads
TQCString toCString( int ) const;
private:
TQDomDocument( TQDomDocumentPrivate* );
friend class TQDomNode;
};
class TQM_EXPORT_DOM TQDomNamedNodeMap
{
public:
TQDomNamedNodeMap();
TQDomNamedNodeMap( const TQDomNamedNodeMap& );
TQDomNamedNodeMap& operator= ( const TQDomNamedNodeMap& );
bool operator== ( const TQDomNamedNodeMap& ) const;
bool operator!= ( const TQDomNamedNodeMap& ) const;
~TQDomNamedNodeMap();
// DOM functions
TQDomNode namedItem( const TQString& name ) const;
TQDomNode setNamedItem( const TQDomNode& newNode );
TQDomNode removeNamedItem( const TQString& name );
TQDomNode item( int index ) const;
TQDomNode namedItemNS( const TQString& nsURI, const TQString& localName ) const;
TQDomNode setNamedItemNS( const TQDomNode& newNode );
TQDomNode removeNamedItemNS( const TQString& nsURI, const TQString& localName );
// DOM read only attributes
uint length() const;
uint count() const { return length(); } // TQt API consitancy
// TQt extension
bool contains( const TQString& name ) const;
private:
TQDomNamedNodeMapPrivate* impl;
TQDomNamedNodeMap( TQDomNamedNodeMapPrivate* );
friend class TQDomNode;
friend class TQDomDocumentType;
friend class TQDomElement;
};
class TQM_EXPORT_DOM TQDomDocumentFragment : public TQDomNode
{
public:
TQDomDocumentFragment();
TQDomDocumentFragment( const TQDomDocumentFragment& x );
TQDomDocumentFragment& operator= ( const TQDomDocumentFragment& );
~TQDomDocumentFragment();
// Reimplemented from TQDomNode
TQDomNode::NodeType nodeType() const;
bool isDocumentFragment() const;
private:
TQDomDocumentFragment( TQDomDocumentFragmentPrivate* );
friend class TQDomDocument;
friend class TQDomNode;
};
class TQM_EXPORT_DOM TQDomCharacterData : public TQDomNode
{
public:
TQDomCharacterData();
TQDomCharacterData( const TQDomCharacterData& x );
TQDomCharacterData& operator= ( const TQDomCharacterData& );
~TQDomCharacterData();
// DOM functions
virtual TQString substringData( unsigned long offset, unsigned long count );
virtual void appendData( const TQString& arg );
virtual void insertData( unsigned long offset, const TQString& arg );
virtual void deleteData( unsigned long offset, unsigned long count );
virtual void replaceData( unsigned long offset, unsigned long count, const TQString& arg );
// DOM read only attributes
virtual uint length() const;
// DOM attributes
virtual TQString data() const;
virtual void setData( const TQString& );
// Reimplemented from TQDomNode
TQDomNode::NodeType nodeType() const;
bool isCharacterData() const;
private:
TQDomCharacterData( TQDomCharacterDataPrivate* );
friend class TQDomDocument;
friend class TQDomText;
friend class TQDomComment;
friend class TQDomNode;
};
class TQM_EXPORT_DOM TQDomAttr : public TQDomNode
{
public:
TQDomAttr();
TQDomAttr( const TQDomAttr& x );
TQDomAttr& operator= ( const TQDomAttr& );
~TQDomAttr();
// DOM read only attributes
virtual TQString name() const;
virtual bool specified() const;
virtual TQDomElement ownerElement() const;
// DOM attributes
virtual TQString value() const;
virtual void setValue( const TQString& );
// Reimplemented from TQDomNode
TQDomNode::NodeType nodeType() const;
bool isAttr() const;
private:
TQDomAttr( TQDomAttrPrivate* );
friend class TQDomDocument;
friend class TQDomElement;
friend class TQDomNode;
};
class TQM_EXPORT_DOM TQDomElement : public TQDomNode
{
public:
TQDomElement();
TQDomElement( const TQDomElement& x );
TQDomElement& operator= ( const TQDomElement& );
~TQDomElement();
// DOM functions
TQString attribute( const TQString& name, const TQString& defValue = TQString::null ) const;
void setAttribute( const TQString& name, const TQString& value );
void setAttribute( const TQString& name, int value );
void setAttribute( const TQString& name, uint value );
void setAttribute( const TQString& name, long value );
void setAttribute( const TQString& name, ulong value );
void setAttribute( const TQString& name, double value );
void removeAttribute( const TQString& name );
TQDomAttr attributeNode( const TQString& name);
TQDomAttr setAttributeNode( const TQDomAttr& newAttr );
TQDomAttr removeAttributeNode( const TQDomAttr& oldAttr );
virtual TQDomNodeList elementsByTagName( const TQString& tagname ) const;
bool hasAttribute( const TQString& name ) const;
TQString attributeNS( const TQString nsURI, const TQString& localName, const TQString& defValue ) const;
void setAttributeNS( const TQString nsURI, const TQString& qName, const TQString& value );
void setAttributeNS( const TQString nsURI, const TQString& qName, int value );
void setAttributeNS( const TQString nsURI, const TQString& qName, uint value );
void setAttributeNS( const TQString nsURI, const TQString& qName, long value );
void setAttributeNS( const TQString nsURI, const TQString& qName, ulong value );
void setAttributeNS( const TQString nsURI, const TQString& qName, double value );
void removeAttributeNS( const TQString& nsURI, const TQString& localName );
TQDomAttr attributeNodeNS( const TQString& nsURI, const TQString& localName );
TQDomAttr setAttributeNodeNS( const TQDomAttr& newAttr );
virtual TQDomNodeList elementsByTagNameNS( const TQString& nsURI, const TQString& localName ) const;
bool hasAttributeNS( const TQString& nsURI, const TQString& localName ) const;
// DOM read only attributes
TQString tagName() const;
void setTagName( const TQString& name ); // TQt extension
// Reimplemented from TQDomNode
TQDomNamedNodeMap attributes() const;
TQDomNode::NodeType nodeType() const;
bool isElement() const;
TQString text() const;
private:
TQDomElement( TQDomElementPrivate* );
friend class TQDomDocument;
friend class TQDomNode;
friend class TQDomAttr;
};
class TQM_EXPORT_DOM TQDomText : public TQDomCharacterData
{
public:
TQDomText();
TQDomText( const TQDomText& x );
TQDomText& operator= ( const TQDomText& );
~TQDomText();
// DOM functions
TQDomText splitText( int offset );
// Reimplemented from TQDomNode
TQDomNode::NodeType nodeType() const;
bool isText() const;
private:
TQDomText( TQDomTextPrivate* );
friend class TQDomCDATASection;
friend class TQDomDocument;
friend class TQDomNode;
};
class TQM_EXPORT_DOM TQDomComment : public TQDomCharacterData
{
public:
TQDomComment();
TQDomComment( const TQDomComment& x );
TQDomComment& operator= ( const TQDomComment& );
~TQDomComment();
// Reimplemented from TQDomNode
TQDomNode::NodeType nodeType() const;
bool isComment() const;
private:
TQDomComment( TQDomCommentPrivate* );
friend class TQDomDocument;
friend class TQDomNode;
};
class TQM_EXPORT_DOM TQDomCDATASection : public TQDomText
{
public:
TQDomCDATASection();
TQDomCDATASection( const TQDomCDATASection& x );
TQDomCDATASection& operator= ( const TQDomCDATASection& );
~TQDomCDATASection();
// Reimplemented from TQDomNode
TQDomNode::NodeType nodeType() const;
bool isCDATASection() const;
private:
TQDomCDATASection( TQDomCDATASectionPrivate* );
friend class TQDomDocument;
friend class TQDomNode;
};
class TQM_EXPORT_DOM TQDomNotation : public TQDomNode
{
public:
TQDomNotation();
TQDomNotation( const TQDomNotation& x );
TQDomNotation& operator= ( const TQDomNotation& );
~TQDomNotation();
// DOM read only attributes
TQString publicId() const;
TQString systemId() const;
// Reimplemented from TQDomNode
TQDomNode::NodeType nodeType() const;
bool isNotation() const;
private:
TQDomNotation( TQDomNotationPrivate* );
friend class TQDomDocument;
friend class TQDomNode;
};
class TQM_EXPORT_DOM TQDomEntity : public TQDomNode
{
public:
TQDomEntity();
TQDomEntity( const TQDomEntity& x );
TQDomEntity& operator= ( const TQDomEntity& );
~TQDomEntity();
// DOM read only attributes
virtual TQString publicId() const;
virtual TQString systemId() const;
virtual TQString notationName() const;
// Reimplemented from TQDomNode
TQDomNode::NodeType nodeType() const;
bool isEntity() const;
private:
TQDomEntity( TQDomEntityPrivate* );
friend class TQDomNode;
};
class TQM_EXPORT_DOM TQDomEntityReference : public TQDomNode
{
public:
TQDomEntityReference();
TQDomEntityReference( const TQDomEntityReference& x );
TQDomEntityReference& operator= ( const TQDomEntityReference& );
~TQDomEntityReference();
// Reimplemented from TQDomNode
TQDomNode::NodeType nodeType() const;
bool isEntityReference() const;
private:
TQDomEntityReference( TQDomEntityReferencePrivate* );
friend class TQDomDocument;
friend class TQDomNode;
};
class TQM_EXPORT_DOM TQDomProcessingInstruction : public TQDomNode
{
public:
TQDomProcessingInstruction();
TQDomProcessingInstruction( const TQDomProcessingInstruction& x );
TQDomProcessingInstruction& operator= ( const TQDomProcessingInstruction& );
~TQDomProcessingInstruction();
// DOM read only attributes
virtual TQString target() const;
// DOM attributes
virtual TQString data() const;
virtual void setData( const TQString& d );
// Reimplemented from TQDomNode
TQDomNode::NodeType nodeType() const;
bool isProcessingInstruction() const;
private:
TQDomProcessingInstruction( TQDomProcessingInstructionPrivate* );
friend class TQDomDocument;
friend class TQDomNode;
};
TQM_EXPORT_DOM TQTextStream& operator<<( TQTextStream&, const TQDomNode& );
#endif //TQT_NO_DOM
#endif // TQDOM_H