1320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson/* 2320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * Licensed to the Apache Software Foundation (ASF) under one or more 3320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * contributor license agreements. See the NOTICE file distributed with 4320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * this work for additional information regarding copyright ownership. 5320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * The ASF licenses this file to You under the Apache License, Version 2.0 6320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * (the "License"); you may not use this file except in compliance with 7320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * the License. You may obtain a copy of the License at 8320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 9320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 10320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 11320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * Unless required by applicable law or agreed to in writing, software 12320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 13320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * See the License for the specific language governing permissions and 15320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * limitations under the License. 16320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 17320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 18320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson// $Id: StreamSource.java 829971 2009-10-26 21:15:39Z mrglavas $ 19320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 20320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilsonpackage javax.xml.transform.stream; 21320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 22320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilsonimport java.io.File; 23320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilsonimport java.io.InputStream; 24320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilsonimport java.io.Reader; 25320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilsonimport javax.xml.transform.Source; 26320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 27320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson/** 28320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * <p>Acts as an holder for a transformation Source in the form 29320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * of a stream of XML markup.</p> 30320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 31320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * <p><em>Note:</em> Due to their internal use of either a {@link Reader} or {@link InputStream} instance, 32320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * <code>StreamSource</code> instances may only be used once.</p> 33320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 34320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @author <a href="Jeff.Suttor@Sun.com">Jeff Suttor</a> 35320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @version $Revision: 829971 $, $Date: 2009-10-26 14:15:39 -0700 (Mon, 26 Oct 2009) $ 36320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 37320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilsonpublic class StreamSource implements Source { 38320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 39320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** If {@link javax.xml.transform.TransformerFactory#getFeature} 40320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * returns true when passed this value as an argument, 41320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * the Transformer supports Source input of this type. 42320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 43320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson public static final String FEATURE = 44320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson "http://javax.xml.transform.stream.StreamSource/feature"; 45f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 46320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 47320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * <p>Zero-argument default constructor. If this constructor is used, and 48320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * no Stream source is set using 49320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * {@link #setInputStream(java.io.InputStream inputStream)} or 50320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * {@link #setReader(java.io.Reader reader)}, then the 51320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * <code>Transformer</code> will 52320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * create an empty source {@link java.io.InputStream} using 53320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * {@link java.io.InputStream#InputStream() new InputStream()}.</p> 54f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 55320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @see javax.xml.transform.Transformer#transform(Source xmlSource, Result outputTarget) 56f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes */ 57320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson public StreamSource() { } 58320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 59320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 60320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * Construct a StreamSource from a byte stream. Normally, 61320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * a stream should be used rather than a reader, so 62320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * the XML parser can resolve character encoding specified 63320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * by the XML declaration. 64320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 65320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * <p>If this constructor is used to process a stylesheet, normally 66320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * setSystemId should also be called, so that relative URI references 67320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * can be resolved.</p> 68320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 69320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @param inputStream A valid InputStream reference to an XML stream. 70320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 71320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson public StreamSource(InputStream inputStream) { 72320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson setInputStream(inputStream); 73320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson } 74320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 75320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 76320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * Construct a StreamSource from a byte stream. Normally, 77320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * a stream should be used rather than a reader, so that 78320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * the XML parser can resolve character encoding specified 79320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * by the XML declaration. 80320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 81320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * <p>This constructor allows the systemID to be set in addition 82320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * to the input stream, which allows relative URIs 83320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * to be processed.</p> 84320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 85320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @param inputStream A valid InputStream reference to an XML stream. 86320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @param systemId Must be a String that conforms to the URI syntax. 87320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 88320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson public StreamSource(InputStream inputStream, String systemId) { 89320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson setInputStream(inputStream); 90320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson setSystemId(systemId); 91320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson } 92320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 93320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 94320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * Construct a StreamSource from a character reader. Normally, 95320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * a stream should be used rather than a reader, so that 96320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * the XML parser can resolve character encoding specified 97320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * by the XML declaration. However, in many cases the encoding 98320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * of the input stream is already resolved, as in the case of 99320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * reading XML from a StringReader. 100320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 101320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @param reader A valid Reader reference to an XML character stream. 102320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 103320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson public StreamSource(Reader reader) { 104320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson setReader(reader); 105320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson } 106320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 107320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 108320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * Construct a StreamSource from a character reader. Normally, 109320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * a stream should be used rather than a reader, so that 110320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * the XML parser may resolve character encoding specified 111320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * by the XML declaration. However, in many cases the encoding 112320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * of the input stream is already resolved, as in the case of 113320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * reading XML from a StringReader. 114320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 115320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @param reader A valid Reader reference to an XML character stream. 116320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @param systemId Must be a String that conforms to the URI syntax. 117320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 118320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson public StreamSource(Reader reader, String systemId) { 119320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson setReader(reader); 120320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson setSystemId(systemId); 121320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson } 122320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 123320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 124320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * Construct a StreamSource from a URL. 125320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 126320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @param systemId Must be a String that conforms to the URI syntax. 127320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 128320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson public StreamSource(String systemId) { 129320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson this.systemId = systemId; 130320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson } 131320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 132320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 133320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * Construct a StreamSource from a File. 134320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 135320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @param f Must a non-null File reference. 136320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 137320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson public StreamSource(File f) { 138320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson setSystemId(f); 139320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson } 140320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 141320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 142320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * Set the byte stream to be used as input. Normally, 143320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * a stream should be used rather than a reader, so that 144320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * the XML parser can resolve character encoding specified 145320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * by the XML declaration. 146320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 147320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * <p>If this Source object is used to process a stylesheet, normally 148320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * setSystemId should also be called, so that relative URL references 149320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * can be resolved.</p> 150320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 151320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @param inputStream A valid InputStream reference to an XML stream. 152320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 153320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson public void setInputStream(InputStream inputStream) { 154320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson this.inputStream = inputStream; 155320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson } 156320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 157320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 158320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * Get the byte stream that was set with setByteStream. 159320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 160320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @return The byte stream that was set with setByteStream, or null 161320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * if setByteStream or the ByteStream constructor was not called. 162320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 163320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson public InputStream getInputStream() { 164320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson return inputStream; 165320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson } 166320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 167320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 168320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * Set the input to be a character reader. Normally, 169320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * a stream should be used rather than a reader, so that 170320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * the XML parser can resolve character encoding specified 171320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * by the XML declaration. However, in many cases the encoding 172320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * of the input stream is already resolved, as in the case of 173320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * reading XML from a StringReader. 174320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 175320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @param reader A valid Reader reference to an XML CharacterStream. 176320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 177320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson public void setReader(Reader reader) { 178320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson this.reader = reader; 179320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson } 180320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 181320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 182320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * Get the character stream that was set with setReader. 183320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 184320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @return The character stream that was set with setReader, or null 185320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * if setReader or the Reader constructor was not called. 186320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 187320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson public Reader getReader() { 188320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson return reader; 189320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson } 190320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 191320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 192320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * Set the public identifier for this Source. 193320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 194320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * <p>The public identifier is always optional: if the application 195320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * writer includes one, it will be provided as part of the 196320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * location information.</p> 197320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 198320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @param publicId The public identifier as a string. 199320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 200320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson public void setPublicId(String publicId) { 201320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson this.publicId = publicId; 202320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson } 203320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 204320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 205320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * Get the public identifier that was set with setPublicId. 206320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 207320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @return The public identifier that was set with setPublicId, or null 208320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * if setPublicId was not called. 209320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 210320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson public String getPublicId() { 211320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson return publicId; 212320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson } 213320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 214320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 215320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * Set the system identifier for this Source. 216320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 217320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * <p>The system identifier is optional if there is a byte stream 218320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * or a character stream, but it is still useful to provide one, 219320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * since the application can use it to resolve relative URIs 220320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * and can include it in error messages and warnings (the parser 221320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * will attempt to open a connection to the URI only if 222320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * there is no byte stream or character stream specified).</p> 223320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 224320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @param systemId The system identifier as a URL string. 225320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 226320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson public void setSystemId(String systemId) { 227320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson this.systemId = systemId; 228320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson } 229320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 230320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 231320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * Get the system identifier that was set with setSystemId. 232320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 233320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @return The system identifier that was set with setSystemId, or null 234320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * if setSystemId was not called. 235320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 236320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson public String getSystemId() { 237320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson return systemId; 238320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson } 239320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 240320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 241320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * Set the system ID from a File reference. 242320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 243320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @param f Must a non-null File reference. 244320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 245320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson public void setSystemId(File f) { 246320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson this.systemId = FilePathToURI.filepath2URI(f.getAbsolutePath()); 247320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson } 248320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 249320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson ////////////////////////////////////////////////////////////////////// 250320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson // Internal state. 251320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson ////////////////////////////////////////////////////////////////////// 252320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 253320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 254320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * The public identifier for this input source, or null. 255320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 256320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson private String publicId; 257320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 258320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 259320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * The system identifier as a URL string, or null. 260320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 261320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson private String systemId; 262320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 263320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 264320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * The byte stream for this Source, or null. 265320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 266320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson private InputStream inputStream; 267320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 268320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 269320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * The character stream for this Source, or null. 270320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 271320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson private Reader reader; 272320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson} 273