Path: blob/aarch64-shenandoah-jdk8u272-b10/jaxp/src/org/w3c/dom/ls/LSInput.java
86410 views
/*1* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.2*3* This code is free software; you can redistribute it and/or modify it4* under the terms of the GNU General Public License version 2 only, as5* published by the Free Software Foundation. Oracle designates this6* particular file as subject to the "Classpath" exception as provided7* by Oracle in the LICENSE file that accompanied this code.8*9* This code is distributed in the hope that it will be useful, but WITHOUT10* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or11* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License12* version 2 for more details (a copy is included in the LICENSE file that13* accompanied this code).14*15* You should have received a copy of the GNU General Public License version16* 2 along with this work; if not, write to the Free Software Foundation,17* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.18*19* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA20* or visit www.oracle.com if you need additional information or have any21* questions.22*/2324/*25* This file is available under and governed by the GNU General Public26* License version 2 only, as published by the Free Software Foundation.27* However, the following notice accompanied the original version of this28* file and, per its terms, should not be removed:29*30* Copyright (c) 2004 World Wide Web Consortium,31*32* (Massachusetts Institute of Technology, European Research Consortium for33* Informatics and Mathematics, Keio University). All Rights Reserved. This34* work is distributed under the W3C(r) Software License [1] in the hope that35* it will be useful, but WITHOUT ANY WARRANTY; without even the implied36* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.37*38* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-2002123139*/4041package org.w3c.dom.ls;4243/**44* This interface represents an input source for data.45* <p> This interface allows an application to encapsulate information about46* an input source in a single object, which may include a public47* identifier, a system identifier, a byte stream (possibly with a specified48* encoding), a base URI, and/or a character stream.49* <p> The exact definitions of a byte stream and a character stream are50* binding dependent.51* <p> The application is expected to provide objects that implement this52* interface whenever such objects are needed. The application can either53* provide its own objects that implement this interface, or it can use the54* generic factory method <code>DOMImplementationLS.createLSInput()</code>55* to create objects that implement this interface.56* <p> The <code>LSParser</code> will use the <code>LSInput</code> object to57* determine how to read data. The <code>LSParser</code> will look at the58* different inputs specified in the <code>LSInput</code> in the following59* order to know which one to read from, the first one that is not null and60* not an empty string will be used:61* <ol>62* <li> <code>LSInput.characterStream</code>63* </li>64* <li>65* <code>LSInput.byteStream</code>66* </li>67* <li> <code>LSInput.stringData</code>68* </li>69* <li>70* <code>LSInput.systemId</code>71* </li>72* <li> <code>LSInput.publicId</code>73* </li>74* </ol>75* <p> If all inputs are null, the <code>LSParser</code> will report a76* <code>DOMError</code> with its <code>DOMError.type</code> set to77* <code>"no-input-specified"</code> and its <code>DOMError.severity</code>78* set to <code>DOMError.SEVERITY_FATAL_ERROR</code>.79* <p> <code>LSInput</code> objects belong to the application. The DOM80* implementation will never modify them (though it may make copies and81* modify the copies, if necessary).82* <p>See also the <a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407'>Document Object Model (DOM) Level 3 Load83and Save Specification</a>.84*/85public interface LSInput {86/**87* An attribute of a language and binding dependent type that represents88* a stream of 16-bit units. The application must encode the stream89* using UTF-16 (defined in [Unicode] and in [ISO/IEC 10646]). It is not a requirement to have an XML declaration when90* using character streams. If an XML declaration is present, the value91* of the encoding attribute will be ignored.92*/93public java.io.Reader getCharacterStream();94/**95* An attribute of a language and binding dependent type that represents96* a stream of 16-bit units. The application must encode the stream97* using UTF-16 (defined in [Unicode] and in [ISO/IEC 10646]). It is not a requirement to have an XML declaration when98* using character streams. If an XML declaration is present, the value99* of the encoding attribute will be ignored.100*/101public void setCharacterStream(java.io.Reader characterStream);102103/**104* An attribute of a language and binding dependent type that represents105* a stream of bytes.106* <br> If the application knows the character encoding of the byte107* stream, it should set the encoding attribute. Setting the encoding in108* this way will override any encoding specified in an XML declaration109* in the data.110*/111public java.io.InputStream getByteStream();112/**113* An attribute of a language and binding dependent type that represents114* a stream of bytes.115* <br> If the application knows the character encoding of the byte116* stream, it should set the encoding attribute. Setting the encoding in117* this way will override any encoding specified in an XML declaration118* in the data.119*/120public void setByteStream(java.io.InputStream byteStream);121122/**123* String data to parse. If provided, this will always be treated as a124* sequence of 16-bit units (UTF-16 encoded characters). It is not a125* requirement to have an XML declaration when using126* <code>stringData</code>. If an XML declaration is present, the value127* of the encoding attribute will be ignored.128*/129public String getStringData();130/**131* String data to parse. If provided, this will always be treated as a132* sequence of 16-bit units (UTF-16 encoded characters). It is not a133* requirement to have an XML declaration when using134* <code>stringData</code>. If an XML declaration is present, the value135* of the encoding attribute will be ignored.136*/137public void setStringData(String stringData);138139/**140* The system identifier, a URI reference [<a href='http://www.ietf.org/rfc/rfc2396.txt'>IETF RFC 2396</a>], for this141* input source. The system identifier is optional if there is a byte142* stream, a character stream, or string data. It is still useful to143* provide one, since the application will use it to resolve any144* relative URIs and can include it in error messages and warnings. (The145* LSParser will only attempt to fetch the resource identified by the146* URI reference if there is no other input available in the input147* source.)148* <br> If the application knows the character encoding of the object149* pointed to by the system identifier, it can set the encoding using150* the <code>encoding</code> attribute.151* <br> If the specified system ID is a relative URI reference (see152* section 5 in [<a href='http://www.ietf.org/rfc/rfc2396.txt'>IETF RFC 2396</a>]), the DOM153* implementation will attempt to resolve the relative URI with the154* <code>baseURI</code> as the base, if that fails, the behavior is155* implementation dependent.156*/157public String getSystemId();158/**159* The system identifier, a URI reference [<a href='http://www.ietf.org/rfc/rfc2396.txt'>IETF RFC 2396</a>], for this160* input source. The system identifier is optional if there is a byte161* stream, a character stream, or string data. It is still useful to162* provide one, since the application will use it to resolve any163* relative URIs and can include it in error messages and warnings. (The164* LSParser will only attempt to fetch the resource identified by the165* URI reference if there is no other input available in the input166* source.)167* <br> If the application knows the character encoding of the object168* pointed to by the system identifier, it can set the encoding using169* the <code>encoding</code> attribute.170* <br> If the specified system ID is a relative URI reference (see171* section 5 in [<a href='http://www.ietf.org/rfc/rfc2396.txt'>IETF RFC 2396</a>]), the DOM172* implementation will attempt to resolve the relative URI with the173* <code>baseURI</code> as the base, if that fails, the behavior is174* implementation dependent.175*/176public void setSystemId(String systemId);177178/**179* The public identifier for this input source. This may be mapped to an180* input source using an implementation dependent mechanism (such as181* catalogues or other mappings). The public identifier, if specified,182* may also be reported as part of the location information when errors183* are reported.184*/185public String getPublicId();186/**187* The public identifier for this input source. This may be mapped to an188* input source using an implementation dependent mechanism (such as189* catalogues or other mappings). The public identifier, if specified,190* may also be reported as part of the location information when errors191* are reported.192*/193public void setPublicId(String publicId);194195/**196* The base URI to be used (see section 5.1.4 in [<a href='http://www.ietf.org/rfc/rfc2396.txt'>IETF RFC 2396</a>]) for197* resolving a relative <code>systemId</code> to an absolute URI.198* <br> If, when used, the base URI is itself a relative URI, an empty199* string, or null, the behavior is implementation dependent.200*/201public String getBaseURI();202/**203* The base URI to be used (see section 5.1.4 in [<a href='http://www.ietf.org/rfc/rfc2396.txt'>IETF RFC 2396</a>]) for204* resolving a relative <code>systemId</code> to an absolute URI.205* <br> If, when used, the base URI is itself a relative URI, an empty206* string, or null, the behavior is implementation dependent.207*/208public void setBaseURI(String baseURI);209210/**211* The character encoding, if known. The encoding must be a string212* acceptable for an XML encoding declaration ([<a href='http://www.w3.org/TR/2004/REC-xml-20040204'>XML 1.0</a>] section213* 4.3.3 "Character Encoding in Entities").214* <br> This attribute has no effect when the application provides a215* character stream or string data. For other sources of input, an216* encoding specified by means of this attribute will override any217* encoding specified in the XML declaration or the Text declaration, or218* an encoding obtained from a higher level protocol, such as HTTP [<a href='http://www.ietf.org/rfc/rfc2616.txt'>IETF RFC 2616</a>].219*/220public String getEncoding();221/**222* The character encoding, if known. The encoding must be a string223* acceptable for an XML encoding declaration ([<a href='http://www.w3.org/TR/2004/REC-xml-20040204'>XML 1.0</a>] section224* 4.3.3 "Character Encoding in Entities").225* <br> This attribute has no effect when the application provides a226* character stream or string data. For other sources of input, an227* encoding specified by means of this attribute will override any228* encoding specified in the XML declaration or the Text declaration, or229* an encoding obtained from a higher level protocol, such as HTTP [<a href='http://www.ietf.org/rfc/rfc2616.txt'>IETF RFC 2616</a>].230*/231public void setEncoding(String encoding);232233/**234* If set to true, assume that the input is certified (see section 2.13235* in [<a href='http://www.w3.org/TR/2004/REC-xml11-20040204/'>XML 1.1</a>]) when236* parsing [<a href='http://www.w3.org/TR/2004/REC-xml11-20040204/'>XML 1.1</a>].237*/238public boolean getCertifiedText();239/**240* If set to true, assume that the input is certified (see section 2.13241* in [<a href='http://www.w3.org/TR/2004/REC-xml11-20040204/'>XML 1.1</a>]) when242* parsing [<a href='http://www.w3.org/TR/2004/REC-xml11-20040204/'>XML 1.1</a>].243*/244public void setCertifiedText(boolean certifiedText);245246}247248249