Re: [xsl] genarate key using a variable

Subject: Re: [xsl] genarate key using a variable
From: "M. David Peterson" <conners_dad@xxxxxxx>
Date: Mon, 1 Sep 2003 03:21:52 -0600
This method should still be effective for you...  However, I am making the 
assumption that the user will first select an attribute they want to sort by 
and then select a value.  Is this not the case?  Or are you saying that they 
can select a value they want to sort by and then select the attribute.  e.g. 
They want to know every transaction that contains the dollar figure $25.00 
or took place on the date 23/04/2004 and have it return deposits, 
withdrawals, etc...  Or is it something entirely different from that which I 
have described...  In any case I would try the following...  Let me know if 
im not understanding the real issue and ill give it some more thought...

Add a "Search_By" param and a "Sort_By" param and then use another 
<xsl:choose> element structure to choose which value to search by and which 
to sort by...

So in other words add the following to the param list..

<xsl:param name="Search_By">Var_1</xsl:param>
<xsl:param name="Sort_By">Var_2</xsl:param>

and the following the the template body...

<xsl:choose>
    <xsl:when test="$Search_By = 'Var_1'">
        <xsl:choose>
            <xsl:when test="$var_1 = 'deposit'">

            <xsl:for-each select="key('varMatch_Deposit', $var_2)">

                Deposit ID: <xsl:value-of select="@id"/><br/>
                Amount: <xsl:value-of select="."/><br/><br/><hr/>

            </xsl:for-each>

            </xsl:when>
            <xsl:when test="$var_1 = 'withdrawal'">

            <xsl:for-each select="key('varMatch_Withdrawal', $var_2)">

                Other ID: <xsl:value-of select="@id"/><br/>
                Other Amount: <xsl:value-of select="."/><br/><br/><hr/>

            </xsl:for-each>

            </xsl:when>
            <xsl:otherwise>

            //code for otherwise

            </xsl:otherwise>
            </xsl:when>
        </xsl:choose>
    <xsl:when test="Search_By = 'Var_2'">

        //code for this option
    </xsl:when>
    <xsl:otherwise>
       // code for otherwise
    </xsl:otherwise>
</xsl:choose>


Best of luck!

M.David




----- Original Message ----- 
From: <aruniima.chakrabarti@xxxxxxxxxxxxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Monday, September 01, 2003 3:02 AM
Subject: RE: [xsl] genarate key using a variable


