domimpl.java

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

JAVA
173
字号
/* * 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 java.util.Vector;import org.w3c.dom.*;/** * <p> "DOMImplementation" implementation. </p> * * <p> At this writing, the following features are supported: "XML" (L1, L2), * "Events" (L2), "MutationEvents" (L2), "USER-Events" (a conformant extension), * "HTMLEvents" (L2), "UIEvents" (L2), "Traversal" (L2).  It is possible to * compile the package so it doesn't support some of these features (notably, * Traversal). * * @author David Brownell  */public class DomImpl implements DOMImplementation{    /**     * Constructs a DOMImplementation object which supports     * "XML" and other DOM Level 2 features.     */    public DomImpl () {}    /**     * <b>DOM L1</b>     * Returns true if the specified feature and version are     * supported.  Note that the case of the feature name is ignored.     */    public boolean hasFeature (String name, String version)    {	name = name.toLowerCase ();	if ("xml".equals (name) || "core".equals (name)) {	    if (version == null || version.equals (""))		return true;	    if ("1.0".equals (version))		return true;	    if ("2.0".equals (version))		return true;	} else if ("events".equals (name)		|| "mutationevents".equals (name)		|| "uievents".equals (name)		// || "mouseevents".equals (name)		|| "htmlevents".equals (name)		) {	    if (version == null || version.equals (""))		return true;	    if ("2.0".equals (version))		return true;		// Extension:  "USER-" prefix event types can	// be created and passed through the DOM.	} else if ("user-events".equals (name)) {	    if (version == null || version.equals (""))		return true;	    if ("0.1".equals (version))		return true;	// NOTE:  "hasFeature" for events is here interpreted to	// mean the DOM can manufacture those sorts of events,	// since actually choosing to report the events is more	// often part of the environment or application.  It's	// only really an issue for mutation events.	} else if (DomNode.reportMutations		    && "traversal".equals (name)) {		// Note:  nyet tree walker support ...		if (version == null || version.equals (""))		    return true;		if ("2.0".equals (version))		    return true;	}	// views	// stylesheets	// css, css2	// range	return false;    }    /**     * <b>DOM L2</b>     * Creates and returns a DocumentType, associated with this     * implementation.  This DocumentType can have no associated     * objects (notations, entities) until the DocumentType is     * first associated with a document.     *     * <p> Note that there is no implication that this DTD will     * be parsed by the DOM, or ever have contents.  Moreover, the     * DocumentType created here can only be added to a document by     * the createDocument method (below).  <em>That means that the only     * portable way to create a Document object is to start parsing,     * queue comment and processing instruction (PI) nodes, and then only     * create a DOM Document after <b>(a)</b> it's known if a DocumentType     * object is needed, and <b>(b) the name and namespace of the root     * element is known.  Queued comment and PI nodes would then be     * inserted appropriately in the document prologue, both before and     * after the DTD node, and additional attributes assigned to the     * root element.</em>     * (One hopes that the final DOM REC fixes this serious botch.)     */    public DocumentType createDocumentType (	String rootName,	String publicId,	String systemId	// CR2 deleted internal subset, ensuring DocumentType	// is 100% useless instead of just 90% so.    ) {	DomDocument.verifyNamespaceName (rootName);	return new DomDoctype (this, rootName, publicId, systemId, null);    }    /**     * <b>DOM L2</b>     * Creates and returns a Document, populated only with a root element and     * optionally a document type (if that was provided).     */    public Document createDocument (	String namespaceURI,	String rootName,	DocumentType doctype    ) {	Document	doc = new DomDocument (this);	Element		root;		root = doc.createElementNS (namespaceURI, rootName);	if (rootName.startsWith ("xmlns:"))	    throw new DomEx (DomEx.NAMESPACE_ERR,		"xmlns is reserved", null, 0);	// Bleech -- L2 seemingly _requires_ omission of xmlns attributes.	if (doctype != null)	    doc.appendChild (doctype);		// handles WRONG_DOCUMENT error	doc.appendChild (root);	return doc;    }}

⌨️ 快捷键说明

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