Stefano Mazzocchi wrote:
> I personally don't like the document() function of XSLT. I normally
> suggest to use an xinclude stage to perform aggregation when the
> structure of the aggregation is not fixed, but that's really up to you.
> 
I personally don't like Cocoon aggregation, basically
because it is proprietary to Cocoon, while document()
is a mandatory feature of all XSLT processors.

Well each of the three aggregation methods has its
place:
Cocoon aggregation: controlled by sitemap, non-intrusive
  to XML and XSLT
xinclude: controlled by XML source
document(): controlled by stylesheet writer, non-intrusive
  to XML

The downsides of of document() are that it is not quite
compatible yet with Cocoon caching, and many people have
difficulties to understand the two argument form and how
relative URIs are resolved.

>>In any case, aggregation seems not to be quite right.
> 
> Why? what's the problem you are experiencing?
> 
I have a bunch of XML files with the same DTD. They
could be processed with the same XSLT and mapped by
the same pipeline if I use document(). If I use
aggregation, I'd have to use a separate pipeline and
XSLT (because of the new document element and skipping
the aggregated content until it's needed) for the
currently two sources which need aggregated content.
Using an aggregation pipeline for all documents seems
to be a bit of an overkill, especially because the
directories read are on mounted drives which are slow
on occasion.
Using xinclude doesn't change the picture much, instead
of an aggregating pipeline I'd have to use a three stage
pipeline (transformation of reference to xinclude,
xinclude, final transformation), the only advantage
being that XML content can be used for constructing
the referencing URLs (which will probably be needed).
With document(), I can put a <news from=".."> element
in any source and get the content for aggregation where
and when it is needed, no need keep track which source
uses news in order to get it into the correct pipeline.
The other advantage is that I can develop the XSLT
locally using a standard XSLT processor, thereby getting
short turn around times. The other variants require
a Cocoon running somewhere, and in my experience this
slows down the edit-test-cycle even if I edit the XSLT
in place, mainly because I always need to reload the
page in the browser, and problems must be looked up in
the logs.

J.Pietschmann


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to