Lists Home |
Date Index |
- To: "Michael Kay" <email@example.com>
- Subject: RE: [xml-dev] Fast text output from SAX?
- From: "Andrew Welch" <AWelch@piper-group.com>
- Date: Wed, 14 Apr 2004 08:38:10 +0100
- Cc: "XML DEV" <firstname.lastname@example.org>
- Thread-index: AcQhNHVdtrsqnLDMQw2YDWAg91kTyAADHqJgAAW7IUAAARHCkAADP51gACHzG6A=
- Thread-topic: [xml-dev] Fast text output from SAX?
> > I've often had the requirement to alter/add to the xml as it passed
> > through a set of SAXFilters. I've always been under the impression
> > that to write out the xml at the end of the filter chain I either
> > needed to:
> > A) use DM's XMLWriter or similar
> > or
> > B) use a SAXTransformerFactory which allowed me to use
> setResult() to
> > give it a Writer.
> > Other than that I thought the SAX events were 'lost' by the
> > which I've always considered odd. For me, the handler
> should have the
> > ability to write out the xml inbuilt into it, without the need for
> > XMLWriter or SAXTransformerFactory.
> I'm confused. What do you mean by "the handler"?
The ContentHandler, DefaultHandler, or in this case the
> > Reading here,
> > http://java.sun.com/j2se/1.4.2/docs/api/javax/xml/transform/sa
> > x/SAXTrans
> > formerFactory.html#newTransformerHandler()
> > you can see how I made my assumption.
> Sorry, I don't understand what assumption you made, let alone
> how you made it!
My assumption was that a call to newTransformerHandler() with no
arguments (ie no stylesheet) would return a TransformerHandler created
from the identity stylesheet. Where a stylesheet is specified, a
transform must take place and so a tree needs to be created for the
source - which incurs all the usual costs of building the tree. I
assumed that these costs were still involved when using the zero
If these costs aren't involed, then this is surely the best way for the
orginal poster to go from a stream of sax events to xml text.
> > How does Saxon go from
> > sax events to a Result using an empty TransformerHandler()?
> The IdentityTransformerHandler gets SAX events in
> (originating typically from a DOMSource, a SAXSource, or a
> StreamSource), and passes them straight through to an output
> method associated with a DOMResult, SAXResult, or
> StreamResult. It's a dozen lines of code.
> > Is there anything like
> > the performance costs of building a tree for the source and
> > performing a transform?
Excellent. Although it's a bit of a misnomer calling it a 'transformer