All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.xerces.dom.DOMInputImpl Maven / Gradle / Ivy

Go to download

Xerces2 is the next generation of high performance, fully compliant XML parsers in the Apache Xerces family. This new version of Xerces introduces the Xerces Native Interface (XNI), a complete framework for building parser components and configurations that is extremely modular and easy to program. The Apache Xerces2 parser is the reference implementation of XNI but other parser components, configurations, and parsers can be written using the Xerces Native Interface. For complete design and implementation documents, refer to the XNI Manual. Xerces2 is a fully conforming XML Schema 1.0 processor. A partial experimental implementation of the XML Schema 1.1 Structures and Datatypes Working Drafts (December 2009) and an experimental implementation of the XML Schema Definition Language (XSD): Component Designators (SCD) Candidate Recommendation (January 2010) are provided for evaluation. For more information, refer to the XML Schema page. Xerces2 also provides a complete implementation of the Document Object Model Level 3 Core and Load/Save W3C Recommendations and provides a complete implementation of the XML Inclusions (XInclude) W3C Recommendation. It also provides support for OASIS XML Catalogs v1.1. Xerces2 is able to parse documents written according to the XML 1.1 Recommendation, except that it does not yet provide an option to enable normalization checking as described in section 2.13 of this specification. It also handles namespaces according to the XML Namespaces 1.1 Recommendation, and will correctly serialize XML 1.1 documents if the DOM level 3 load/save APIs are in use.

The newest version!
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.xerces.dom;

import java.io.InputStream;
import java.io.Reader;

import org.w3c.dom.ls.LSInput;

