OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [classpath/] [external/] [sax/] [org/] [xml/] [sax/] [InputSource.java] - Blame information for rev 768

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 768 jeremybenn
// SAX input source.
2
// http://www.saxproject.org
3
// No warranty; no copyright -- use this as you will.
4
// $Id: InputSource.java,v 1.1 2004/12/23 22:38:42 mark Exp $
5
 
6
package org.xml.sax;
7
 
8
import java.io.Reader;
9
import java.io.InputStream;
10
 
11
/**
12
 * A single input source for an XML entity.
13
 *
14
 * <blockquote>
15
 * <em>This module, both source code and documentation, is in the
16
 * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
17
 * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
18
 * for further information.
19
 * </blockquote>
20
 *
21
 * <p>This class allows a SAX application to encapsulate information
22
 * about an input source in a single object, which may include
23
 * a public identifier, a system identifier, a byte stream (possibly
24
 * with a specified encoding), and/or a character stream.</p>
25
 *
26
 * <p>There are two places that the application can deliver an
27
 * input source to the parser: as the argument to the Parser.parse
28
 * method, or as the return value of the EntityResolver.resolveEntity
29
 * method.</p>
30
 *
31
 * <p>The SAX parser will use the InputSource object to determine how
32
 * to read XML input.  If there is a character stream available, the
33
 * parser will read that stream directly, disregarding any text
34
 * encoding declaration found in that stream.
35
 * If there is no character stream, but there is
36
 * a byte stream, the parser will use that byte stream, using the
37
 * encoding specified in the InputSource or else (if no encoding is
38
 * specified) autodetecting the character encoding using an algorithm
39
 * such as the one in the XML specification.  If neither a character
40
 * stream nor a
41
 * byte stream is available, the parser will attempt to open a URI
42
 * connection to the resource identified by the system
43
 * identifier.</p>
44
 *
45
 * <p>An InputSource object belongs to the application: the SAX parser
46
 * shall never modify it in any way (it may modify a copy if
47
 * necessary).  However, standard processing of both byte and
48
 * character streams is to close them on as part of end-of-parse cleanup,
49
 * so applications should not attempt to re-use such streams after they
50
 * have been handed to a parser.  </p>
51
 *
52
 * @since SAX 1.0
53
 * @author David Megginson
54
 * @version 2.0.1 (sax2r2)
55
 * @see org.xml.sax.XMLReader#parse(org.xml.sax.InputSource)
56
 * @see org.xml.sax.EntityResolver#resolveEntity
57
 * @see java.io.InputStream
58
 * @see java.io.Reader
59
 */
