Subject: Re: A smarter choose operation XSL 1.1
From: Dimitre Novatchev <dnovatchev@xxxxxxxxx>
Date: Wed, 10 Jun 2009 21:32:42 -0700
|
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[@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@xxxxxxxxx> wrote:
> I have 3 optional param values that are either true/false. B 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. B So any ideas on this one? B For sake
> of discussion, here is a mock up of the template and param values I
> have:
>
> <xsl:template name="test">
> B <xsl:param name="optional.one" select="true()" />
> B <xsl:param name="optional.two" select="true()" />
> B <xsl:param name="optional.three" select="true()" />
>
> B <!--
> B B Return:
>
> B B When All, return 3.00
> B B When Two, return 2.25
> B B When One, return 1.70
> B B When Zero, return 1.00
> B -->
>
> </xsl:template/>
>
> Thanks for the help!
>
> Karl..
|