Subject: Re: [xsl] Passing a variable number of parameters? From: Jakob Fix <jakob.fix@xxxxxxxxx> Date: Mon, 27 Sep 2004 17:46:19 +0200 |
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@xxxxxxxxxxxxxxx> 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.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Passing a variable number, Andrew Welch | Thread | Re: [xsl] Passing a variable number, David Carlisle |
[xsl] FW: problem integrating xsl i, Mac Rost | Date | Re: [xsl] FW: problem integrating x, David Carlisle |
Month |