coredomimplementationimpl.java

来自「JAVA的一些源码 JAVA2 STANDARD EDITION DEVELO」· Java 代码 · 共 461 行 · 第 1/2 页

JAVA
461
字号
        // check local part        if (!XMLChar.isNCNameStart(qname.charAt(start))) {            // REVISIT: add qname parameter to the message            String msg =                DOMMessageFormatter.formatMessage(                    DOMMessageFormatter.DOM_DOMAIN,                    "INVALID_CHARACTER_ERR",                    null);            throw new DOMException(DOMException.INVALID_CHARACTER_ERR, msg);        }        for (int i = start + 1; i < length; i++) {            if (!XMLChar.isNCName(qname.charAt(i))) {                String msg =                    DOMMessageFormatter.formatMessage(                        DOMMessageFormatter.DOM_DOMAIN,                        "INVALID_CHARACTER_ERR",                        null);                throw new DOMException(DOMException.INVALID_CHARACTER_ERR, msg);            }        }    }	/**	 * Introduced in DOM Level 2. <p>	 *	 * Creates an XML Document object of the specified type with its document	 * element.	 *	 * @param namespaceURI     The namespace URI of the document	 *                         element to create, or null.	 * @param qualifiedName    The qualified name of the document	 *                         element to create.	 * @param doctype          The type of document to be created or null.<p>	 *	 *                         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)){			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.XML11Configuration",				schemaType);		}		else {			// create default parser configuration validating against XMLSchemas			return new DOMParserImpl(				"com.sun.org.apache.xerces.internal.parsers.XML11Configuration",				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();	} 	synchronized Object getDTDValidator() {	 return ObjectFactory.newInstance( "com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator", ObjectFactory.findClassLoader(), true); 	}	//	// Protected methods	//	/** NON-DOM: retrieve validator. */	synchronized RevalidationHandler getValidator(String schemaType) {		// REVISIT: implement retrieving DTD validator        if (freeValidatorIndex < 0) {            // create new validator - we should not attempt            // to restrict the number of validation handlers being            // requested            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;	}	/** NON-DOM: release validator */	synchronized void releaseValidator(String schemaType,                                         RevalidationHandler validator) {       // REVISIT: implement support for DTD validators as well       ++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;	}       /** 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 + -
显示快捷键?