This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: Invoking XALAN API with an in-memory XML/XSL string


>
> I have a (Java) program which has two String variables:
>  - xml, whose value is the XML, and
>  - xsl, whose value is the stylesheet
>
> I am trying to invoke the XALAN API using these in-memory
> strings, e.g.,
>
> -- convert the xsl (String) to a byte array and create an instance
> -- of an InputStream:
>
>    ByteArrayInputStream is = new ByteArrayInputStream(xsl.getBytes());
>
> -- create a StreamSource using the input stream:
>
>    StreamSource ss = new StreamSource(is);
>

String.getBytes() converts characters to bytes in the "platform's default
character encoding", according to the JDK spec. I'm never quite sure what
they mean by "platform", sometimes it seems to mean the computer, sometimes
the JVM. But either way, you end up with an array of bytes in some unknown
encoding, which the XML parser then has to decipher.

Just give the parser the character string to play with directly:

StringReader sr = new StringReader(xsl);
StreamSource ss = new StreamSource(ss);

(And by the way, it's not the Xalan API, it's the JAXP API).

Michael Kay
Software AG
home: Michael.H.Kay@ntlworld.com
work: Michael.Kay@softwareag.com


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]