David, Andrew,
thanks so far for your input. On the one hand I am relieved that
there's no obvious solution which I missed, on the other hand I an
worried about the same thing, i.e. there's no straightforward way to
do what I need to do.
Does that mean what I want to do is weird and unusual (not that I
would mind ;-)?
On Mon, 27 Sep 2004 16:26:17 +0100, Andrew Welch
<ajwelch(_at_)piper-group(_dot_)com> wrote:
This leads me to the second part of my question, because
somebody could say "Why don't you try it out?". I need to
implement this in Javascript, and so far I haven't found a
way to create a NodeList that would be accepted by the XSL
processor (be it Gecko or MSIE) as valid parameter; I receive
"incompatibe type" errors.
If you are struggling to create a node list to pass in as a parameter,
two other solutions are:
1. Create an xml file out of your node-list and then reference that
using the document() function. For example:
params.xml
<params>
<param name="bar" value="baz"/>
<param name="hello" value="world"/>
</params/>
Then use:
<xsl:variable name="params" select="document('params.xml')"/>
Well, in a multi-user environment this won't work, unless I create a
unique file for each request which is out of the question, and
impossible as the client in this application cannot create files on
the server.
2. Create your params as a well-formed string and then combine with the
xml document (in also in string form) and then transform that. For
example:
var params = "<params> ..blah </params>";
var xmlDoc = "<root>" + params + original_xml_doc + "</root>";
(note the containing root element to keep everything well-formed)
This is interesting, I would have to modify the in-memory
representation of the source XML file. I haven't thought of this,
probably because of was too focussed on the nodelist-as-a-parameter
problem. Looking at your idea, it's certainly not a clean solution
because I have to modify the source file which is Not a Good Thing,
but it would at least be a temporary hack.
You can then access your parameters using:
<xsl:variable name="params" select="/root/params"/>
cheers
andrew
By the way, how is this problem dealt with in other languages? Is
this a Javascript idiosyncracy? I suppose Java has a NodeList type
which processors will gladly accept?
thanks.
--
cheers,
Jakob.