/* Namespaceable.java


	Purpose: 
	Description: 
	History:
	2001/10/23 23:52:55, Create, Tom M. Yeh.

Copyright (C) 2001 Potix Corporation. All Rights Reserved.

{{IS_RIGHT
	This program is distributed under LGPL Version 2.1 in the hope that
	it will be useful, but WITHOUT ANY WARRANTY.
}}IS_RIGHT
*/
package org.zkoss.idom;

/**
 * Represents a class that supports namespace.
 * It is usually implemented by a class that also implements Item or Group.
 * Currently, only Element and Attribute implement it.
 *
 * @author tomyeh
 * @see Item
 * @see Group
 * @see Attributable
 * @see Binable
 */
public interface Namespaceable {
	/**
	 * Gets the namespace. 
	 *
	 * @return the namespace; never null
	 */
	public Namespace getNamespace();
	/**
	 * Sets the namespace. A null namespace will be converted to
	 * Namespace.NO_NAMESPACE.
	 */
	public void setNamespace(Namespace ns);

	/**
	 * Gets the tag name of this item.
	 * The tag name is also called the fully qualified name -- the name
	 * <i>with</i> the namespace prefix, e.g., prefix:name.
	 *
	 * <p>To get the local name (the name without prefix),
	 * Namespaceable.getLocalName could be used. 
	 */
	public String getTagName();
	/**
	 * Sets the tag name of this item.
	 */
	public void setTagName(String tname);
	/**
	 * Gets the local name of this item.
	 * The local name is the name without prefix.
	 *
	 * <p>To get the tag name (the name with prefix),
	 * Namespaceable.getTagName could be used. 
	 */
	public String getLocalName();
	/**
	 * Sets the local name of this item.
	 */
	public void setLocalName(String lname);
}
