RE: [xsl] How do I build a nodeset "programmatically" for passing to another template?

Subject: RE: [xsl] How do I build a nodeset "programmatically" for passing to another template?
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Thu, 17 Aug 2006 18:14:40 -0400

At 05:15 PM 8/17/2006, you wrote:
Thanks for the background and the hint to look for "micropipelining".

You're welcome -- though be warned that the term of art isn't exactly common usage, and may never be. It's just a convenient way of describing it. Looking for "node-set() extension" will get you piles of hits, however.

I'm using Saxon 6.5.x which already supports automatic conversion from
RTF to nodeset (assuming I correctly read Michael Kay's excellent "XSLT
Programmer's Reference 2nd edition" book).  I'm assuming that for other
XSLT engines, the node-set() function would be needed in my output table
call...along the lines of <xsl:with-param name="entries"
select="xalan:node-set($speed_table_values)/*"/>.  Correct me if I'm not
understanding the proper extension usage for micropipelining.

No, that's about correct.

Strictly speaking, by supporting this feature transparently (that is, without exslt:node-set() or the equivalent), Saxon 6.5.x (hm, which versions though) varies from precise (some might say gratuitously complete) XSLT 1.0 conformance, so you should be forewarned.

You won't have been the first to use it this way, however; in fact I've seen XSLTers do this without even knowing it was verboten in XSLT 1.0. (Lucky for them it's becoming approved practice in 2.0.) Like every standard, XSLT 1.0 has its warts. Nonetheless, in general and in principle I'm in favor of adhering zealously to the letter of the law, even if in practice I'm willing to consider exceptions (as long as we lower our voices in public). And you never know: you might be doing a future maintainer a big favor by explicitly using the function.

To close the loop for the next poor sod trying to understand this
problem, I'm posting my working mini-demonstration of a stylesheet that
does what I want....

Thanks. That and a decent subject line will get you a gold star in the Eternal XSLT Halls of Fame (or at least among future users of the archive).


Current Thread