xsl-list
[Top] [All Lists]

Re: [xsl] A smarter choose operation XSL 1.1

2009-06-11 00:33:11
An XSLT 1.0 solution:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
 <xsl:output method="text"/>

 <xsl:variable name="vrtfResults">
   <r>1</r>
   <r>1.70</r>
   <r>2.25</r>
   <r>3</r>
 </xsl:variable>

  <xsl:param name="optional.one" select="true()" />
  <xsl:param name="optional.two" select="true()" />
  <xsl:param name="optional.three" select="true()" />

        <xsl:template match="/">
          <xsl:variable name="vResults" select=
          "document('')/*/xsl:variable[(_at_)name='vrtfResults']/*"
          />
        
          <xsl:value-of select=
          "$vResults[$optional.one
                   + $optional.two
                   + $optional.three
                   + 1
                    ]"/>
        </xsl:template>
</xsl:stylesheet>



-- 
Cheers,
Dimitre Novatchev
---------------------------------------
Truly great madness cannot be achieved without significant intelligence.
---------------------------------------
To invent, you need a good imagination and a pile of junk
-------------------------------------
Never fight an inanimate object
-------------------------------------
You've achieved success in your field when you don't know whether what
you're doing is work or play




On Wed, Jun 10, 2009 at 2:20 PM, Karl Stubsjoen<kstubs(_at_)gmail(_dot_)com> 
wrote:
I have 3 optional param values that are either true/false.  I need a
solution which will return 4 different numbers when:

1) all param values are true
2) two param values are true
3) one param value is true
4) none are true

I was about to write one big choose and then thought maybe there is a
more efficient way of doing it.  So any ideas on this one?  For sake
of discussion, here is a mock up of the template and param values I
have:

<xsl:template name="test">
 <xsl:param name="optional.one" select="true()" />
 <xsl:param name="optional.two" select="true()" />
 <xsl:param name="optional.three" select="true()" />

 <!--
   Return:

   When All, return 3.00
   When Two, return 2.25
   When One, return 1.70
   When Zero, return 1.00
  -->

</xsl:template/>

Thanks for the help!

Karl..

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--