60
public class InputSource {
61
 
62
    /**
63
     * Zero-argument default constructor.
64
     *
65
     * @see #setPublicId
66
     * @see #setSystemId
67
     * @see #setByteStream
68
     * @see #setCharacterStream
69
     * @see #setEncoding
70
     */
71
    public InputSource ()
72
    {
73
    }
74
 
75
 
76
    /**
77
     * Create a new input source with a system identifier.
78
     *
79
     * <p>Applications may use setPublicId to include a
80
     * public identifier as well, or setEncoding to specify
81
     * the character encoding, if known.</p>
82
     *
83
     * <p>If the system identifier is a URL, it must be fully
84
     * resolved (it may not be a relative URL).</p>
85
     *
86
     * @param systemId The system identifier (URI).
87
     * @see #setPublicId
88
     * @see #setSystemId
89
     * @see #setByteStream
90
     * @see #setEncoding
91
     * @see #setCharacterStream
92
     */
93
    public InputSource (String systemId)
94
    {
95
        setSystemId(systemId);
96
    }
97
 
98
 
99
    /**
100
     * Create a new input source with a byte stream.
101
     *
102
     * <p>Application writers should use setSystemId() to provide a base
103
     * for resolving relative URIs, may use setPublicId to include a
104
     * public identifier, and may use setEncoding to specify the object's
105
     * character encoding.</p>
106
     *
107
     * @param byteStream The raw byte stream containing the document.
108
     * @see #setPublicId
109
     * @see #setSystemId
110
     * @see #setEncoding
111
     * @see #setByteStream
112
     * @see #setCharacterStream
113
     */
114
    public InputSource (InputStream byteStream)
115
    {
116
        setByteStream(byteStream);
117
    }
118
 
119
 
120
    /**
121
     * Create a new input source with a character stream.
122
     *
123
     * <p>Application writers should use setSystemId() to provide a base
124
     * for resolving relative URIs, and may use setPublicId to include a
125
     * public identifier.</p>
126
     *
127
     * <p>The character stream shall not include a byte order mark.</p>
128
     *
129
     * @see #setPublicId
130
     * @see #setSystemId
131
     * @see #setByteStream
132
     * @see #setCharacterStream
133
     */
134
    public InputSource (Reader characterStream)
135
    {
136
        setCharacterStream(characterStream);
137
    }
138
 
139
 
140
    /**
141
     * Set the public identifier for this input source.
142
     *
143
     * <p>The public identifier is always optional: if the application
144
     * writer includes one, it will be provided as part of the
145
     * location information.</p>
146
     *
147
     * @param publicId The public identifier as a string.
148
     * @see #getPublicId
149
     * @see org.xml.sax.Locator#getPublicId
150
     * @see org.xml.sax.SAXParseException#getPublicId
151
     */
152
    public void setPublicId (String publicId)
153
    {
154
        this.publicId = publicId;
155
    }
156
 
157
 
158
    /**
159
     * Get the public identifier for this input source.
160
     *
161
     * @return The public identifier, or null if none was supplied.
162
     * @see #setPublicId
163
     */
164
    public String getPublicId ()
165
    {
166
        return publicId;
167
    }
168
 
169
 
170
    /**
171
     * Set the system identifier for this input source.
172
     *
173
     * <p>The system identifier is optional if there is a byte stream
174
     * or a character stream, but it is still useful to provide one,
175
     * since the application can use it to resolve relative URIs
176
     * and can include it in error messages and warnings (the parser
177
     * will attempt to open a connection to the URI only if
178
     * there is no byte stream or character stream specified).</p>
179
     *
180
     * <p>If the application knows the character encoding of the
181
     * object pointed to by the system identifier, it can register
182
     * the encoding using the setEncoding method.</p>
183
     *
184
     * <p>If the system identifier is a URL, it must be fully
185
     * resolved (it may not be a relative URL).</p>
186
     *
187
     * @param systemId The system identifier as a string.
188
     * @see #setEncoding
189
     * @see #getSystemId
190
     * @see org.xml.sax.Locator#getSystemId
191
     * @see org.xml.sax.SAXParseException#getSystemId
192
     */
193
    public void setSystemId (String systemId)
194
    {
195
        this.systemId = systemId;
196
    }
197
 
198
 
199
    /**
200
     * Get the system identifier for this input source.
201
     *
202
     * <p>The getEncoding method will return the character encoding
203
     * of the object pointed to, or null if unknown.</p>
204
     *
205
     * <p>If the system ID is a URL, it will be fully resolved.</p>
206
     *
207
     * @return The system identifier, or null if none was supplied.
208
     * @see #setSystemId
209
     * @see #getEncoding
210
     */
211
    public String getSystemId ()
212
    {
213
        return systemId;
214
    }
215
 
216
 
217
    /**
218
     * Set the byte stream for this input source.
219
     *
220
     * <p>The SAX parser will ignore this if there is also a character
221
     * stream specified, but it will use a byte stream in preference
222
     * to opening a URI connection itself.</p>
223
     *
224
     * <p>If the application knows the character encoding of the
225
     * byte stream, it should set it with the setEncoding method.</p>
226
     *
227
     * @param byteStream A byte stream containing an XML document or
228
     *        other entity.
229
     * @see #setEncoding
230
     * @see #getByteStream
231
     * @see #getEncoding
232
     * @see java.io.InputStream
233
     */
234
    public void setByteStream (InputStream byteStream)
235
    {
236
        this.byteStream = byteStream;
237
    }
238
 
239
 
240
    /**
241
     * Get the byte stream for this input source.
242
     *
243
     * <p>The getEncoding method will return the character
244
     * encoding for this byte stream, or null if unknown.</p>
245
     *
246
     * @return The byte stream, or null if none was supplied.
247
     * @see #getEncoding
248
     * @see #setByteStream
249
     */
250
    public InputStream getByteStream ()
251
    {
252
        return byteStream;
253
    }
254
 
255
 
256
    /**
257
     * Set the character encoding, if known.
258
     *
259
     * <p>The encoding must be a string acceptable for an
260
     * XML encoding declaration (see section 4.3.3 of the XML 1.0
261
     * recommendation).</p>
262
     *
263
     * <p>This method has no effect when the application provides a
264
     * character stream.</p>
265
     *
266
     * @param encoding A string describing the character encoding.
267
     * @see #setSystemId
268
     * @see #setByteStream
269
     * @see #getEncoding
270
     */
271
    public void setEncoding (String encoding)
272
    {
273
        this.encoding = encoding;
274
    }
275
 
276
 
277
    /**
278
     * Get the character encoding for a byte stream or URI.
279
     * This value will be ignored when the application provides a
280
     * character stream.
281
     *
282
     * @return The encoding, or null if none was supplied.
283
     * @see #setByteStream
284
     * @see #getSystemId
285
     * @see #getByteStream
286
     */
287
    public String getEncoding ()
288
    {
289
        return encoding;
290
    }
291
 
292
 
293
    /**
294
     * Set the character stream for this input source.
295
     *
296
     * <p>If there is a character stream specified, the SAX parser
297
     * will ignore any byte stream and will not attempt to open
298
     * a URI connection to the system identifier.</p>
299
     *
300
     * @param characterStream The character stream containing the
301
     *        XML document or other entity.
302
     * @see #getCharacterStream
303
     * @see java.io.Reader
304
     */
305
    public void setCharacterStream (Reader characterStream)
306
    {
307
        this.characterStream = characterStream;
308
    }
309
 
310
 
311
    /**
312
     * Get the character stream for this input source.
313
     *
314
     * @return The character stream, or null if none was supplied.
315
     * @see #setCharacterStream
316
     */
317
    public Reader getCharacterStream ()
318
    {
319
        return characterStream;
320
    }
321
 
322
 
323
 
324
    ////////////////////////////////////////////////////////////////////
325
    // Internal state.
326
    ////////////////////////////////////////////////////////////////////
327
 
328
    private String publicId;
329
    private String systemId;
330
    private InputStream byteStream;
331
    private String encoding;
332
    private Reader characterStream;
333
 
334
}
335
 
336
// end of InputSource.java

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.