Re: [xsl] XML transformation based on parameters

Subject: Re: [xsl] XML transformation based on parameters
From: Emiliano Pecis <emiliano.pecis@xxxxxxxxx>
Date: Wed, 15 Apr 2009 11:16:26 +0200
Thanks to you, I've been able to to get my xslt working.
I'd like to add a new enhancement, if it is possible.

Currently, I invoke the same xslt three or more times passing
different parameters. I'd like to pass an XML file as parameter only one
with all needed parameters...

I don't know how to parse the xml file inside xslt and invoke the
transformation for each parameter...

Have you any hints/link to point me?

Following the code I have to start from... I will have 3 or more "p" values
and 3 or more relative "v" values.

<xsl:stylesheet version="1.0"

 <xsl:param name="p" select="'id'"/>
 <xsl:param name="v" select="'newvalue'"/>

 <xsl:template match="@* | node()">
    <xsl:apply-templates select="@* | node()"/>

 <xsl:template match="*[local-name()='param']">

    <xsl:when test="@name = $p">
      <xsl:value-of select="$v"/>
      <xsl:value-of select="."/>


best regards,

2009/4/14 Emiliano Pecis <emiliano.pecis@xxxxxxxxx>:
> Thanks Sam! I needed your XSLT1.0 version...
> e.
> 2009/4/14 Sam Byland <shbyland@xxxxxxxxxxx>:
>> Emiliano,
>> if you're limited to XSLT1, then try matching on "param" and place the
>> associated with "@name = $p" in the template body.  Something like:
>> <xsl:stylesheet version="1.0"
>> xmlns:xsl="";>
>>  <xsl:param name="p" select="id"/>
>>  <xsl:param name="v" select="newvalue"/>
>>  <xsl:template match="@* | node()">
>>   <xsl:copy>
>>     <xsl:apply-templates select="@* | node()"/>
>>   </xsl:copy>
>>  </xsl:template>
>>  <xsl:template match="param">
>>   <xsl:choose>
>>     <xsl:when test="@name = $p">
>>       <xsl:value-of select="$v"/>
>>     </xsl:when>
>>     <xsl:otherwise>
>>       <xsl:value-of select="."/>
>>     </xsl:otherwise>
>>   </xsl:choose>
>>  </xsl:template>
>> </xsl:stylesheet>
>> ...sam

Current Thread