/**
 * This Class DOMInputImpl represents a single input source for an XML entity.
 * 

This Class allows an application to encapsulate information about * an input source in a single object, which may include a public * identifier, a system identifier, a byte stream (possibly with a specified * encoding), and/or a character stream. *

The exact definitions of a byte stream and a character stream are * binding dependent. *

There are two places that the application will deliver this input * source to the parser: as the argument to the parse method, * or as the return value of the DOMResourceResolver.resolveEntity * method. *

The DOMParser will use the LSInput * object to determine how to read XML input. If there is a character stream * available, the parser will read that stream directly; if not, the parser * will use a byte stream, if available; if neither a character stream nor a * byte stream is available, the parser will attempt to open a URI * connection to the resource identified by the system identifier. *

An LSInput object belongs to the application: the * parser shall never modify it in any way (it may modify a copy if * necessary). Eventhough all attributes in this interface are writable the * DOM implementation is expected to never mutate a LSInput. *

See also the Document Object Model (DOM) Level 3 Abstract Schemas and Load and Save Specification. * * @xerces.internal * * @author Gopal Sharma, SUN Microsystems Inc. * @version $Id: DOMInputImpl.java 699892 2008-09-28 21:08:27Z mrglavas $ */ // REVISIT: // 1. it should be possible to do the following // DOMInputImpl extends XMLInputSource implements LSInput // 2. we probably need only the default constructor. -- el public class DOMInputImpl implements LSInput { // // Data // protected String fPublicId = null; protected String fSystemId = null; protected String fBaseSystemId = null; protected InputStream fByteStream = null; protected Reader fCharStream = null; protected String fData = null; protected String fEncoding = null; protected boolean fCertifiedText = false; /** * Default Constructor, constructs an input source * * */ public DOMInputImpl() {} /** * Constructs an input source from just the public and system * identifiers, leaving resolution of the entity and opening of * the input stream up to the caller. * * @param publicId The public identifier, if known. * @param systemId The system identifier. This value should * always be set, if possible, and can be * relative or absolute. If the system identifier * is relative, then the base system identifier * should be set. * @param baseSystemId The base system identifier. This value should * always be set to the fully expanded URI of the * base system identifier, if possible. */ public DOMInputImpl(String publicId, String systemId, String baseSystemId) { fPublicId = publicId; fSystemId = systemId; fBaseSystemId = baseSystemId; } // DOMInputImpl(String,String,String) /** * Constructs an input source from a byte stream. * * @param publicId The public identifier, if known. * @param systemId The system identifier. This value should * always be set, if possible, and can be * relative or absolute. If the system identifier * is relative, then the base system identifier * should be set. * @param baseSystemId The base system identifier. This value should * always be set to the fully expanded URI of the * base system identifier, if possible. * @param byteStream The byte stream. * @param encoding The encoding of the byte stream, if known. */ public DOMInputImpl(String publicId, String systemId, String baseSystemId, InputStream byteStream, String encoding) { fPublicId = publicId; fSystemId = systemId; fBaseSystemId = baseSystemId; fByteStream = byteStream; fEncoding = encoding; } // DOMInputImpl(String,String,String,InputStream,String) /** * Constructs an input source from a character stream. * * @param publicId The public identifier, if known. * @param systemId The system identifier. This value should * always be set, if possible, and can be * relative or absolute. If the system identifier * is relative, then the base system identifier * should be set. * @param baseSystemId The base system identifier. This value should * always be set to the fully expanded URI of the * base system identifier, if possible. * @param charStream The character stream. * @param encoding The original encoding of the byte stream * used by the reader, if known. */ public DOMInputImpl(String publicId, String systemId, String baseSystemId, Reader charStream, String encoding) { fPublicId = publicId; fSystemId = systemId; fBaseSystemId = baseSystemId; fCharStream = charStream; fEncoding = encoding; } // DOMInputImpl(String,String,String,Reader,String) /** * Constructs an input source from a String. * * @param publicId The public identifier, if known. * @param systemId The system identifier. This value should * always be set, if possible, and can be * relative or absolute. If the system identifier * is relative, then the base system identifier * should be set. * @param baseSystemId The base system identifier. This value should * always be set to the fully expanded URI of the * base system identifier, if possible. * @param data The String Data. * @param encoding The original encoding of the byte stream * used by the reader, if known. */ public DOMInputImpl(String publicId, String systemId, String baseSystemId, String data, String encoding) { fPublicId = publicId; fSystemId = systemId; fBaseSystemId = baseSystemId; fData = data; fEncoding = encoding; } // DOMInputImpl(String,String,String,String,String) /** * An attribute of a language-binding dependent type that represents a * stream of bytes. *
The parser will ignore this if there is also a character stream * specified, but it will use a byte stream in preference to opening a * URI connection itself. *
If the application knows the character encoding of the byte stream, * it should set the encoding property. Setting the encoding in this way * will override any encoding specified in the XML declaration itself. */ public InputStream getByteStream(){ return fByteStream; } /** * An attribute of a language-binding dependent type that represents a * stream of bytes. *
The parser will ignore this if there is also a character stream * specified, but it will use a byte stream in preference to opening a * URI connection itself. *
If the application knows the character encoding of the byte stream, * it should set the encoding property. Setting the encoding in this way * will override any encoding specified in the XML declaration itself. */ public void setByteStream(InputStream byteStream){ fByteStream = byteStream; } /** * An attribute of a language-binding dependent type that represents a * stream of 16-bit units. Application must encode the stream using * UTF-16 (defined in and Amendment 1 of ). *
If a character stream is specified, the parser will ignore any byte * stream and will not attempt to open a URI connection to the system * identifier. */ public Reader getCharacterStream(){ return fCharStream; } /** * An attribute of a language-binding dependent type that represents a * stream of 16-bit units. Application must encode the stream using * UTF-16 (defined in and Amendment 1 of ). *
If a character stream is specified, the parser will ignore any byte * stream and will not attempt to open a URI connection to the system * identifier. */ public void setCharacterStream(Reader characterStream){ fCharStream = characterStream; } /** * A string attribute that represents a sequence of 16 bit units (utf-16 * encoded characters). *
If string data is available in the input source, the parser will * ignore the character stream and the byte stream and will not attempt * to open a URI connection to the system identifier. */ public String getStringData(){ return fData; } /** * A string attribute that represents a sequence of 16 bit units (utf-16 * encoded characters). *
If string data is available in the input source, the parser will * ignore the character stream and the byte stream and will not attempt * to open a URI connection to the system identifier. */ public void setStringData(String stringData){ fData = stringData; } /** * The character encoding, if known. The encoding must be a string * acceptable for an XML encoding declaration ( section 4.3.3 "Character * Encoding in Entities"). *
This attribute has no effect when the application provides a * character stream. For other sources of input, an encoding specified * by means of this attribute will override any encoding specified in * the XML claration or the Text Declaration, or an encoding obtained * from a higher level protocol, such as HTTP . */ public String getEncoding(){ return fEncoding; } /** * The character encoding, if known. The encoding must be a string * acceptable for an XML encoding declaration ( section 4.3.3 "Character * Encoding in Entities"). *
This attribute has no effect when the application provides a * character stream. For other sources of input, an encoding specified * by means of this attribute will override any encoding specified in * the XML claration or the Text Declaration, or an encoding obtained * from a higher level protocol, such as HTTP . */ public void setEncoding(String encoding){ fEncoding = encoding; } /** * The public identifier for this input source. The public identifier is * always optional: if the application writer includes one, it will be * provided as part of the location information. */ public String getPublicId(){ return fPublicId; } /** * The public identifier for this input source. The public identifier is * always optional: if the application writer includes one, it will be * provided as part of the location information. */ public void setPublicId(String publicId){ fPublicId = publicId; } /** * The system identifier, a URI reference , for this input source. The * system identifier is optional if there is a byte stream or a * character stream, but it is still useful to provide one, since the * application can use it to resolve relative URIs and can include it in * error messages and warnings (the parser will attempt to fetch the * ressource identifier by the URI reference only if there is no byte * stream or character stream specified). *
If the application knows the character encoding of the object * pointed to by the system identifier, it can register the encoding by * setting the encoding attribute. *
If the system ID is a relative URI reference (see section 5 in ), * the behavior is implementation dependent. */ public String getSystemId(){ return fSystemId; } /** * The system identifier, a URI reference , for this input source. The * system identifier is optional if there is a byte stream or a * character stream, but it is still useful to provide one, since the * application can use it to resolve relative URIs and can include it in * error messages and warnings (the parser will attempt to fetch the * ressource identifier by the URI reference only if there is no byte * stream or character stream specified). *
If the application knows the character encoding of the object * pointed to by the system identifier, it can register the encoding by * setting the encoding attribute. *
If the system ID is a relative URI reference (see section 5 in ), * the behavior is implementation dependent. */ public void setSystemId(String systemId){ fSystemId = systemId; } /** * The base URI to be used (see section 5.1.4 in ) for resolving relative * URIs to absolute URIs. If the baseURI is itself a relative URI, the * behavior is implementation dependent. */ public String getBaseURI(){ return fBaseSystemId; } /** * The base URI to be used (see section 5.1.4 in ) for resolving relative * URIs to absolute URIs. If the baseURI is itself a relative URI, the * behavior is implementation dependent. */ public void setBaseURI(String baseURI){ fBaseSystemId = baseURI; } /** * If set to true, assume that the input is certified (see section 2.13 * in [XML 1.1]) when * parsing [XML 1.1]. */ public boolean getCertifiedText(){ return fCertifiedText; } /** * If set to true, assume that the input is certified (see section 2.13 * in [XML 1.1]) when * parsing [XML 1.1]. */ public void setCertifiedText(boolean certifiedText){ fCertifiedText = certifiedText; } }// class DOMInputImpl





© 2015 - 2024 Weber Informatics LLC | Privacy Policy