org.w3c.dom.ls.DOMInputSource Maven / Gradle / Ivy
/*
* Copyright (c) 2002 World Wide Web Consortium,
* (Massachusetts Institute of Technology, Institut National de
* Recherche en Informatique et en Automatique, Keio University). All
* Rights Reserved. This program is distributed under the W3C's Software
* Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details.
*/
package org.w3c.dom.ls;
/**
* DOM Level 3 WD Experimental:
* The DOM Level 3 specification is at the stage
* of Working Draft, which represents work in
* progress and thus may be updated, replaced,
* or obsoleted by other documents at any time.
* This interface represents a single input source for an XML entity.
*
This interface 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 DOMEntityResolver.resolveEntity
* method. There are at least three places where DOMInputSource is passed
* to the parser (parseWithContext).
*
The DOMBuilder
will use the DOMInputSource
* 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.
*
A DOMInputSource
object belongs to the application: the
* parser shall never modify it in any way (it may modify a copy if
* necessary). Even though all attributes in this interface are writable
* the DOM implementation is expected to never mutate a DOMInputSource.
*
See also the Document Object Model (DOM) Level 3 Load
and Save Specification.
*/
public interface DOMInputSource {
/**
* 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 attribute. Setting the encoding in this
* way will override any encoding specified in the XML declaration
* itself.
*/
public java.io.InputStream getByteStream();
/**
* 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 attribute. Setting the encoding in this
* way will override any encoding specified in the XML declaration
* itself.
*/
public void setByteStream(java.io.InputStream 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 java.io.Reader getCharacterStream();
/**
* 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(java.io.Reader 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();
/**
* 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);
/**
* 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 declaration or the Text declaration, or an encoding obtained
* from a higher level protocol, such as HTTP .
*/
public String getEncoding();
/**
* 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 declaration or the Text declaration, or an encoding obtained
* from a higher level protocol, such as HTTP .
*/
public void setEncoding(String 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();
/**
* 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);
/**
* 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();
/**
* 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);
/**
* 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();
/**
* 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);
}