On 31/12/2007, Florent Georges <lists(_at_)fgeorges(_dot_)org> wrote:
Hi
First, I think JAXP questions are on topic here (as long
as they are about its XSLT part). Please correct me if I am
wrong.
I thought that the SAXResult.setSystemId(String) method
set the System ID of the SAX events thrown by the transform.
But the following code displays the System ID of the
stylesheet:
public static void main(String[] args)
throws TransformerException
{
// stylesheet and input sources
Source style_src = ...;
Source input = ...;
// the stylesheet
SAXTransformerFactory factory = new TransformerFactoryImpl();
Templates style = factory.newTemplates(style_src);
// the SAX handler
ContentHandler handler = new DefaultHandler() {
public void setDocumentLocator(Locator loc) {
System.err.println(loc.getSystemId());
}
};
// the result, encapsulating the handler
SAXResult result = new SAXResult();
result.setHandler(handler);
result.setSystemId("http://sample.com/system-id");
// the transform
style.newTransformer().transform(input, result);
}
Tested with Saxon 9.
Did I mix up something?
Maybe...
Normally with a SAXTransformerFactory you set the result using
handler.setResult(...)
and start the transform by call parse on the XMLReader eg:
xmlReader.setContentHander(...)
xmlReader.parse(...)
...but you've used the "standard" way for a normal TransformerFactory
- I'm not sure the handler gets the events that way.
cheers
--
Andrew Welch
http://andrewjwelch.com
Kernow: http://kernowforsaxon.sf.net/
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--