coredomimplementationimpl.java

来自「JAVA 所有包」· Java 代码 · 共 487 行 · 第 1/2 页

JAVA
487
字号
	 *	 *                         When doctype is not null, its	 *                         Node.ownerDocument attribute is set to	 *                         the document being created.	 * @return Document        A new Document object.	 * @throws DOMException    WRONG_DOCUMENT_ERR: Raised if doctype has	 *                         already been used with a different document.	 * @since WD-DOM-Level-2-19990923	 */	public Document createDocument(		String namespaceURI,		String qualifiedName,		DocumentType doctype)		throws DOMException {		if (doctype != null && doctype.getOwnerDocument() != null) {			String msg =				DOMMessageFormatter.formatMessage(					DOMMessageFormatter.DOM_DOMAIN,					"WRONG_DOCUMENT_ERR",					null);			throw new DOMException(DOMException.WRONG_DOCUMENT_ERR, msg);		}		CoreDocumentImpl doc = new CoreDocumentImpl(doctype);		Element e = doc.createElementNS(namespaceURI, qualifiedName);		doc.appendChild(e);		return doc;	}	/**	 * DOM Level 3 WD - Experimental.	 */	public Object getFeature(String feature, String version) {	    if (singleton.hasFeature(feature, version)) {	        if ((feature.equalsIgnoreCase("+XPath"))) {	            try {	                Class xpathClass = ObjectFactory.findProviderClass(	                    "com.sun.org.apache.xpath.internal.domapi.XPathEvaluatorImpl",	                    ObjectFactory.findClassLoader(), true);	                	                // Check if the DOM XPath implementation implements	                // the interface org.w3c.dom.XPathEvaluator	                Class interfaces[] = xpathClass.getInterfaces();	                for (int i = 0; i < interfaces.length; i++) {	                    if (interfaces[i].getName().equals(	                        "org.w3c.dom.xpath.XPathEvaluator")) {	                        return xpathClass.newInstance();	                    }	                }	            } catch (Exception e) {	                return null;	            }	        } else {	            return singleton;	        }	    }	    return null;	}	// DOM L3 LS	/**	 * DOM Level 3 LS CR - Experimental.     * Create a new <code>LSParser</code>. The newly constructed parser may     * then be configured by means of its <code>DOMConfiguration</code>     * object, and used to parse documents by means of its <code>parse</code>     *  method.     * @param mode  The <code>mode</code> argument is either     *   <code>MODE_SYNCHRONOUS</code> or <code>MODE_ASYNCHRONOUS</code>, if     *   <code>mode</code> is <code>MODE_SYNCHRONOUS</code> then the     *   <code>LSParser</code> that is created will operate in synchronous     *   mode, if it's <code>MODE_ASYNCHRONOUS</code> then the     *   <code>LSParser</code> that is created will operate in asynchronous     *   mode.     * @param schemaType  An absolute URI representing the type of the schema     *   language used during the load of a <code>Document</code> using the     *   newly created <code>LSParser</code>. Note that no lexical checking     *   is done on the absolute URI. In order to create a     *   <code>LSParser</code> for any kind of schema types (i.e. the     *   LSParser will be free to use any schema found), use the value     *   <code>null</code>.     * <p ><b>Note:</b>    For W3C XML Schema [<a href='http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/'>XML Schema Part 1</a>]     *   , applications must use the value     *   <code>"http://www.w3.org/2001/XMLSchema"</code>. For XML DTD [<a href='http://www.w3.org/TR/2000/REC-xml-20001006'>XML 1.0</a>],     *   applications must use the value     *   <code>"http://www.w3.org/TR/REC-xml"</code>. Other Schema languages     *   are outside the scope of the W3C and therefore should recommend an     *   absolute URI in order to use this method.     * @return  The newly created <code>LSParser</code> object. This     *   <code>LSParser</code> is either synchronous or asynchronous     *   depending on the value of the <code>mode</code> argument.     * <p ><b>Note:</b>    By default, the newly created <code>LSParser</code>     *    does not contain a <code>DOMErrorHandler</code>, i.e. the value of     *   the "<a href='http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609/core.html#parameter-error-handler'>     *   error-handler</a>" configuration parameter is <code>null</code>. However, implementations     *   may provide a default error handler at creation time. In that case,     *   the initial value of the <code>"error-handler"</code> configuration     *   parameter on the new created <code>LSParser</code> contains a     *   reference to the default error handler.     * @exception DOMException     *    NOT_SUPPORTED_ERR: Raised if the requested mode or schema type is     *   not supported.	 */        public LSParser createLSParser(short mode, String schemaType)		throws DOMException {		if (mode != DOMImplementationLS.MODE_SYNCHRONOUS || (schemaType !=null &&		   !"http://www.w3.org/2001/XMLSchema".equals(schemaType) &&			!"http://www.w3.org/TR/REC-xml".equals(schemaType))) {			String msg =				DOMMessageFormatter.formatMessage(					DOMMessageFormatter.DOM_DOMAIN,					"NOT_SUPPORTED_ERR",					null);			throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);		}		if (schemaType != null			&& schemaType.equals("http://www.w3.org/TR/REC-xml")) {			return new DOMParserImpl(				"com.sun.org.apache.xerces.internal.parsers.DTDConfiguration",				schemaType);		}		else {			// create default parser configuration validating against XMLSchemas			return new DOMParserImpl(				"com.sun.org.apache.xerces.internal.parsers.XIncludeAwareParserConfiguration",				schemaType);		}	}	/**	 * DOM Level 3 LS CR - Experimental.         * Create a new <code>LSSerializer</code> object.         * @return The newly created <code>LSSerializer</code> object.         * <p ><b>Note:</b>    By default, the newly created         * <code>LSSerializer</code> has no <code>DOMErrorHandler</code>,         * i.e. the value of the <code>"error-handler"</code> configuration         * parameter is <code>null</code>. However, implementations may         * provide a default error handler at creation time. In that case, the         * initial value of the <code>"error-handler"</code> configuration         * parameter on the new created <code>LSSerializer</code> contains a         * reference to the default error handler.	 */	public LSSerializer createLSSerializer() {        return new DOMSerializerImpl();    } 	/**	 * DOM Level 3 LS CR - Experimental.         * Create a new empty input source.         * @return  The newly created input object.	 */	public LSInput createLSInput() {		return new DOMInputImpl();	}	//	// Protected methods	//	/** NON-DOM: retrieve validator. */	synchronized RevalidationHandler getValidator(String schemaType) {		// REVISIT: implement retrieving DTD validator        if (schemaType == XMLGrammarDescription.XML_SCHEMA) {            // create new validator - we should not attempt            // to restrict the number of validation handlers being            // requested            if(freeValidatorIndex < 0) {                return (RevalidationHandler) (ObjectFactory                            .newInstance(                                "com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator",                                ObjectFactory.findClassLoader(),                                true));            }            // return first available validator            RevalidationHandler val = validators[freeValidatorIndex];            validators[freeValidatorIndex--] = null;            return val;        }        else if(schemaType == XMLGrammarDescription.XML_DTD) {            if(freeDTDValidatorIndex < 0) {                return (RevalidationHandler) (ObjectFactory                            .newInstance(                                "com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator",                                ObjectFactory.findClassLoader(),                                true));            }            // return first available validator            RevalidationHandler val = dtdValidators[freeDTDValidatorIndex];            dtdValidators[freeDTDValidatorIndex--] = null;            return val;        }        return null;	}	/** NON-DOM: release validator */	synchronized void releaseValidator(String schemaType,                                         RevalidationHandler validator) {       // REVISIT: implement support for DTD validators as well       if(schemaType == XMLGrammarDescription.XML_SCHEMA) {           ++freeValidatorIndex;           if (validators.length == freeValidatorIndex ){                // resize size of the validators                currentSize+=SIZE;                RevalidationHandler newarray[] =  new RevalidationHandler[currentSize];                System.arraycopy(validators, 0, newarray, 0, validators.length);                validators = newarray;           }           validators[freeValidatorIndex]=validator;       }       else if(schemaType == XMLGrammarDescription.XML_DTD) {           ++freeDTDValidatorIndex;           if (dtdValidators.length == freeDTDValidatorIndex ){                // resize size of the validators                currentSize+=SIZE;                RevalidationHandler newarray[] =  new RevalidationHandler[currentSize];                System.arraycopy(dtdValidators, 0, newarray, 0, dtdValidators.length);                dtdValidators = newarray;           }           dtdValidators[freeDTDValidatorIndex]=validator;       }	}       /** NON-DOM:  increment document/doctype counter */       protected synchronized int assignDocumentNumber() {            return ++docAndDoctypeCounter;       }       /** NON-DOM:  increment document/doctype counter */       protected synchronized int assignDocTypeNumber() {            return ++docAndDoctypeCounter;       }    /* DOM Level 3 LS CR - Experimental.     *     * Create a new empty output destination object where     * <code>LSOutput.characterStream</code>,     * <code>LSOutput.byteStream</code>, <code>LSOutput.systemId</code>,     * <code>LSOutput.encoding</code> are null.     * @return  The newly created output object.     */       public LSOutput createLSOutput() {           return new DOMOutputImpl();       }} // class DOMImplementationImpl

⌨️ 快捷键说明

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