This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Passing variable number of parameters to xsl file
- From: Oleg Tkachenko <olegt at multiconn dot com>
- To: xsl-list at lists dot mulberrytech dot com
- Date: Thu, 21 Mar 2002 18:56:14 +0200
- Subject: Re: [xsl] Passing variable number of parameters to xsl file
- Organization: Multiconn International
- References: <601F6322AD71D5118D6C000347251529022798C6@sjmemexc1.stjude.org>
- Reply-to: xsl-list at lists dot mulberrytech dot com
Hunsberger, Peter wrote:
> The code would look something like the following, here I pull all the
> request parameters out of a Java servlet HTTP request and pass (non-blank)
> ones into Xalan as a single nodeset:
>
>
> static DocumentBuilderFactory _docFactory =
> DocumentBuilderFactory.newInstance();
> .
> .
> .
> DocumentBuilder builder = _docFactory.newDocumentBuilder();
> Document parmDoc = builder.newDocument();
> DocumentFragment root = parmDoc.createDocumentFragment();
> for( Enumeration pr = request.getParameterNames();
> pr.hasMoreElements(); ) {
> String prn = (String)pr.nextElement();
> String pv = request.getParameterValues( prn )[0];
> if ( !"".equals( pv ) ) {
> Element parmE = parmDoc.createElement( prn );
> Text parmV = parmDoc.createTextNode( pv );
> parmE.appendChild( parmV );
> root.appendChild( parmE );
> }
> }
> transformer.setParameter( "request-parms", new
> org.apache.xpath.NodeSet( root ) );
Btw, it's not a very portable solution, because each processor want
nodeset param to be instance of some processor-specific class.
More portable, I believe, is to use URIResolver, which is more generic
stuff and could be written without any processor-specific classes.
--
Oleg Tkachenko
Multiconn International, Israel
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list