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

Re: [xsl] shortest way to write this xsl:if statement


Subject: Re: [xsl] shortest way to write this xsl:if statement
From: Wolfgang Laun <wolfgang.laun@xxxxxxxxx>
Date: Fri, 15 Jun 2012 15:33:57 +0200

You don't need an if, the XPath should produce all nodes according to
the condition. So, just the xsl:for-each!

On 15/06/2012, henry human <henry_human@xxxxxxxx> wrote:
> sorry, but the resul with the xpath- query is the same. The if statement is
> ended after first finding of 'A'
>
> but there are at least for findings for B, C, D which should lead to
> creation of the code bellow of th if-statement
> ??
>
>
>
> ----- Urspr|ngliche Message -----
> Von: Wolfgang Laun <wolfgang.laun@xxxxxxxxx>
> An: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> CC:
> Gesendet: 15:17 Freitag, 15.Juni 2012
> Betreff: Re: [xsl] shortest way to write this xsl:if statement
>
> Sorry, I meant to indicate that this should produce all the nodes that
> should be processed by the loop,
>
>   <xsl:for-each select="....">
>
> On 15/06/2012, Wolfgang Laun <wolfgang.laun@xxxxxxxxx> wrote:
>> You might need an XPath expression
>>    test="D4/G10/(X,Y,Z)[. = ('A','B','C','D')]"
>> -W
>>
>>
>> On 15/06/2012, henry human <henry_human@xxxxxxxx> wrote:
>>> Now the problem is, the loop bellow of xsl:if is only one time created
>>> but
>>> I
>>> have more findings in the if statement
>>> regarding A, B, C, D (founds at least 4 times because D4/G100/6id = 'A' ,
>>> D4/G100/9id = 'B' , D4/G100/10id = 'C' , D4/G100/11id ='D')
>>> => the code bellow of the xsl:if statemnt should be repeated as much as
>>> if
>>> statement find A, B, C, D,..
>>>
>>>
>>>
>>>
>>> ----- Urspr|ngliche Message -----
>>> Von: G. Ken Holman <gkholman@xxxxxxxxxxxxxxxxxxxx>
>>> An: xsl-list@xxxxxxxxxxxxxxxxxxxxxx; "xsl-list@xxxxxxxxxxxxxxxxxxxxxx"
>>> <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
>>> CC:
>>> Gesendet: 13:59 Freitag, 15.Juni 2012
>>> Betreff: Re: [xsl] shortest way to write this xsl:if statement
>>>
>>>
>>> At 2012-06-15 12:54 +0100, henry human wrote:
>>>> Hello
>>>> The following if statement is too long if try it as in the sample
>>>> bellow.
>>>> How could be shorter?
>>>> The if - logic to create a for-each loop:
>>>> ----------------
>>>> xsl:if
>>>> D4/G100/6id  or D4/G100/9id or D4/G100/12id or D4/G100/6id15 or
>>>> D4/G100/45id or D4/G100/22id, D4/G100/10id
>>>> or D4/G100/19id is 'A' or 'B' or 'C', or 'D' or 'F'
>>>>
>>>> The Sample:
>>>> <xsl:if test="D4/G100/6id = 'A' OR test="D4/G100/6id = 'B' OR
>>>> test="D4/G100/6id = 'C' OR test="D4/G100/9id = 'A' OR test="D4/G100/9id
>>>> =
>>>> 'B' .....>
>>>>
>>>> <xsl:for-each select=" ......">
>>>> ...
>>>> </xsl:for-each>
>>>>
>>>> </xsl:if>
>>>
>>> Element names cannot begin with digits, so I'm unclear how you are going
>>> to
>>> be testing elements such as <6id>.
>>>
>>> But, assuming you had elements D4/G100/X and D4/G100/Y and D4/G100/Z, you
>>> could have in XSLT2 the following:
>>>
>>> <xsl:if test="D4/G100/(X,Y,Z) = ('A','B','C')">
>>>
>>> ... which is equivalent to:
>>>
>>>   D4/G100/X = 'A' or
>>>   D4/G100/X = 'B' or
>>>   D4/G100/X = 'C' or
>>>   D4/G100/Y = 'A' or
>>>   D4/G100/Y = 'B' or
>>>   D4/G100/Y = 'C' or
>>>   D4/G100/Z = 'A' or
>>>   D4/G100/Z = 'B' or
>>>   D4/G100/Z = 'C'
>>>
>>> When using the "=" comparison operator, either operand can be a set.  The
>>> processor walks through the comparisons in an arbitrary order eventually
>>> testing each of the left operand with each of the right operand and stops
>>> when it hits a true() result and returns true().  If you get a false()
>>> returned, you know the processor has checked every possible combination
>>> and
>>> every combination has returned false().
>>>
>>> I hope this helps.
>>>
>>> . . . . . . . . . . . Ken
>>>
>>> --
>>> Public XSLT, XSL-FO, UBL and code list classes in Europe -- Oct 2012
>>> Contact us for world-wide XML consulting and instructor-led training
>>> Free 5-hour lecture: http://www.CraneSoftwrights.com/links/udemy.htm
>>> Crane Softwrights Ltd.            http://www.CraneSoftwrights.com/s/
>>> G. Ken Holman                   mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
>>> Google+ profile: https://plus.google.com/116832879756988317389/about
>>> Legal business disclaimers:    http://www.CraneSoftwrights.com/legal


Current Thread
Keywords