[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: How Can You Exit an xsl:for-each Loop Prematurely?

Subject: Re: How Can You Exit an xsl:for-each Loop Prematurely?
From: Michael Teigman <michael.teigman@xxxxxxxxxxx>
Date: Thu, 23 Sep 1999 15:33:12 -0400
xsl for each exit
I was afraid that using the example with a null was going to oversimplify the
problem.

Here is a portion of my actual XLM which I am supplied and have no control over.

<METADATA>
     <CODES CLASS="CATEGORY">
          <CODE CODE="NEWS"/>
          <CODE CODE="IT"/>
          <CODE CODE="DE"/>
          <CODE CODE="EUROPE"/>
          <CODE CODE="CRIM"/>
          <CODE CODE="GB"/>
          <CODE CODE="ODD"/>
     </CODES>
</METADATA>

<StringMap>
     <textIn SupCat="AAA" iCat="Ratings News"/>
     <textIn SupCat="ADV" iCat="Advertising"/>
     <textIn SupCat="ODD" iCat="Human Interest"/>
     <textIn SupCat="GB" iCat="Great Britain"/>
</StringMap>

The actual transformation is to see if any CODE attribute in the METADATA
matches any SupCat in the StringMap and if it does then output the iCat value.

BUT I want to output only one match, i.e., if there is more than one match (as
in this case GB and ODD both match) I want only one of them.

I would also like it to be determinant which would be output given the ordering
in the METADATA and/or the StringMap.

I am able to write a transform which gets all of the matches but not only the
"first".

     mike




                                                                  
 (Embedded                                                        
 image moved   Steve Dahl <sdahl@xxxxxxxxxxx>                     
 to file:      09/23/99 02:02 PM                                  
 pic25952.pcx)                                                    
                                                                  



To:   Michael Teigman <michael.teigman@xxxxxxxxxxx>
cc:    (bcc: Michael Teigman/HPG/US/Reuters)
Subject:  Re: How Can You Exit an xsl:for-each Loop Prematurely?






Try something like this:

<xsl:for-each select="//Salesman/Orders/@Order[string(.) != ''][1]">
    ...output something...
</xsl:for-each/>

The first bracket should eliminate empty attributes, and the second should
restrict the search to the
first one only.


Michael Teigman wrote:

> My source XML has an element with a set of attributes with the same name e.g.,
>
> <Salesman>
>      <Orders Order=""/>
>      <Orders Order=""/>
>      <Orders Order="zzzzzzzzz"/>
>      <Orders Order="ee"/>
> </Salesman>
>
> To simplify, I am doing the equivalent of trying to find the first non-null
> Order, e.g.:
>
> <xsl:for-each select="//Salesman/Orders/@Order">
>      <xsl:variable name="orderID">
>                     <xsl:value-of select="."/>
>      </xsl:variable>
>      <xsl:if test="string-length($orderID) > 0">
>           ..... output something .....
>      </xsl:if>
> </xsl:for-each>
>
> I want only the first output. I do not want multiple outputs.
>
> How could I exit after the first or suppress the additional outputs after I
have
> found one?
>
>      mike

--
- Steve Dahl
sdahl@xxxxxxxxxxx





------------------------------------------------------------------------
Any views expressed in this message are those of the individual  sender,
except  where  the  sender  specifically  states them to be the views of
Reuters Ltd.

Attachment: pic25952.pcx
Description: Binary data

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.