blob: 1e6d745c85e6b04aeecd03127253feabe411b449 [file] [log] [blame]
/*
* Copyright 2008 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.gwt.xml.client;
/*
* Implementation notes: Safari does not support mutable attributes, so no
* mechanism for creating Attr objects has been supplied. IE does not support
* any of the xxxNS operations, so they have been omitted as well. IE does not
* use importNode to copy nodes from one document into another.
*/
/**
* <code>Document</code> objects represent XML documents. Each
* <code>Document</code> can contain exactly one <code>Element</code> node,
* and any number of other node types.
*/
public interface Document extends Node {
/**
* This method creates a new <code>CDATASection</code>.
*
* @param data the data of the new <code>CDATASection</code>
* @return the newly created <code>CDATASection</code>
*/
CDATASection createCDATASection(String data);
/**
* This method creates a new <code>Comment</code>.
*
* @param data the data of the new <code>Comment</code>
* @return the newly created <code>Comment</code>
*/
Comment createComment(String data);
/**
* This method creates a new <code>DocumentFragment</code>.
*
* @return the newly created <code>DocumentFragment</code>
*/
DocumentFragment createDocumentFragment();
/**
* This method creates a new <code>Element</code>.
*
* @param tagName the tag name of the new <code>Element</code>
* @return the newly created <code>Element</code>
*/
Element createElement(String tagName);
/**
* This method creates a new <code>ProcessingInstruction</code>.
*
* @param target the target of the new <code>ProcessingInstruction</code>
* @param data the data of the new <code>ProcessingInstruction</code>
* @return the newly created <code>ProcessingInstruction</code>
*/
ProcessingInstruction createProcessingInstruction(String target, String data);
/**
* This method creates a new <code>Text</code>.
*
* @param data the data of the new <code>Text</code>
* @return the newly created <code>Text</code>
*/
Text createTextNode(String data);
/**
* This method retrieves the document element. Each document has at most one
* <code>Element</code> as its direct child, and this node is returned if it
* exists. <code>null</code> is returned otherwise.
*
* @return the document element of this <code>Document</code>
*/
Element getDocumentElement();
/**
* This method retrieves the unique descendent elements which has an id of
* <code>elementId</code>. Note the attribute which is used as an ID must
* be supplied in the DTD of the document. It is not sufficient to give the
* <code>Element</code> to be retrieved an attribute named 'id'.
*
* @return the <code>Element</code> which has an id of
* <code>elementId</code> and belongs to this <code>Document</code>
*/
Element getElementById(String elementId);
/**
* This method retrieves any descendent elements which have a tag name of
* <code>tagname</code>.
*
* @return the <code>NodeList</code> of elements which has a tag name of
* <code>tagname</code> and belong to this <code>Document</code>
*/
NodeList getElementsByTagName(String tagname);
/**
* This method imports a node into the current <code>Document</code>.
*
* @param deep whether to recurse to children
* @return the node <code>Node</code> imported
*/
Node importNode(Node importedNode, boolean deep);
}