[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

[xsl] Modify Value of a Parameter Globally Within a Template


Subject: [xsl] Modify Value of a Parameter Globally Within a Template
From: Lisa Jiang <ljiang@xxxxxxxxx>
Date: Mon, 12 Nov 2012 12:07:11 -0500

Dear All,

Is there a specific way to change the value of a parameter within a
call to another template and then use the resulting value for tests in
the original template? Or just change the value of a parameter within
a template that then reflects globally? I've included some simple,
example code on what I would like to do.

So say the default parameter of 'flavor' is set globally outside all
the templates. The main template then calls the 'order' template,
which is where I'm trying to change 'flavor'. Then after 'order' is
called, I then want to check whether or not the 'flavor' was changed.
I tried to do it using 'with-param' in the 'order' template (shown in
the example), but for some reason it does not work. It throws errors
in other 'when' loops around it. I don't think the problem is with
other parts of the code, because the code runs perfectly fine without
the with-param change added. Is there something special I have to do
to change the parameter or is there a better way to do what I want?
I'm restricted to XSLT version 1.0.

Thanks in advance!
Lisa

<xsl:stylesheet>

<xsl:param name="flavor"  select=" 'vanilla' "/>
<xsl:param name="dessert"  select=" 'brownie' "/>
<xsl:param name="hungry"  select=" 'true' "/>

<xsl:template match="/">
     <xsl:element name="{$wrapper}" namespace="http://www.namespace.com">

          <xsl:call-template name="order"/>

          <xsl:choose>
                    <xsl:when test=" $flavor = 'chocolate' ">
                         <! ... do something ... ->
                    </xsl:when>

                    <xsl:otherwise>
                         <! ... do something else ... ->
                    </xsl:otherwise>
          </xsl:choose>

     </xsl:element>
</xsl:template>

<xsl:template name="order">
     <xsl:variable name="action">
          <xsl:choose>

               <xsl:when test=" $hungry = 'true' ">
                    <xsl:choose>

                         <xsl:when test=" $dessert = 'brownie' ">
                              <xsl:value-of select=" 'order_brownie' "/>
                         </xsl:when>

                         <xsl:otherwise>
                              <xsl:value-of select=" 'order_ice_cream' "/>
                              <xsl:with-param name="$ice_cream"
select=" 'chocolate' "/>
                         </xsl:otherwise>

                    </xsl:choose>
               </xsl:when>
          </xsl:choose>
     </xsl:variable>
</xsl:template>

</xsl:stylesheet>


Current Thread
Keywords