diff options
Diffstat (limited to 'khtml/dom/dom_doc.h')
-rw-r--r-- | khtml/dom/dom_doc.h | 1107 |
1 files changed, 0 insertions, 1107 deletions
diff --git a/khtml/dom/dom_doc.h b/khtml/dom/dom_doc.h deleted file mode 100644 index 9a5331295..000000000 --- a/khtml/dom/dom_doc.h +++ /dev/null @@ -1,1107 +0,0 @@ -/* - * This file is part of the DOM implementation for KDE. - * - * (C) 1999 Lars Knoll (knoll@kde.org) - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * - * This file includes excerpts from the Document Object Model (DOM) - * Level 1 Specification (Recommendation) - * http://www.w3.org/TR/REC-DOM-Level-1/ - * Copyright © World Wide Web Consortium , (Massachusetts Institute of - * Technology , Institut National de Recherche en Informatique et en - * Automatique , Keio University ). All Rights Reserved. - */ - -#ifndef _DOM_Document_h_ -#define _DOM_Document_h_ - -#include <dom/dom_node.h> -#include <dom/css_stylesheet.h> - -class KHTMLView; -class KHTMLPart; - -namespace DOM { - -class DOMString; -class DocumentType; -class NodeList; -class CDATASection; -class Comment; -class DocumentFragment; -class Text; -class DOMImplementation; -class Element; -class Attr; -class EntityReference; -class ProcessingInstruction; -class DocumentImpl; -class Range; -class NodeIterator; -class TreeWalker; -class NodeFilter; -class DOMImplementationImpl; -class DocumentTypeImpl; -class Event; -class AbstractView; -class CSSStyleDeclaration; -class HTMLElementImpl; -class HTMLFrameElement; -class HTMLElementImpl; -class HTMLIFrameElement; -class HTMLObjectElement; -class HTMLDocument; - -/** - * The \c DOMImplementation interface provides a number of - * methods for performing operations that are independent of any - * particular instance of the document object model. - * - * DOM Level 2 and newer provide means for creating documents directly, - * which was not possible with DOM Level 1. - */ -class KHTML_EXPORT DOMImplementation -{ - friend class Document; -public: - DOMImplementation(); - DOMImplementation(const DOMImplementation &other); - - DOMImplementation & operator = (const DOMImplementation &other); - ~DOMImplementation(); - - /** - * Test if the DOM implementation implements a specific feature. - * - * @param feature The package name of the feature to test. In - * Level 1, the legal values are "HTML" and "XML" - * (case-insensitive). - * - * @param version This is the version number of the package name - * to test. In Level 1, this is the string "1.0". If the version - * is not specified, supporting any version of the feature will - * cause the method to return \c true . - * - * @return \c true if the feature is implemented in - * the specified version, \c false otherwise. - * - */ - bool hasFeature ( const DOMString &feature, const DOMString &version ); - - /** - * Introduced in DOM Level 2 - * - * Creates an empty DocumentType node. Entity declarations and notations - * are not made available. Entity reference expansions and default - * attribute additions do not occur. It is expected that a future version - * of the DOM will provide a way for populating a DocumentType. - * - * HTML-only DOM implementations do not need to implement this method. - * - * @param qualifiedName The qualified name of the document type to be - * created. - * - * @param publicId The external subset public identifier. - * - * @param systemId The external subset system identifier. - * - * @return A new DocumentType node with Node.ownerDocument set to null. - * - * @exception DOMException - * INVALID_CHARACTER_ERR: Raised if the specified qualified name contains - * an illegal character. - * - * NAMESPACE_ERR: Raised if the qualifiedName is malformed. - */ - DocumentType createDocumentType ( const DOMString &qualifiedName, - const DOMString &publicId, - const DOMString &systemId ); - - /** - * Introduced in DOM Level 2 - * - * Creates an XML Document object of the specified type with its document - * element. HTML-only DOM implementations do not need to implement this - * method. - * - * @param namespaceURI The namespace URI of the document element to create. - * - * @param qualifiedName The qualified name of the document element to be - * created. - * - * @param doctype The type of document to be created or null. When doctype - * is not null, its Node.ownerDocument attribute is set to the document - * being created. - * - * @return A new Document object. - * - * @exception DOMException - * INVALID_CHARACTER_ERR: Raised if the specified qualified name contains - * an illegal character. - * - * NAMESPACE_ERR: Raised if the qualifiedName is malformed, if the - * qualifiedName has a prefix and the namespaceURI is null, or if the - * qualifiedName has a prefix that is "xml" and the namespaceURI is - * different from "http://www.w3.org/XML/1998/namespace" [Namespaces]. - * - * WRONG_DOCUMENT_ERR: Raised if doctype has already been used with a - * different document or was created from a different implementation. - */ - Document createDocument ( const DOMString &namespaceURI, - const DOMString &qualifiedName, - const DocumentType &doctype ); - - /** - * Introduced in DOM Level 3 - * This method makes available a DOMImplementation's specialized - * interface. - * - * @param feature The name of the feature requested (case-insensitive) - * - * @return Returns an alternate DOMImplementation which implements - * the specialized APIs of the specified feature, if any, or null - * if there is no alternate DOMImplementation object which implements - * interfaces associated with that feature. Any alternate DOMImplementation - * returned by this method must delegate to the primary core DOMImplementation - * and not return results inconsistent with the primary DOMImplementation. - */ - DOMImplementation getInterface(const DOMString &feature) const; - - /** - * Introduced in DOM Level 2 - * This method is from the DOMImplementationCSS interface - * - * Creates a new CSSStyleSheet. - * - * @param title The advisory title. See also the Style Sheet Interfaces - * section. - * - * @param media The comma-separated list of media associated with the - * new style sheet. See also the Style Sheet Interfaces section. - * - * @return A new CSS style sheet. - * - * @exception SYNTAX_ERR: Raised if the specified media string value has a syntax error and is unparsable. - */ - CSSStyleSheet createCSSStyleSheet(const DOMString &title, const DOMString &media); - - /** - * Introduced in DOM Level 2 - * This method is from the HTMLDOMImplementation interface - * - * Creates an HTMLDocument with the minimal tree made of these - * elements: HTML,HEAD,TITLE and BODY. - * It extends the core interface which can be used to create an - * XHTML document by passing the XHTML namespace as the namespace - * for the root element. - * - * @param title The title of the document to be set as the content - * of the TITLE element, through a child Text node. - * - * @return the HTMLdocument - */ - HTMLDocument createHTMLDocument(const DOMString& title); - - /** - * @internal - * not part of the DOM - */ - DOMImplementationImpl *handle() const; - bool isNull() const; - -protected: - DOMImplementation(DOMImplementationImpl *i); - DOMImplementationImpl *impl; -}; - -/** - * The \c Document interface represents the entire HTML or - * XML document. Conceptually, it is the root of the document tree, - * and provides the primary access to the document's data. - * - * Since elements, text nodes, comments, processing instructions, - * etc. cannot exist outside the context of a \c Document - * , the \c Document interface also contains the factory - * methods needed to create these objects. The \c Node - * objects created have a \c ownerDocument attribute which - * associates them with the \c Document within whose - * context they were created. - * - */ -class KHTML_EXPORT Document : public Node -{ - friend class ::KHTMLView; - friend class ::KHTMLPart; - friend class AbstractView; - friend class DOMImplementation; - friend class HTMLFrameElement; - friend class HTMLIFrameElement; - friend class HTMLObjectElement; - -public: - Document(); - /** - * don't create an implementation if false - * use at own risk - */ - Document(bool); - Document(const Document &other); - Document(const Node &other) : Node() - {(*this)=other;} - - Document & operator = (const Node &other); - Document & operator = (const Document &other); - - ~Document(); - - /** - * The Document Type Declaration (see \c DocumentType - * ) associated with this document. For HTML documents as well as - * XML documents without a document type declaration this returns - * \c null . The DOM Level 1 does not support editing - * the Document Type Declaration, therefore \c docType - * cannot be altered in any way. - * - */ - DocumentType doctype() const; - - /** - * The \c DOMImplementation object that handles this - * document. A DOM application may use objects from multiple - * implementations. - * - */ - DOMImplementation implementation() const; - - /** - * This is a convenience attribute that allows direct access to - * the child node that is the root element of the document. For - * HTML documents, this is the element with the tagName "HTML". - * - */ - Element documentElement() const; - - /** - * Creates an element of the type specified. Note that the - * instance returned implements the Element interface, so - * attributes can be specified directly on the returned object. - * - * @param tagName The name of the element type to instantiate. For - * XML, this is case-sensitive. For HTML, the \c tagName - * parameter may be provided in any case, but it must be - * mapped to the canonical uppercase form by the DOM - * implementation. - * - * @return A new \c Element object. - * - * @exception DOMException - * INVALID_CHARACTER_ERR: Raised if the specified name contains an - * invalid character. - * - */ - Element createElement ( const DOMString &tagName ); - - /** - * Introduced in DOM Level 2 - * Creates an element of the given qualified name and namespace URI. - * - * @param namespaceURI The namespace URI of the element to create. - * - * @param qualifiedName The qualified name of the element type to instantiate. - * - * @return A new Element object with the following attributes: - * - * @exception INVALID_CHARACTER_ERR Raised if the specified qualified name - * contains an illegal character. - * - * @exception NAMESPACE_ERR Raised if the qualifiedName is malformed, if - * the qualifiedName has a prefix and the namespaceURI is null, or if the - * qualifiedName has a prefix that is "xml" and the namespaceURI is - * different from "http://www.w3.org/XML/1998/namespace" - */ - Element createElementNS( const DOMString &namespaceURI, - const DOMString &qualifiedName ); - - /** - * Creates an empty \c DocumentFragment object. - * - * @return A new \c DocumentFragment . - * - */ - DocumentFragment createDocumentFragment ( ); - - /** - * Creates a \c Text node given the specified string. - * - * @param data The data for the node. - * - * @return The new \c Text object. - * - */ - Text createTextNode ( const DOMString &data ); - - /** - * Creates a \c Comment node given the specified - * string. - * - * @param data The data for the node. - * - * @return The new \c Comment object. - * - */ - Comment createComment ( const DOMString &data ); - - /** - * Creates a \c CDATASection node whose value is the - * specified string. - * - * @param data The data for the \c CDATASection - * contents. - * - * @return The new \c CDATASection object. - * - * @exception DOMException - * NOT_SUPPORTED_ERR: Raised if this document is an HTML document. - * - */ - CDATASection createCDATASection ( const DOMString &data ); - - /** - * Creates a \c ProcessingInstruction node given the - * specified name and data strings. - * - * @param target The target part of the processing instruction. - * - * @param data The data for the node. - * - * @return The new \c ProcessingInstruction object. - * - * @exception DOMException - * INVALID_CHARACTER_ERR: Raised if an invalid character is - * specified. - * - * NOT_SUPPORTED_ERR: Raised if this document is an HTML - * document. - * - */ - ProcessingInstruction createProcessingInstruction ( const DOMString &target, - const DOMString &data ); - - /** - * Creates an \c Attr of the given name. Note that the - * \c Attr instance can then be set on an \c Element - * using the \c setAttribute method. - * - * @param name The name of the attribute. - * - * @return A new \c Attr object. - * - * @exception DOMException - * INVALID_CHARACTER_ERR: Raised if the specified name contains an - * invalid character. - * - */ - Attr createAttribute ( const DOMString &name ); - - /** - * Introduced in DOM Level 2 - * Creates an attribute of the given qualified name and namespace URI. - * HTML-only DOM implementations do not need to implement this method. - * - * @param namespaceURI The namespace URI of the attribute to create. - * - * @param qualifiedName The qualified name of the attribute to instantiate. - * - * @return A new Attr object with the following attributes: - * Node.nodeName - qualifiedName - * Node.namespaceURI - namespaceURI - * Node.prefix - prefix, extracted from qualifiedName, or null if there is - * no prefix - * Node.localName - local name, extracted from qualifiedName - * Attr.name - qualifiedName - * Node.nodeValue - the empty string - * - * @exception INVALID_CHARACTER_ERR Raised if the specified qualified name - * contains an illegal character. - * - * @exception NAMESPACE_ERR Raised if the qualifiedName is malformed, if - * the qualifiedName has a prefix and the namespaceURI is null, if the - * qualifiedName has a prefix that is "xml" and the namespaceURI is - * different from "http://www.w3.org/XML/1998/namespace", or if the - * qualifiedName is "xmlns" and the namespaceURI is different from - * "http://www.w3.org/2000/xmlns/". - */ - Attr createAttributeNS( const DOMString &namespaceURI, - const DOMString &qualifiedName ); - - /** - * Creates an EntityReference object. - * - * @param name The name of the entity to reference. - * - * @return The new \c EntityReference object. - * - * @exception DOMException - * INVALID_CHARACTER_ERR: Raised if the specified name contains an - * invalid character. - * - * NOT_SUPPORTED_ERR: Raised if this document is an HTML - * document. - * - */ - EntityReference createEntityReference ( const DOMString &name ); - - /** - * Moved from HTMLDocument in DOM Level 2 - * Returns the Element whose \c id is given by - * elementId. If no such element exists, returns \c null - * . Behavior is not defined if more than one element has - * this \c id . - * - * @param elementId The unique \c id value for an - * element. - * - * @return The matching element. - * - */ - Element getElementById ( const DOMString &elementId ) const; - - /** - * No Exceptions. - * - * Returns a \c NodeList of all the \c Element 's - * with a given tag name in the order in which they - * would be encountered in a preorder traversal of the - * \c Document tree. - * - * @param tagname The name of the tag to match on. The special - * value "*" matches all tags. - * - * @return A new \c NodeList object containing all the - * matched \c Element s. - * - */ - NodeList getElementsByTagName ( const DOMString &tagname ); - - /** - * Introduced in DOM Level 2 - * No Exceptions - * - * Returns a NodeList of all the Elements with a given local name and - * namespace URI in the order in which they are encountered in a preorder - * traversal of the Document tree. - * - * @param namespaceURI The namespace URI of the elements to match on. The - * special value "*" matches all namespaces. - * - * @param localName The local name of the elements to match on. The special - * value "*" matches all local names. - * - * @return A new NodeList object containing all the matched Elements. - */ - NodeList getElementsByTagNameNS( const DOMString &namespaceURI, - const DOMString &localName ); - - /** - * Introduced in DOM Level 2 - * - * Imports a node from another document to this document. The returned node - * has no parent; (parentNode is null). The source node is not altered or - * removed from the original document; this method creates a new copy of - * the source node. - * - * For all nodes, importing a node creates a node object owned by the - * importing document, with attribute values identical to the source node's - * nodeName and nodeType, plus the attributes related to namespaces - * (prefix, localName, and namespaceURI). - * - * As in the cloneNode operation on a Node, the source node is not altered. - * Additional information is copied as appropriate to the nodeType, - * attempting to mirror the behavior expected if a fragment of XML or HTML - * source was copied from one document to another, recognizing that the two - * documents may have different DTDs in the XML case. The following list - * describes the specifics for each type of node. - * - * ATTRIBUTE_NODE - * The ownerElement attribute is set to null and the specified flag is set - * to true on the generated Attr. The descendants of the source Attr are - * recursively imported and the resulting nodes reassembled to form the - * corresponding subtree. Note that the deep parameter has no effect on - * Attr nodes; they always carry their children with them when imported. - * - * DOCUMENT_FRAGMENT_NODE - * If the deep option was set to true, the descendants of the source - * element are recursively imported and the resulting nodes reassembled to - * form the corresponding subtree. Otherwise, this simply generates an - * empty DocumentFragment. - * - * DOCUMENT_NODE - * Document nodes cannot be imported. - * - * DOCUMENT_TYPE_NODE - * DocumentType nodes cannot be imported. - * - * ELEMENT_NODE - * Specified attribute nodes of the source element are imported, and the - * generated Attr nodes are attached to the generated Element. Default - * attributes are not copied, though if the document being imported into - * defines default attributes for this element name, those are assigned. If - * the importNode deep parameter was set to true, the descendants of the - * source element are recursively imported and the resulting nodes - * reassembled to form the corresponding subtree. - * - * ENTITY_NODE - * Entity nodes can be imported, however in the current release of the DOM - * the DocumentType is readonly. Ability to add these imported nodes to a - * DocumentType will be considered for addition to a future release of the - * DOM. - * On import, the publicId, systemId, and notationName attributes are - * copied. If a deep import is requested, the descendants of the the source - * Entity are recursively imported and the resulting nodes reassembled to - * form the corresponding subtree. - * - * ENTITY_REFERENCE_NODE Only the EntityReference itself is copied, even if - * a deep import is requested, since the source and destination documents - * might have defined the entity differently. If the document being - * imported into provides a definition for this entity name, its value is - * assigned. - * - * NOTATION_NODE - * Notation nodes can be imported, however in the current release of the - * DOM the DocumentType is readonly. Ability to add these imported nodes to - * a DocumentType will be considered for addition to a future release of - * the DOM. - * On import, the publicId and systemId attributes are copied. - * Note that the deep parameter has no effect on Notation nodes since they - * never have any children. - * - * PROCESSING_INSTRUCTION_NODE - * The imported node copies its target and data values from those of the - * source node. - * - * TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE - * These three types of nodes inheriting from CharacterData copy their data - * and length attributes from those of the source node. - * - * @param importedNode The node to import. - * - * @param deep If true, recursively import the subtree under the specified - * node; if false, import only the node itself, as explained above. This - * has no effect on Attr, EntityReference, and Notation nodes. - * - * @return The imported node that belongs to this Document. - * - * @exception DOMException - * NOT_SUPPORTED_ERR: Raised if the type of node being imported is not - * supported. - */ - Node importNode( const Node & importedNode, bool deep ); - - /** - * @internal - * not part of the DOM - */ - bool isHTMLDocument() const; - - /** - * Introduced in DOM Level 2 - * This method is from the DocumentRange interface - * - * @return Range - * The initial state of the Range returned from this method is such that - * both of its boundary-points are positioned at the beginning of the - * corresponding Document, before any content. The Range returned can only - * be used to select content associated with this Document, or with - * DocumentFragments and Attrs for which this Document is the ownerDocument. - */ - Range createRange(); - - /** - * Introduced in DOM Level 2 - * This method is from the DocumentTraversal interface - * - * Create a new NodeIterator over the subtree rooted at the specified node. - * - * @param root The node which will be iterated together with its children. - * The iterator is initially positioned just before this node. The - * whatToShow flags and the filter, if any, are not considered when setting - * this position. The root must not be null. - * - * @param whatToShow This flag specifies which node types may appear in the - * logical view of the tree presented by the iterator. See the description - * of NodeFilter for the set of possible SHOW_ values. These flags can be - * combined using OR. - * - * @param filter The NodeFilter to be used with this NodeIterator, or null to - * indicate no filter. - * - * @param entityReferenceExpansion The value of this flag determines - * whether entity reference nodes are expanded. - * - * @return NodeIterator The newly created NodeIterator. - * - * @exception DOMException - * NOT_SUPPORTED_ERR: Raised if the specified root is null. - */ - NodeIterator createNodeIterator(Node root, unsigned long whatToShow, - NodeFilter filter, - bool entityReferenceExpansion); - - /** - * Introduced in DOM Level 2 - * This method is from the DocumentTraversal interface - * - * Create a new TreeWalker over the subtree rooted at the specified node. - * - * @param root The node which will serve as the root for the TreeWalker. - * The whatToShow flags and the NodeFilter are not considered when setting - * this value; any node type will be accepted as the root. The currentNode - * of the TreeWalker is initialized to this node, whether or not it is - * visible. The root functions as a stopping point for traversal methods - * that look upward in the document structure, such as parentNode and - * nextNode. The root must not be null. - * - * @param whatToShow This flag specifies which node types may appear in the - * logical view of the tree presented by the tree-walker. See the - * description of NodeFilter for the set of possible SHOW_ values. These - * flags can be combined using OR. - * - * @param filter The NodeFilter to be used with this TreeWalker, or null to - * indicate no filter. - * - * @param entityReferenceExpansion If this flag is false, the contents of - * EntityReference nodes are not presented in the logical view. - * - * @return The newly created TreeWalker. - * - * @exception DOMException - * NOT_SUPPORTED_ERR: Raised if the specified root is null. - */ - TreeWalker createTreeWalker(Node root, unsigned long whatToShow, - NodeFilter filter, - bool entityReferenceExpansion); - - /** - * Introduced in DOM Level 2 - * This method is from the DocumentEvent interface - * - * The createEvent method is used in creating Events when it is either - * inconvenient or unnecessary for the user to create an Event themselves. - * In cases where the implementation provided Event is insufficient, users - * may supply their own Event implementations for use with the - * dispatchEvent method. - * - * @param eventType The eventType parameter specifies the type of Event - * interface to be created. If the Event interface specified is supported - * by the implementation this method will return a new Event of the - * interface type requested. If the Event is to be dispatched via the - * dispatchEvent method the appropriate event init method must be called - * after creation in order to initialize the Event's values. As an example, - * a user wishing to synthesize some kind of UIEvent would call createEvent - * with the parameter "UIEvents". The initUIEvent method could then be - * called on the newly created UIEvent to set the specific type of UIEvent - * to be dispatched and set its context information. - * - * @return The newly created EventExceptions - * - * @exception DOMException - * NOT_SUPPORTED_ERR: Raised if the implementation does not support the - * type of Event interface requested - */ - Event createEvent(const DOMString &eventType); - - /** - * Introduced in DOM Level 2 - * This method is from the DocumentView interface - * - * The default AbstractView for this Document, or null if none available. - */ - AbstractView defaultView() const; - - /** - * Introduced in DOM Level 2 - * This method is from the DocumentStyle interface - * - * A list containing all the style sheets explicitly linked into or - * embedded in a document. For HTML documents, this includes external style - * sheets, included via the HTML LINK element, and inline STYLE elements. - * In XML, this includes external style sheets, included via style sheet - * processing instructions (see [XML-StyleSheet]). - */ - StyleSheetList styleSheets() const; - - /** - * CSS3 mechanism for selecting alternate stylesheets using the DOM. - * Might change without further notice. - */ - - DOMString preferredStylesheetSet(); - DOMString selectedStylesheetSet(); - void setSelectedStylesheetSet(const DOMString& aString); - - /** - * Adds a new style sheet to the list of style sheets. - * - * The new style sheet will be applied after all author and implicit - * style sheets, but before the user style sheet. - * - * Create new style sheets with e. g. - * \c DOMImplementation::createCSSStyleSheet - * - * This is not part of the official DOM. - * - * @param sheet style sheet - * @exception DOMException - * @since 3.4 - */ - void addStyleSheet(const StyleSheet &sheet); - - /** - * Removes a style sheet to the list of style sheets. - * - * Only sheets added by \c addStyleSheet may be removed. - * - * This is not part of the official DOM. - * - * @param sheet style sheet to remove - * @exception DOMException - * NOT_FOUND_ERR \c sheet is not contained in the list of style sheets or - * it has not been added by \c addStyleSheet - * @since 3.4 - */ - void removeStyleSheet(const StyleSheet &sheet); - - /** - * @return The KHTML view widget of this document. - */ - KHTMLView *view() const; - - /** - * Introduced in DOM Level 2 - * This method is from the DocumentCSS interface - * - * This method is used to retrieve the override style declaration for a - * specified element and a specified pseudo-element. - * - * @param elt The element whose style is to be modified. This parameter - * cannot be null. - * - * @param pseudoElt The pseudo-element or null if none. - * - * @return The override style declaration. - */ - CSSStyleDeclaration getOverrideStyle(const Element &elt, - const DOMString &pseudoElt); - - /** - * Introduced in DOM Level 3 - * This method is from the DocumentLS interface - * - * Indicates whether the method DocumentLS.load() should be synchronous or - * asynchronous. When the async attribute is set to true the load method - * returns control to the caller before the document has completed loading. - * The default value of this attribute is true. - */ - bool async() const; - - /** - * Introduced in DOM Level 3 - * This method is from the DocumentLS interface - * - * see async - * - * @exception DOMException - * NOT_SUPPORTED_ERR: Raised if the implementation doesn't support the mode - * the attribute is being set to. - */ - void setAsync( bool ); - - - /** - * Introduced in DOM Level 3 - * This method is from the DocumentLS interface - * - * If the document is currently being loaded as a result of the method load - * being invoked the loading and parsing is immediately aborted. The - * possibly partial result of parsing the document is discarded and the - * document is cleared. - */ - void abort(); - - /** - * Introduced in DOM Level 3 - * This method is from the DocumentLS interface - * - * Replaces the content of the document with the result of parsing the - * given URI. Invoking this method will either block the caller or return - * to the caller immediately depending on the value of the async attribute. - * Once the document is fully loaded a "load" event (as defined in - * [DOM Level 3 Events], except that the Event.targetNode will be the - * document, not an element) will be dispatched on the document. If an - * error occurs, an implementation dependent "error" event will be - * dispatched on the document. If this method is called on a document that - * is currently loading, the current load is interrupted and the new URI - * load is initiated. - * - * When invoking this method the parameters used in the DOMParser interface - * are assumed to have their default values with the exception that the - * parameters "entities", "normalize-characters", - * "check-character-normalization" are set to "false". - * - * The result of a call to this method is the same the result of a call to - * DOMParser.parseWithContext with an input stream referencing the URI that - * was passed to this call, the document as the context node, and the - * action ACTION_REPLACE_CHILDREN. - * - * @param uri of type DOMString - * The URI reference for the XML file to be loaded. If this is a relative - * URI, the base URI used by the implementation is implementation dependent. - * - * @return If async is set to true load returns true if the document load - * was successfully initiated. If an error occurred when initiating the - * document load, load returns false. - * If async is set to false load returns true if the document was - * successfully loaded and parsed. If an error occurred when either loading - * or parsing the URI, load returns false. - */ - void load( const DOMString &uri ); - - /** - * Introduced in DOM Level 3 - * This method is from the DocumentLS interface - * - * Replace the content of the document with the result of parsing the input - * string, this method is always synchronous. This method always parses - * from a DOMString, which means the data is always UTF-16. All other - * encoding information is ignored. - * - * The parameters used in the DOMParser interface are assumed to have their - * default values when invoking this method. - * - * The result of a call to this method is the same as the result of a call - * to DOMParser.parseWithContext with an input stream containing the string - * passed to this call, the document as the context node, and the action - * ACTION_REPLACE_CHILDREN. - * - * @param source A string containing an XML document. - */ - void loadXML( const DOMString &source ); - - /** - * not part of the official DOM - * - * Documents are read-only by default, but they can be made editable by - * entering "design mode". - * - * @return whether this document is in design mode. - * @since 3.2 - */ - bool designMode() const; - - /** - * not part of the official DOM - * - * @param enable @p true to enable design mode, @p false to disable. - * @see designMode - * @since 3.2 - */ - void setDesignMode(bool enable); - - /** - * not part of the DOM - * - * completes a given URL - */ - DOMString completeURL(const DOMString& url); - - DOMString toString() const; - - /** - * not part of the DOM - * - * Updates the rendered display after one or more changes to - * the DOM structure - */ - void updateRendering(); - - Document( DocumentImpl *i); -protected: - - friend class Node; -}; - -class DocumentFragmentImpl; - -/** - * \c DocumentFragment is a "lightweight" or "minimal" - * \c Document object. It is very common to want to be - * able to extract a portion of a document's tree or to create a new - * fragment of a document. Imagine implementing a user command like - * cut or rearranging a document by moving fragments around. It is - * desirable to have an object which can hold such fragments and it is - * quite natural to use a Node for this purpose. While it is true that - * a \c Document object could fulfil this role, a - * \c Document object can potentially be a heavyweight object, - * depending on the underlying implementation. What is really needed - * for this is a very lightweight object. \c DocumentFragment - * is such an object. - * - * Furthermore, various operations -- such as inserting nodes as - * children of another \c Node -- may take - * \c DocumentFragment objects as arguments; this results in all - * the child nodes of the \c DocumentFragment being moved - * to the child list of this node. - * - * The children of a \c DocumentFragment node are zero or - * more nodes representing the tops of any sub-trees defining the - * structure of the document. \c DocumentFragment nodes do - * not need to be well-formed XML documents (although they do need to - * follow the rules imposed upon well-formed XML parsed entities, - * which can have multiple top nodes). For example, a - * \c DocumentFragment might have only one child and that child - * node could be a \c Text node. Such a structure model - * represents neither an HTML document nor a well-formed XML document. - * - * When a \c DocumentFragment is inserted into a - * \c Document (or indeed any other \c Node that may - * take children) the children of the \c DocumentFragment - * and not the \c DocumentFragment itself are inserted - * into the \c Node . This makes the - * \c DocumentFragment very useful when the user wishes to create - * nodes that are siblings; the \c DocumentFragment acts - * as the parent of these nodes so that the user can use the standard - * methods from the \c Node interface, such as - * \c insertBefore() and \c appendChild() . - * - */ -class KHTML_EXPORT DocumentFragment : public Node -{ - friend class Document; - friend class HTMLElementImpl; - friend class Range; - -public: - DocumentFragment(); - DocumentFragment(const DocumentFragment &other); - DocumentFragment(const Node &other) : Node() - {(*this)=other;} - - DocumentFragment & operator = (const Node &other); - DocumentFragment & operator = (const DocumentFragment &other); - - ~DocumentFragment(); - -protected: - DocumentFragment(DocumentFragmentImpl *i); -}; - -class NamedNodeMap; -class DOMString; - -/** - * Each \c Document has a \c doctype attribute - * whose value is either \c null or a \c DocumentType - * object. The \c DocumentType interface in the - * DOM Level 1 Core provides an interface to the list of entities that - * are defined for the document, and little else because the effect of - * namespaces and the various XML scheme efforts on DTD representation - * are not clearly understood as of this writing. - * - * The DOM Level 1 doesn't support editing \c DocumentType - * nodes. - * - */ -class KHTML_EXPORT DocumentType : public Node -{ - friend class Document; - friend class DOMImplementation; -public: - DocumentType(); - DocumentType(const DocumentType &other); - - DocumentType(const Node &other) : Node() - {(*this)=other;} - DocumentType & operator = (const Node &other); - DocumentType & operator = (const DocumentType &other); - - ~DocumentType(); - - /** - * The name of DTD; i.e., the name immediately following the - * \c DOCTYPE keyword. - * - */ - DOMString name() const; - - /** - * A \c NamedNodeMap containing the general entities, - * both external and internal, declared in the DTD. Duplicates are - * discarded. For example in: <!DOCTYPE ex SYSTEM "ex.dtd" [ - * <!ENTITY foo "foo"> <!ENTITY bar "bar"> <!ENTITY % baz - * "baz"> ]> <ex/> the interface provides access to \c foo - * and \c bar but not \c baz . - * Every node in this map also implements the \c Entity - * interface. - * - * The DOM Level 1 does not support editing entities, therefore - * \c entities cannot be altered in any way. - * - */ - NamedNodeMap entities() const; - - /** - * A \c NamedNodeMap containing the notations declared - * in the DTD. Duplicates are discarded. Every node in this map - * also implements the \c Notation interface. - * - * The DOM Level 1 does not support editing notations, therefore - * \c notations cannot be altered in any way. - * - */ - NamedNodeMap notations() const; - - /** - * Introduced in DOM Level 2 - * - * The public identifier of the external subset. - */ - DOMString publicId() const; - - /** - * Introduced in DOM Level 2 - * - * The system identifier of the external subset. - */ - DOMString systemId() const; - - /** - * Introduced in DOM Level 2 - * - * The internal subset as a string. - * - * Note: The actual content returned depends on how much information is - * available to the implementation. This may vary depending on various - * parameters, including the XML processor used to build the document. - */ - DOMString internalSubset() const; - -protected: - DocumentType(DocumentTypeImpl *impl); -}; - -} //namespace -#endif |