blob: ee44d1e9d76cee76af0b575c3c0619ae3a859b9a [file] [log] [blame]
/*
* $Id$
*
* The Apache Software License, Version 1.1
*
*
* Copyright (c) 2000 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. 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.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Crimson" and "Apache Software Foundation" must
* not be used to endorse or promote products derived from this
* software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* nor may "Apache" appear in their name, without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 APACHE SOFTWARE FOUNDATION OR
* ITS 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.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation and was
* originally based on software copyright (c) 1999, Sun Microsystems, Inc.,
* http://www.sun.com. For more information on the Apache Software
* Foundation, please see <http://www.apache.org/>.
*/
package org.apache.xerces.tree;
import org.w3c.dom.Node;
/**
* This interface defines accessors to inherited attributes of nodes,
* and provides support for using XML Namespaces.
*
* @author David Brownell
* @version $Revision$
*/
public interface NodeEx extends Node, XmlWritable
{
/**
* Returns the value of a given attribute, tracing up through
* ancestors if needed. In the XML standard, two attributes are
* inherited: <em>xml:lang</em> and <em>xml:space</em>. A very
* similar mechanism is involved with Cascading Style Sheets (CSS).
* XML Namespaces also use inheritance, using attributes with
* names like <em>xmlns:foo</em> to declare namespace prefixes.
*
* @param name The name of the attribute to be found. Colons in
* this are ignored.
* @return the value of the identified attribute, or null if no
* such attribute is found.
*/
public String getInheritedAttribute (String name);
/**
* Returns the value of a given attribute, tracing up through
* ancestors if needed and conforming to the XML Namespaces
* draft for associating URIs with name prefixes.
*
* @param uri The namespace for the name; may be null to indicate
* the document's default namespace.
* @param name The "local part" of the name, without a colon.
* @return the value of the identified attribute, or null if no
* such attribute is found.
*/
public String getInheritedAttribute (String uri, String name);
/**
* Returns the language id (value of <code>xml:lang</code>
* attribute) applicable to this node, if known. Traces up
* through ancestors as needed.
* @return the value of the <em>xml:lang</em> attribute, or
* null if no such attribute is found.
*/
public String getLanguage ();
/**
* Returns the index of the node in the list of children, such
* that <em>item()</em> will return that child.
*
* @param maybeChild the node which may be a child of this one
* @return the index of the node in the set of children, or
* else -1 if that node is not a child of this node.
*/
public int getIndexOf (Node maybeChild);
/**
* Sets the node to be readonly; applies recursively to the children
* of this node if the parameter is true.
*
* @param deep If <code> true </code> recursively set the nodes in the
* subtree under the current node to be read only.
* If <code> false </code> then set only the current node to be
* readonly
*/
public void setReadonly (boolean deep);
/**
* Method to allow easy determination of whether a node is read only.
*
* @return <code> true </code> if the node is read only
*/
public boolean isReadonly ();
}