domnsnode.java

来自「kaffe Java 解释器语言,源码,Java的子集系统,开放源代码」· Java 代码 · 共 162 行

JAVA
162
字号
/* * Copyright (C) 1999-2001 David Brownell *  * This file is part of GNU JAXP, a library. * * GNU JAXP is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. *  * GNU JAXP 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 General Public License for more details. *  * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA * * As a special exception, if you link this library with other files to * produce an executable, this library does not by itself cause the * resulting executable to be covered by the GNU General Public License. * This exception does not however invalidate any other reasons why the * executable file might be covered by the GNU General Public License.  */package gnu.xml.dom;import org.w3c.dom.*;/** * <p> Abstract implemention of namespace support.  This facilitates * sharing code for attribute and element nodes. * * @author David Brownell  */public abstract class DomNsNode extends DomNode{    private String		name;		// changed by setPrefix    private final String	namespace;    /**     * Constructs a node associated with the specified document, and     * with the specified namespace information.     *     * @param owner The document with which this entity is associated     * @param namespaceURI Combined with the local part of the name,     *	this identifies a type of element or attribute; may be null.     *  If this is the empty string, it is reassigned as null so that     *  applications only need to test that case.     * @param name Name of this node, which may include a prefix     */    // package private    DomNsNode (Document owner, String namespaceURI, String name)    {	super (owner);	this.name = name;	if ("".equals (namespaceURI))	    namespaceURI = null;	this.namespace = namespaceURI;    }    /**     * <b>DOM L1</b>     * Returns the node's name, including any namespace prefix.     */    final public String getNodeName ()    {	return name;    }    /**     * <b>DOM L2</b>     * Returns the node's namespace URI     * <em>or null</em> if the node name is not namespace scoped.     */    final public String getNamespaceURI ()    {	return namespace;    }    /**     * <b>DOM L2</b>     * Returns any prefix part of the node's name (before any colon).     */    public String getPrefix ()    {	if (namespace == null)	    return null;	int index = name.indexOf (':');	if (index < 0)	    return null;	else	    return name.substring (0, index);    }    /**     * <b>DOM L2</b>     * Assigns the prefix part of the node's name (before any colon).     */    public void setPrefix (String prefix)    {	String local = getLocalName ();	if (isReadonly ())	    throw new DomEx (DomEx.NO_MODIFICATION_ALLOWED_ERR);	if (prefix == null) {	    name = local;	    return;	} else if (namespace == null)	    throw new DomEx (DomEx.NAMESPACE_ERR,		"can't set prefix, node has no namespace URI", this, 0);	DomDocument.verifyXmlName (prefix);	if (prefix.indexOf (':') != -1)	    throw new DomEx (DomEx.NAMESPACE_ERR,		"illegal prefix " + prefix, this, 0);	if ("xml".equals (prefix)		&& !DomDocument.xmlNamespace.equals (namespace))	    throw new DomEx (DomEx.NAMESPACE_ERR,		"xml namespace is always " + DomDocument.xmlNamespace, this, 0);	if ("xmlns".equals (prefix)) {	    if (namespace != null || getNodeType () != ATTRIBUTE_NODE)		throw new DomEx (DomEx.NAMESPACE_ERR,			"xmlns attribute prefix is reserved", this, 0);	} else if (getNodeType () == ATTRIBUTE_NODE		&& ("xmlns".equals (name) || name.startsWith ("xmlns:")))	    throw new DomEx (DomEx.NAMESPACE_ERR,		    "namespace declarations can't change names", this, 0);	name = prefix + ':' + local;    }    /**     * <b>DOM L2</b>     * Returns the local part of the node's name (after any colon),     * <em>or null</em> if the node name is not namespace scoped.     */    public String getLocalName ()    {	if (namespace == null)	    return null;	int index = name.indexOf (':');	if (index < 0)	    return name;	else	    return name.substring (index + 1);    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?