> Thank you David & Mukund. But my problem is bit tricky...
> I have an xml like the below. & I have to filter the based any of 
> attributes's  value. That is the user can specify that which of the 
> columns' data he wud like to filter based of any that column's values. 
> Something like excel sheet data filter. So that's where exactly I am stuck 
> as I unable to figure out how to have both the attribute & its value as 
> parameter.
> Also, the numbers of Columns C1, C2 etc are not limited
>
> <?xml version="1.0"?>
>
> <PickList>
> <TotalRows>33</TotalRows>
> <Columns C1="Deposit" C2="Period" C3="Status" C4="Value Date" C5="Maturity 
> Date" C6="Deposit No"/>
> <Tags>ctlMskDepositNo *</Tags>
> <Rows>
> <Row C1="1" C2="1" C3="Closed Today" C4="23/10/2003" C5="23/04/2004" 
> C6="1"/>
> <Row C1="2" C2="1" C3="Open Today" C4="06/11/2003" C5="05/01/2004" 
> C6="2"/>
> <Row C1="3" C2="1" C3="Open Today" C4="29/02/2004" C5="29/04/2004" 
> C6="3"/>
> <Row C1="7" C2="1" C3="Matured" C4="29/02/2004" C5="29/04/2004" C6="7"/>
> <Row C1="8" C2="1" C3="Closed" C4="29/02/2004" C5="29/04/2004" C6="8"/>
> <Row C1="9" C2="1" C3="Closed" C4="29/02/2004" C5="29/04/2004" C6="9"/>
> <Row C1="10" C2="1" C3=" Matured" C4="29/02/2004" C5="29/04/2004" 
> C6="10"/>
> <Row C1="11" C2="1" C3="Open Today" C4="29/02/2004" C5="19/04/2004" 
> C6="11"/>
> <Row C1="16" C2="1" C3="Open Today" C4="29/02/2004" C5="29/04/2004" 
> C6="16"/>
> <Row C1="17" C2="1" C3="Open Today" C4="29/02/2004" C5="29/04/2004" 
> C6="17"/>
> <Row C1="18" C2="1" C3="Open Today" C4="29/02/2004" C5="29/04/2004" 
> C6="18"/>
> <Row C1="19" C2="1" C3="Closed" C4="29/02/2004" C5="19/04/2004" C6="19"/>
> <Row C1="32" C2="1" C3="Open Today" C4="29/02/2004" C5="09/04/2004" 
> C6="32"/>
> <Row C1="33" C2="1" C3="Open Today" C4="29/02/2004" C5="30/03/2004" 
> C6="33"/>
> </Rows>
> </PickList>
> Regards,
> aruniima
>
>  -----Original Message-----
> From: M. David Peterson [mailto:conners_dad@xxxxxxx]
> Sent: Monday, September 01, 2003 1:56 PM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [xsl] genarate key using a variable
>
> I forgot that I needed to send this message in plain text format.  If the
> other one gets through I apologize for the repeat mail...
>
> Original text of my email....
>
> Hey Aruniima,
>
> You've stumbled upon one that puzzled me for awhile.  But I finally came 
> up
> with a quick and easy workaround.  Im sure there are others but this one 
> is
> simple and it works which are my number one rules of coding.
>
> My assumption is that the number of choices the user has as far as node
> names is fairly limited (e.g. Deposits, Withdrawls, etc...) and as such it
> should be a quick and easy task for the xsl:choose element...
>
> heres the xml file...
>
> <?xml version="1.0"?>
> <?xml-stylesheet type="text/xsl" href="transactions.xslt" ?>
> <transactions>
>     <deposits>
>         <deposit id="001">25.00</deposit>
>         <deposit id="002">25.00</deposit>
>         <deposit id="003">35.00</deposit>
>         <deposit id="004">10.00</deposit>
>         <deposit id="005">12.00</deposit>
>         <deposit id="006">25.00</deposit>
>         <deposit id="007">25.00</deposit>
>     </deposits>
>     <withdrawals>
>         <withdrawal id="001">5.00</withdrawal>
>         <withdrawal id="002">2.00</withdrawal>
>         <withdrawal id="003">5.00</withdrawal>
>         <withdrawal id="004">10.00</withdrawal>
>         <withdrawal id="005">12.00</withdrawal>
>         <withdrawal id="006">250.00</withdrawal>
>         <withdrawal id="007">250.00</withdrawal>
>     </withdrawals>
> </transactions>
>
>
>
> and heres the related xslt file named transactions.xslt....  just change 
> the
> variables accordingly
>
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0"
>       xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; >
>
> <xsl:variable name="var_1">deposit</xsl:variable>
> <xsl:variable name="var_2">25.00</xsl:variable>
> <xsl:key name="varMatch_Deposit" match="//deposit" use="."/>
> <xsl:key name="varMatch_Withdrawal" match="//withdrawal" use="."/>
>
>     <xsl:template match="/">
>
>     <xsl:choose>
>         <xsl:when test="$var_1 = 'deposit'">
>
>             <xsl:for-each select="key('varMatch_Deposit', $var_2)">
>
>                 Deposit ID: <xsl:value-of select="@id"/><br/>
>                 Amount: <xsl:value-of select="."/><br/><br/><hr/>
>
>             </xsl:for-each>
>
>         </xsl:when>
>         <xsl:when test="$var_1 = 'withdrawal'">
>
>             <xsl:for-each select="key('varMatch_Withdrawal', $var_2)">
>
>                 Other ID: <xsl:value-of select="@id"/><br/>
>                 Other Amount: <xsl:value-of select="."/><br/><br/><hr/>
>
>             </xsl:for-each>
>
>         </xsl:when>
>         <xsl:otherwise>
>
>             //code for otherwise
>
>         </xsl:otherwise>
>     </xsl:choose>
>
>     </xsl:template>
> </xsl:stylesheet>
>
>
> Hope this helps.
>
> Best of luck!
>
> M.David
>
>
>
>
> ----- Original Message ----- 
> From: <aruniima.chakrabarti@xxxxxxxxxxxxxxxxxx>
> To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
> Sent: Monday, September 01, 2003 12:16 AM
> Subject: [xsl] genarate key using a variable
>
>
> > Hi All,
> > Is it possible to generate a xsl:key using a variable ?
> > As in  xsl:key element it does not allow me to use a variable in either
> > match or use attribute. So is there any other way to do the same...
> >
> > e.g.
> > I want to search for all Rows with attribute say "@Deposit = 1"
> > where I receive both the attribute & the attribute value as parameters
> > from the user.
> >
> >
> >
> > Regards,
> > aruniima
> >
> >
> >
> > DISCLAIMER:
> > This message contains privileged and confidential information and is
> > intended only for the individual named.If you are not the intended
> > recipient you should not disseminate,distribute,store,print, copy or
> > deliver this message.Please notify the sender immediately by e-mail if 
> > you
> > have received this e-mail by mistake and delete this e-mail from your
> > system.E-mail transmission cannot be guaranteed to be secure or 
> > error-free
> > as information could be intercepted,corrupted,lost,destroyed,arrive late
> > or incomplete or contain viruses.The sender therefore does not accept
> > liability for any errors or omissions in the contents of this message
> > which arise as a result of e-mail transmission. If verification is
> > required please request a hard-copy version.
> >
> >  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> >
> >
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>
>
>
>
> DISCLAIMER:
> This message contains privileged and confidential information and is 
> intended only for the individual named.If you are not the intended 
> recipient you should not disseminate,distribute,store,print, copy or 
> deliver this message.Please notify the sender immediately by e-mail if you 
> have received this e-mail by mistake and delete this e-mail from your 
> system.E-mail transmission cannot be guaranteed to be secure or error-free 
> as information could be intercepted,corrupted,lost,destroyed,arrive late 
> or incomplete or contain viruses.The sender therefore does not accept 
> liability for any errors or omissions in the contents of this message 
> which arise as a result of e-mail transmission. If verification is 
> required please request a hard-copy version.
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>
> 

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread