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: Mon, 09 Oct 2006 12:12:15 -0400
Dear Sterling,

At 12:35 PM 10/8/2006, you wrote:
How would you cite the technique "micro-pipelining".

Piez, Wendell: Micro-pipeline (technique to create and process
the tree created)", cited in XSL-List@xxxxxxxxxxxxxxxxxxxxxx,
subject = programmatic nodeset builds for passing to another
template", Oct 6, 2006.

That's very kind, although I'm not sure it's absolutely necessary.

but when and who invented the technique "micro-pipeline"?
maybe many people did different components?
is there an existing|applied_for patent on any of it,
or does the technique reside in the public domain?

I dare say it's been reinvented many times, sometimes by accident (I know of at least one case where that's happened).

If you go back into the archives of this list, you'll find much discussion of the difference in XSLT 1.0 between a result-tree-fragment and a node set, and the utility of being able to treat an RTF (which in XSLT 2.0 becomes a "temporary tree") as a set of nodes. Unfortunately I don't have the time to dig out particular citations, but they're in there, especially as awareness grew (from 1999) of how powerful the technique is and how useful an extension function is that provides a way to do it. Even the original designers of XSLT 1.0 were aware that the technique is possible and potentially useful, as they took the trouble explicitly to prohibit it (for reasons that were later decided to be insufficient, as the restriction was later removed).

So-called "micropipelining" is merely an application of this method at a low level instead of at the document level.

As for IP rights to it -- I'm no expert (in either law or CS :-), but I dare say this falls squarely in the realm of the "obvious" or at least of "prior art", particularly as such recursive operations are fundamental to certain programming paradigms such as functional programming.


Current Thread