Subject: Re: [xsl] Variable value change based on condition From: sudheshna iyer <sudheshnaiyer@xxxxxxxxx> Date: Tue, 5 Oct 2010 05:59:33 -0700 (PDT) |
Thank you all, for the reply. This is my requirement: ==== I have 3 input variables (inputVar1, inputVar2, inputVar3) and 3 output variables (outputTempVar1, outputVar1, outputVar2) I need to copy these input variables to output variables based on some condition. Conditions: 1. If all the 3 input variables are present (element present with no blanks), map inputVar1 -> outputTempVar1, map inputVar2 -> outputVar1 and map inputVar3 -> outputVar2. 2. If there are only two input variables present (inputVar1, inputVar2), map inputVar1 -> outputVar1 and map inputVar2 -> outputVar2. 3. If there is only one input variable is present (inputVar1), map inputVar1 -> outputVar1. So output variables get their values based on input variable's presence (element being present and not empty). I am trying to transform one xml to another. So input variables come from input xml. ==== Can this be achieved in xslt 1.0? --- On Tue, 10/5/10, Mukul Gandhi <gandhi.mukul@xxxxxxxxx> wrote: > From: Mukul Gandhi <gandhi.mukul@xxxxxxxxx> > Subject: Re: [xsl] Variable value change based on condition > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Date: Tuesday, October 5, 2010, 7:33 AM > Hi Sudheshna, > Here's a little explanation please. > > On Tue, Oct 5, 2010 at 3:09 PM, sudheshna iyer <sudheshnaiyer@xxxxxxxxx> > wrote: > > I need a variable whose value can be changed based on > the if conditions. > > First of all, it's important to know that variables in XSLT > are > immutable (i.e their values cannot change once a value is > bound > initially to an XSLT variable). [1] > > I believe XSLT had these important design goals (like [1]), > with the > objective to prohibit side effects for computations in an > XSLT > environment, and not having fixed ordering of computing > XSLT > instructions. These are an essential characteristics of > functional > programming paradigm. Mutable variables produce side > effects, which is > not desirable in XSLT or for that matter in an functional > programming > paradigm. > > As David wrote, XSLT variables have a lexical scope. For > e.g please > consider this example: > > <xsl:variable name="x" value="'hello'" > /> [2] > <xsl:if test="true()"> > <xsl:variable name="x" value="'there'" > /> [3] > </xsl:if> > > Here variable [2] is not same as [3]. These are different > variables, > but their names are same ("x") -- this is a classic fallacy > when we > look at this concept from procedural programming point-of > view. The > scope of variable [3] is within the enclosing "if" only. > The scope of > variable [2] is for all XSLT instructions, which are > following sibling > to "if" instruction (i.e for all following siblings after > /xsl:if>), > and for any-of XSLT instruction between [2] and the > starting tag of > xsl:if (i.e <xsl:if ...) > > > I have 3 input variables (inputVar1, inputVar2, > inputVar3) and 3 output variables (outputTempVar1, > outputVar1, outputVar2) > > > > I need to copy these input variables to output > variables based on some condition. > > > > Conditions: > > If all the 3 input variables are present, map > inputVar1 -> outputTempVar1, map inputVar2 -> > outputVar1 and map inputVar3 -> outputVar2. > > you say that, variable is present if it's not empty (does > this mean, > it's value is a zero length string, but that's defined in > scope?) > > > So can I change the value of the output variable? How > can I achieve the above in xslt 1.0. > > No problems, but had you been using XPath 2.0, writing such > a logic > would have been quite simpler :) > > I think, you may explain the problem a little more, for us > to think > about the most appropriate solution. > > And I hope, this helps. > > > > -- > Regards, > Mukul Gandhi > > --~------------------------------------------------------------------ > 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@xxxxxxxxxxxxxxxxxxxxxx> > --~--
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Variable value change bas, Mukul Gandhi | Thread | Re: [xsl] Variable value change bas, David Carlisle |
Re: [xsl] Create an end element - p, [x] cross solution | Date | Re: [xsl] Variable value change bas, David Carlisle |
Month |