This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Invoking XALAN API with an in-memory XML/XSL string
- From: "Michael Kay" <michael dot h dot kay at ntlworld dot com>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Thu, 18 Apr 2002 09:58:38 +0100
- Subject: RE: [xsl] Invoking XALAN API with an in-memory XML/XSL string
- Reply-to: xsl-list at lists dot mulberrytech dot com
>
> 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