diff options
author | Casper van Donderen <casper.vandonderen@nokia.com> | 2012-04-21 09:26:43 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-04-23 09:30:49 +0200 |
commit | 16e3711f10463cb2ccaa7dc3c2b01b230de2c869 (patch) | |
tree | 383982c96c9809a1ab7fde764d682db28250eb09 /doc/src | |
parent | 3c03878293bf2a155762a61d3a29c958eddbe0b1 (diff) | |
download | qtxmlpatterns-16e3711f10463cb2ccaa7dc3c2b01b230de2c869.tar.gz |
Doc: Remove documentation moved to QtXml.
The XML Processing document mostly deals with items in Qt XML. Since we
cannot cross-reference from Qt XML to Qt XML Patterns when the
documentation is modularized it is necessary to move the document.
Change-Id: Idc5c2c7a176493b898bee1bdbf92283186cdfd77
Reviewed-by: Jerome Pasion <jerome.pasion@nokia.com>
Diffstat (limited to 'doc/src')
-rw-r--r-- | doc/src/snippets/code/doc_src_qtxml.qdoc | 102 | ||||
-rw-r--r-- | doc/src/xml-processing/xml-processing.qdoc | 619 |
2 files changed, 0 insertions, 721 deletions
diff --git a/doc/src/snippets/code/doc_src_qtxml.qdoc b/doc/src/snippets/code/doc_src_qtxml.qdoc deleted file mode 100644 index 695bb0c..0000000 --- a/doc/src/snippets/code/doc_src_qtxml.qdoc +++ /dev/null @@ -1,102 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [3] -<quote>A quotation.</quote> -//! [3] - - -//! [4] -<document xmlns:book = 'http://example.com/fnord/book/' - xmlns = 'http://example.com/fnord/' > -//! [4] - - -//! [5] -<author xmlns:fnord = 'http://example.com/fnord/' - title="Ms" - fnord:title="Goddess" - name="Eris Kallisti"/> -//! [5] - - -//! [6] -<document> -<book> - <title>Practical XML</title> - <author title="Ms" name="Eris Kallisti"/> - <chapter> - <title>A Namespace Called fnord</title> - </chapter> -</book> -</document> -//! [6] - - -//! [7] -<book:title>Practical XML</book:title> -//! [7] - - -//! [8] -xmlns="http://example.com/fnord/" -//! [8] - - -//! [9] -xmlns:book="http://example.com/fnord/book/" -//! [9] - - -//! [10] -<document xmlns:book = 'http://example.com/fnord/book/' - xmlns = 'http://example.com/fnord/' > -<book> - <book:title>Practical XML</book:title> - <book:author xmlns:fnord = 'http://example.com/fnord/' - title="Ms" - fnord:title="Goddess" - name="Eris Kallisti"/> - <chapter> - <title>A Namespace Called fnord</title> - </chapter> -</book> -</document> -//! [10] diff --git a/doc/src/xml-processing/xml-processing.qdoc b/doc/src/xml-processing/xml-processing.qdoc deleted file mode 100644 index 89104d6..0000000 --- a/doc/src/xml-processing/xml-processing.qdoc +++ /dev/null @@ -1,619 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** GNU Free Documentation License -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms -** and conditions contained in a signed written agreement between you -** and Nokia. -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \group xml-tools - \title XML Classes - - \brief Classes that support XML, via, for example DOM and SAX. - - These classes are relevant to XML users. - - \generatelist{related} -*/ - -/*! - \page xml-processing.html - \title XML Processing - \ingroup technology-apis - - \brief An Overview of the XML processing facilities in Qt. - - In addition to core XML support, classes for higher level querying - and manipulation of XML data are provided by the Qt XML Patterns - module. In the QtSvg module, the QSvgRenderer and QSvgGenerator - classes can read and write a subset of SVG, an XML-based file - format. Qt also provides helper functions that may be useful to - those working with XML and XHTML: see Qt::escape() and - Qt::convertFromPlainText(). - - \section1 Topics: - - \list - \li \l {Classes for XML Processing} - \li \l {An Introduction to Namespaces} - \li \l {XML Streaming} - \li \l {The SAX Interface} - \li \l {Working with the DOM Tree} - \li \l {XQuery}{XQuery/XPath and XML Schema} - \list - \li \l{A Short Path to XQuery} - \endlist - \endlist - - \section1 Classes for XML Processing - - These classes are relevant to XML users. - - \annotatedlist xml-tools -*/ - -/*! - \page xml-namespaces.html - \title An Introduction to Namespaces - \target namespaces - - \contentspage XML Processing - \nextpage XML Streaming - - Parts of the Qt XML module documentation assume that you are familiar - with XML namespaces. Here we present a brief introduction; skip to - \link #namespacesConventions Qt XML documentation conventions \endlink - if you already know this material. - - Namespaces are a concept introduced into XML to allow a more modular - design. With their help data processing software can easily resolve - naming conflicts in XML documents. - - Consider the following example: - - \snippet code/doc_src_qtxml.qdoc 6 - - Here we find three different uses of the name \e title. If you wish to - process this document you will encounter problems because each of the - \e titles should be displayed in a different manner -- even though - they have the same name. - - The solution would be to have some means of identifying the first - occurrence of \e title as the title of a book, i.e. to use the \e - title element of a book namespace to distinguish it from, for example, - the chapter title, e.g.: - \snippet code/doc_src_qtxml.qdoc 7 - - \e book in this case is a \e prefix denoting the namespace. - - Before we can apply a namespace to element or attribute names we must - declare it. - - Namespaces are URIs like \e http://www.example.com/fnord/book/. This - does not mean that data must be available at this address; the URI is - simply used to provide a unique name. - - We declare namespaces in the same way as attributes; strictly speaking - they \e are attributes. To make for example \e - http://www.example.com/fnord/ the document's default XML namespace \e - xmlns we write - - \snippet code/doc_src_qtxml.qdoc 8 - - To distinguish the \e http://www.example.com/fnord/book/ namespace from - the default, we must supply it with a prefix: - - \snippet code/doc_src_qtxml.qdoc 9 - - A namespace that is declared like this can be applied to element and - attribute names by prepending the appropriate prefix and a ":" - delimiter. We have already seen this with the \e book:title element. - - Element names without a prefix belong to the default namespace. This - rule does not apply to attributes: an attribute without a prefix does - not belong to any of the declared XML namespaces at all. Attributes - always belong to the "traditional" namespace of the element in which - they appear. A "traditional" namespace is not an XML namespace, it - simply means that all attribute names belonging to one element must be - different. Later we will see how to assign an XML namespace to an - attribute. - - Due to the fact that attributes without prefixes are not in any XML - namespace there is no collision between the attribute \e title (that - belongs to the \e author element) and for example the \e title element - within a \e chapter. - - Let's clarify this with an example: - \snippet code/doc_src_qtxml.qdoc 10 - - Within the \e document element we have two namespaces declared. The - default namespace \e http://www.example.com/fnord/ applies to the \e - book element, the \e chapter element, the appropriate \e title element - and of course to \e document itself. - - The \e book:author and \e book:title elements belong to the namespace - with the URI \e http://www.example.com/fnord/book/. - - The two \e book:author attributes \e title and \e name have no XML - namespace assigned. They are only members of the "traditional" - namespace of the element \e book:author, meaning that for example two - \e title attributes in \e book:author are forbidden. - - In the above example we circumvent the last rule by adding a \e title - attribute from the \e http://www.example.com/fnord/ namespace to \e - book:author: the \e fnord:title comes from the namespace with the - prefix \e fnord that is declared in the \e book:author element. - - Clearly the \e fnord namespace has the same namespace URI as the - default namespace. So why didn't we simply use the default namespace - we'd already declared? The answer is quite complex: - \list - \li attributes without a prefix don't belong to any XML namespace at - all, not even to the default namespace; - \li additionally omitting the prefix would lead to a \e title-title clash; - \li writing it as \e xmlns:title would declare a new namespace with the - prefix \e title instead of applying the default \e xmlns namespace. - \endlist - - With the Qt XML classes elements and attributes can be accessed in two - ways: either by refering to their qualified names consisting of the - namespace prefix and the "real" name (or \e local name) or by the - combination of local name and namespace URI. - - More information on XML namespaces can be found at - \l http://www.w3.org/TR/REC-xml-names/. - - \target namespacesConventions - \section1 Conventions Used in the Qt XML Documentation - - The following terms are used to distinguish the parts of names within - the context of namespaces: - \list - \li The \e {qualified name} - is the name as it appears in the document. (In the above example \e - book:title is a qualified name.) - \li A \e {namespace prefix} in a qualified name - is the part to the left of the ":". (\e book is the namespace prefix in - \e book:title.) - \li The \e {local part} of a name (also refered to as the \e {local - name}) appears to the right of the ":". (Thus \e title is the - local part of \e book:title.) - \li The \e {namespace URI} ("Uniform Resource Identifier") is a unique - identifier for a namespace. It looks like a URL - (e.g. \e http://www.example.com/fnord/ ) but does not require - data to be accessible by the given protocol at the named address. - \endlist - - Elements without a ":" (like \e chapter in the example) do not have a - namespace prefix. In this case the local part and the qualified name - are identical (i.e. \e chapter). - - \sa {DOM Bookmarks Example}, {SAX Bookmarks Example} -*/ - -/*! - \page xml-streaming.html - \title XML Streaming - - \previouspage An Introduction to Namespaces - \contentspage XML Processing - \nextpage The SAX Interface - - Since version 4.3, Qt provides two new classes for reading and - writing XML: QXmlStreamReader and QXmlStreamWriter. - - The QXmlStreamReader and QXmlStreamWriter are two new classes provided - in Qt 4.3 and later. A stream reader reports an XML document as a stream - of tokens. This differs from SAX as SAX applications provide handlers to - receive XML events from the parser whereas the QXmlStreamReader drives the - loop, pulling tokens from the reader when they are needed. - This pulling approach makes it possible to build recursive descent parsers, - allowing XML parsing code to be split into different methods or classes. - - QXmlStreamReader is a well-formed XML 1.0 parser that excludes external - parsed entities. Hence, data provided by the stream reader adheres to the - W3C's criteria for well-formed XML, as long as no error occurs. Otherwise, - functions such as \l{QXmlStreamReader::atEnd()}{atEnd()}, - \l{QXmlStreamReader::error()}{error()} and \l{QXmlStreamReader::hasError()} - {hasError()} can be used to check and view the errors. - - An example of QXmlStreamReader implementation would be the \c XbelReader in - \l{QXmlStream Bookmarks Example}, which is a subclass of QXmlStreamReader. - The constructor takes \a treeWidget as a parameter and the class has Xbel - specific functions: - - \snippet examples/xml/streambookmarks/xbelreader.h 1 - - \dots - \snippet examples/xml/streambookmarks/xbelreader.h 2 - \dots - - The \c read() function accepts a QIODevice and sets it with - \l{QXmlStreamReader::setDevice()}{setDevice()}. The - \l{QXmlStreamReader::raiseError()}{raiseError()} function is used to - display a custom error message, inidicating that the file's version - is incorrect. - - \snippet examples/xml/streambookmarks/xbelreader.cpp 1 - - The pendent to QXmlStreamReader is QXmlStreamWriter, which provides an XML - writer with a simple streaming API. QXmlStreamWriter operates on a - QIODevice and has specialised functions for all XML tokens or events you - want to write, such as \l{QXmlStreamWriter::writeDTD()}{writeDTD()}, - \l{QXmlStreamWriter::writeCharacters()}{writeCharacters()}, - \l{QXmlStreamWriter::writeComment()}{writeComment()} and so on. - - To write XML document with QXmlStreamWriter, you start a document with the - \l{QXmlStreamWriter::writeStartDocument()}{writeStartDocument()} function - and end it with \l{QXmlStreamWriter::writeEndDocument()} - {writeEndDocument()}, which implicitly closes all remaining open tags. - Element tags are opened with \l{QXmlStreamWriter::writeStartDocument()} - {writeStartDocument()} and followed by - \l{QXmlStreamWriter::writeAttribute()}{writeAttribute()} or - \l{QXmlStreamWriter::writeAttributes()}{writeAttributes()}, - element content, and then \l{QXmlStreamWriter::writeEndDocument()} - {writeEndDocument()}. Also, \l{QXmlStreamWriter::writeEmptyElement()} - {writeEmptyElement()} can be used to write empty elements. - - Element content comprises characters, entity references or nested elements. - Content can be written with \l{QXmlStreamWriter::writeCharacters()} - {writeCharacters()}, a function that also takes care of escaping all - forbidden characters and character sequences, - \l{QXmlStreamWriter::writeEntityReference()}{writeEntityReference()}, - or subsequent calls to \l{QXmlStreamWriter::writeStartElement()} - {writeStartElement()}. - - The \c XbelWriter class from \l{QXmlStream Bookmarks Example} is a subclass - of QXmlStreamWriter. Its \c writeFile() function illustrates the core - functions of QXmlStreamWriter mentioned above: - - \snippet examples/xml/streambookmarks/xbelwriter.cpp 1 -*/ - -/*! - \page xml-sax.html - \title The SAX interface - - \previouspage XML Streaming - \contentspage XML Processing - \nextpage Working with the DOM Tree - - SAX is an event-based standard interface for XML parsers. - The Qt interface follows the design of the SAX2 Java implementation. - Its naming scheme was adapted to fit the Qt naming conventions. - Details on SAX2 can be found at \l{http://www.saxproject.org}. - - Support for SAX2 filters and the reader factory are under - development. The Qt implementation does not include the SAX1 - compatibility classes present in the Java interface. - - \section1 Introduction to SAX2 - - The SAX2 interface is an event-driven mechanism to provide the user with - document information. An "event" in this context means something - reported by the parser, for example, it has encountered a start tag, - or an end tag, etc. - - To make it less abstract consider the following example: - \snippet code/doc_src_qtxml.qdoc 3 - - Whilst reading (a SAX2 parser is usually referred to as "reader") - the above document three events would be triggered: - \list 1 - \li A start tag occurs (\c{<quote>}). - \li Character data (i.e. text) is found, "A quotation.". - \li An end tag is parsed (\c{</quote>}). - \endlist - - Each time such an event occurs the parser reports it; you can set up - event handlers to respond to these events. - - Whilst this is a fast and simple approach to read XML documents, - manipulation is difficult because data is not stored, simply handled - and discarded serially. The \l{Working with the DOM Tree}{DOM interface} - reads in and stores the whole document in a tree structure; - this takes more memory, but makes it easier to manipulate the - document's structure. - - The Qt XML module provides an abstract class, \l QXmlReader, that - defines the interface for potential SAX2 readers. Qt includes a reader - implementation, \l QXmlSimpleReader, that is easy to adapt through - subclassing. - - The reader reports parsing events through special handler classes: - \table - \header \li Handler class \li Description - \row \li \l QXmlContentHandler - \li Reports events related to the content of a document (e.g. the start tag - or characters). - \row \li \l QXmlDTDHandler - \li Reports events related to the DTD (e.g. notation declarations). - \row \li \l QXmlErrorHandler - \li Reports errors or warnings that occurred during parsing. - \row \li \l QXmlEntityResolver - \li Reports external entities during parsing and allows users to resolve - external entities themselves instead of leaving it to the reader. - \row \li \l QXmlDeclHandler - \li Reports further DTD related events (e.g. attribute declarations). - \row \li \l QXmlLexicalHandler - \li Reports events related to the lexical structure of the - document (the beginning of the DTD, comments etc.). - \endtable - - These classes are abstract classes describing the interface. The \l - QXmlDefaultHandler class provides a "do nothing" default - implementation for all of them. Therefore users only need to overload - the QXmlDefaultHandler functions they are interested in. - - To read input XML data a special class \l QXmlInputSource is used. - - Apart from those already mentioned, the following SAX2 support classes - provide additional useful functionality: - \table - \header \li Class \li Description - \row \li \l QXmlAttributes - \li Used to pass attributes in a start element event. - \row \li \l QXmlLocator - \li Used to obtain the actual parsing position of an event. - \row \li \l QXmlNamespaceSupport - \li Used to implement namespace support for a reader. Note that - namespaces do not change the parsing behavior. They are only - reported through the handler. - \endtable - - The \l{SAX Bookmarks example} illustrates how to subclass - QXmlDefaultHandler to read an XML bookmark file (XBEL) and - how to generate XML by hand. - - \section1 SAX2 Features - - The behavior of an XML reader depends on its support for certain - optional features. For example, a reader may have the feature "report - attributes used for namespace declarations and prefixes along with - the local name of a tag". Like every other feature this has a unique - name represented by a URI: it is called - \e http://xml.org/sax/features/namespace-prefixes. - - The Qt SAX2 implementation can report whether the reader has - particular functionality using the QXmlReader::hasFeature() - function. Available features can be tested with QXmlReader::feature(), - and switched on or off using QXmlReader::setFeature(). - - Consider the example - \snippet code/doc_src_qtxml.qdoc 4 - A reader that does not support the \e - http://xml.org/sax/features/namespace-prefixes feature would report - the element name \e document but not its attributes \e xmlns:book and - \e xmlns with their values. A reader with the feature \e - http://xml.org/sax/features/namespace-prefixes reports the namespace - attributes if the \link QXmlReader::feature() feature\endlink is - switched on. - - Other features include \e http://xml.org/sax/features/namespace - (namespace processing, implies \e - http://xml.org/sax/features/namespace-prefixes) and \e - http://xml.org/sax/features/validation (the ability to report - validation errors). - - Whilst SAX2 leaves it to the user to define and implement whatever - features are required, support for \e - http://xml.org/sax/features/namespace (and thus \e - http://xml.org/sax/features/namespace-prefixes) is mandantory. - The \l QXmlSimpleReader implementation of \l QXmlReader, - supports them, and can do namespace processing. - - \l QXmlSimpleReader is not validating, so it - does not support \e http://xml.org/sax/features/validation. - - \section1 Namespace Support via Features - - As we have seen in the previous section, we can configure the - behavior of the reader when it comes to namespace - processing. This is done by setting and unsetting the - \e http://xml.org/sax/features/namespaces and - \e http://xml.org/sax/features/namespace-prefixes features. - - They influence the reporting behavior in the following way: - \list 1 - \li Namespace prefixes and local parts of elements and attributes can - be reported. - \li The qualified names of elements and attributes are reported. - \li \l QXmlContentHandler::startPrefixMapping() and \l - QXmlContentHandler::endPrefixMapping() are called by the reader. - \li Attributes that declare namespaces (i.e. the attribute \e xmlns and - attributes starting with \e{xmlns:}) are reported. - \endlist - - Consider the following element: - \snippet code/doc_src_qtxml.qdoc 5 - With \e http://xml.org/sax/features/namespace-prefixes set to true - the reader will report four attributes; but with the \e - namespace-prefixes feature set to false only three, with the \e - xmlns:fnord attribute defining a namespace being "invisible" to the - reader. - - The \e http://xml.org/sax/features/namespaces feature is responsible - for reporting local names, namespace prefixes and URIs. With \e - http://xml.org/sax/features/namespaces set to true the parser will - report \e title as the local name of the \e fnord:title attribute, \e - fnord being the namespace prefix and \e http://example.com/fnord/ as - the namespace URI. When \e http://xml.org/sax/features/namespaces is - false none of them are reported. - - In the current implementation the Qt XML classes follow the definition - that the prefix \e xmlns itself isn't associated with any namespace at all - (see \link http://www.w3.org/TR/1999/REC-xml-names-19990114/#ns-using - http://www.w3.org/TR/1999/REC-xml-names-19990114/#ns-using \endlink). - Therefore even with \e http://xml.org/sax/features/namespaces and - \e http://xml.org/sax/features/namespace-prefixes both set to true - the reader won't return either a local name, a namespace prefix or - a namespace URI for \e xmlns:fnord. - - This might be changed in the future following the W3C suggestion - \link http://www.w3.org/2000/xmlns/ http://www.w3.org/2000/xmlns/ \endlink - to associate \e xmlns with the namespace \e http://www.w3.org/2000/xmlns. - - As the SAX2 standard suggests, \l QXmlSimpleReader defaults to having - \e http://xml.org/sax/features/namespaces set to true and - \e http://xml.org/sax/features/namespace-prefixes set to false. - When changing this behavior using \l QXmlSimpleReader::setFeature() - note that the combination of both features set to - false is illegal. - - \section2 Summary - - \l QXmlSimpleReader implements the following behavior: - - \table - \header \li (namespaces, namespace-prefixes) - \li Namespace prefix and local part - \li Qualified names - \li Prefix mapping - \li xmlns attributes - \row \li (true, false) \li Yes \li Yes* \li Yes \li No - \row \li (true, true) \li Yes \li Yes \li Yes \li Yes - \row \li (false, true) \li No* \li Yes \li No* \li Yes - \row \li (false, false) \li {4,1} Illegal - \endtable - - The behavior of the entries marked with an asterisk (*) is not specified by SAX. - - \section1 Properties - - Properties are a more general concept. They have a unique name, - represented as an URI, but their value is \c void*. Thus nearly - anything can be used as a property value. This concept involves some - danger, though: there is no means of ensuring type-safety; the user - must take care that they pass the right type. Properties are - useful if a reader supports special handler classes. - - The URIs used for features and properties often look like URLs, e.g. - \c http://xml.org/sax/features/namespace. This does not mean that the - data required is at this address. It is simply a way of defining - unique names. - - Anyone can define and use new SAX2 properties for their readers. - Property support is not mandatory. - - To set or query properties the following functions are provided: \l - QXmlReader::setProperty(), \l QXmlReader::property() and \l - QXmlReader::hasProperty(). -*/ - -/*! - \page xml-dom.tml - \title Working with the DOM Tree - \target dom - - \previouspage The SAX Interface - \contentspage XML Processing - \nextpage {XQuery}{XQuery/XPath and XML Schema} - - DOM Level 2 is a W3C Recommendation for XML interfaces that maps the - constituents of an XML document to a tree structure. The specification - of DOM Level 2 can be found at \l{http://www.w3.org/DOM/}. - - \target domIntro - \section1 Introduction to DOM - - DOM provides an interface to access and change the content and - structure of an XML file. It makes a hierarchical view of the document - (a tree view). Thus -- in contrast to the SAX2 interface -- an object - model of the document is resident in memory after parsing which makes - manipulation easy. - - All DOM nodes in the document tree are subclasses of \l QDomNode. The - document itself is represented as a \l QDomDocument object. - - Here are the available node classes and their potential child classes: - - \list - \li \l QDomDocument: Possible children are - \list - \li \l QDomElement (at most one) - \li \l QDomProcessingInstruction - \li \l QDomComment - \li \l QDomDocumentType - \endlist - \li \l QDomDocumentFragment: Possible children are - \list - \li \l QDomElement - \li \l QDomProcessingInstruction - \li \l QDomComment - \li \l QDomText - \li \l QDomCDATASection - \li \l QDomEntityReference - \endlist - \li \l QDomDocumentType: No children - \li \l QDomEntityReference: Possible children are - \list - \li \l QDomElement - \li \l QDomProcessingInstruction - \li \l QDomComment - \li \l QDomText - \li \l QDomCDATASection - \li \l QDomEntityReference - \endlist - \li \l QDomElement: Possible children are - \list - \li \l QDomElement - \li \l QDomText - \li \l QDomComment - \li \l QDomProcessingInstruction - \li \l QDomCDATASection - \li \l QDomEntityReference - \endlist - \li \l QDomAttr: Possible children are - \list - \li \l QDomText - \li \l QDomEntityReference - \endlist - \li \l QDomProcessingInstruction: No children - \li \l QDomComment: No children - \li \l QDomText: No children - \li \l QDomCDATASection: No children - \li \l QDomEntity: Possible children are - \list - \li \l QDomElement - \li \l QDomProcessingInstruction - \li \l QDomComment - \li \l QDomText - \li \l QDomCDATASection - \li \l QDomEntityReference - \endlist - \li \l QDomNotation: No children - \endlist - - With \l QDomNodeList and \l QDomNamedNodeMap two collection classes - are provided: \l QDomNodeList is a list of nodes, - and \l QDomNamedNodeMap is used to handle unordered sets of nodes - (often used for attributes). - - The \l QDomImplementation class allows the user to query features of the - DOM implementation. - - To get started please refer to the \l QDomDocument documentation. - You might also want to take a look at the \l{DOM Bookmarks example}, - which illustrates how to read and write an XML bookmark file (XBEL) - using DOM. -*/ |