Re: XML/XSL on the client for dynamic UI

Subject: Re: XML/XSL on the client for dynamic UI
From: James Clark <jjc@xxxxxxxxxx>
Date: Wed, 03 Nov 1999 11:44:17 +0700
Stefano Mazzocchi wrote:

> It is. Cocoon is based on DOM and this requires all the stuff to go
> directly into memory. We all agree that DOM is the wrong approach for
> XML server side processing (like both James Clark and Mike Key have
> shown in their software) and event-based incremental operation is the
> way to go.
> 
> In fact, after the release of Cocoon 1.5, we are currently designing
> Cocoon2 which will be event-based and _much_ less memory consuming. The
> final goal is to be able to generate a 100 Mb database report using a
> few Mb JVM heap size. This also goes along with other efforts such as
> stylesheet compilation that is being implemented in XSL:P, the new
> incremental formatting API James Tauber and Mike Key are proposing for
> Fop and server side XML compiled pages for SAX-direct XML generation
> that removes parsing overhead.
> 
> Please, checkout the details on the web site.

I think it would be quite hard to do a full XSLT implementation that
didn't need random access to the whole document, at least for a large
proportion of stylesheets.

There are many, many things that people commonly do in stylesheets that
cause an XSLT processor to access the document in a non-stream-like
way.  For example,

- xsl:sort

- handling elements where the ordering of the children is not
significant, eg

<xsl:template match="name">
  <xsl:apply-templates select="given-name"/>
  <xsl:apply-templates select="family-name"/>
</xsl:template>

- tables of contents

- cross references (with the id function)

- numbering (with xsl:number)

Some of these are localized, but some are not.

If you want to process very large documents with a small JVM heap using
XSLT, the alternatives I see are:

- drastic subsetting of XSLT

- use a RandomAccessFile to provide random access to the XML document
without having to keep it all in memory

- use a multi-pass strategy

James



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


Current Thread