Re: [xsl] passing a sequence as a parameter

Subject: Re: [xsl] passing a sequence as a parameter
From: David Carlisle <davidc@xxxxxxxxx>
Date: Tue, 26 Feb 2008 11:39:44 GMT
simplest change to what you posted is probably something like this:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
		xmlns:xs="http://www.w3.org/2001/XMLSchema";
		exclude-result-prefixes="xs"
		version="2.0">
    <xsl:param name="my_param" as="xs:string?" />
    <xsl:param name="my_params" as="xs:string*" select="tokenize($my_param,',')"/>
    <xsl:output indent="yes"/>
    <xsl:template match="/root">
        <root>
            <xsl:apply-templates/>
        </root>
    </xsl:template>
    <xsl:template match="user">
        <user>
           <xsl:for-each select="name"> 
	     <xsl:variable name="p" select="position()"/>
               <xsl:if test="$my_params[$p] = 'true'">
                   <name>
                       <xsl:value-of select="."/>
                   </name>
               </xsl:if>           
           </xsl:for-each>
       </user>
    </xsl:template>
</xsl:stylesheet>

$ saxon9 rg.xml rg.xsl my_param='true,false,true'
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <user>
      <name>Robert</name>
      <name>Graham</name>
   </user>
</root>


If you are calling teh stylesheet via an APi that allows seqeunce values
to be constructed and passed in externally you may set your my_params
parameter directly to that sequence, and ignore the my_param parameter,
but conversely if as I demonstrate above you are using a simple APi like
the saxon command line that doesn't allow structured values to be passed
in you can ignore the my_params parameter and set the my_param parameter
to a single string with comma separated values, the sequence will tehn
be constructed as the default value of $my_params.

David

________________________________________________________________________
The Numerical Algorithms Group Ltd is a company registered in England
and Wales with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.

This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs. 
________________________________________________________________________

Current Thread