Jimmy Zhang wrote:
Hi, Thanks for the email.
My answers to your questions:
1. It is a tradeoff-VTD-XMl consumes more memory, but
is easy to use and more powerful, Any random access capable XML
processing API *needs* to at least load the entire hierachical structure
in memory. My take is that among SAX, STAX, DOM
and JDOM, vtd-xml is the least likely one to choke, and best one
to handle peak loads...
whatever
most XSLT cases *NO NOT* need to load the xml in memory to be able to
process it. Unless you abuse xsl:sort or xpaths with .., most things can
be done with pure event-driven pipeline style, and only a small buffer
needs to be kept in memory.
Xalan XSLTC is able to pre-process xslt stylesheets and compile them
into code that will know how much buffer to keep because it knows what
kind of xpath events will be called on the incoming stream.
2. Agree with you, benchmarking a dummy SAX parser is unfair for VTD-XML,
that will make VTD-XML look prettier in real life scenario.
whatever #2, playing smartass (and avoiding the issue that I mentioned)
is unlikely to make your points more solid.
3. Look at all the vertical industry XML related vocubalry, SOAP,
Rest and XML schema, and infoset data model, DTD seems deprecated
a bit, and VTD-XMl doesn't support external entities... other than that
VTD-XML is equally capable
I agree that DTDs should be deprecated and seem like an SGML vestigial
feature.
My point is that it's unfair to compete with a fully compliant xml
parser with a parser that knows how to cut corners (and therefore
doesn't have to scan the text for entities to expand!).
if xerces was allowed to get away with no need to parse entities and
didn't have to create strings, it would be just as fast as yours.
BTW, you have not answered these questions:
You claim xpath random access, but what is the algorithmical
complexity of that? O(1), O(log(n)), O(n), O(n*log(n))? If one were to
store the parsed tree index on disk, how many pages would one need to
page in before reaching the required xpath?
--
Stefano.