This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: string-length


> I want to select all nodes (in order) as long as the additive
> string length is less then 915
> <CATEGORY>
>         <DATA>
>                 ....
>         </DATA>
>         <DATA>
>                 ....
>         </DATA>

Use recursion, and pass the length of cumulative length of your string
as a parameter.  Wrap the whole thing inside a variable.

 <xsl:variable name="str">
   <xsl:call-template name="add-data"/>
 </xsl:variable>

 <xsl:template name="add-data">
   <xsl:param name="strlen" select="0"/>
   <xsl:param name="index" select="1"/>
   <xsl:if test="strlen &lt; 915">
     <xsl:value-of select="DATA[$index]"/>
   </xsl:if>
   <xsl:if test="$index &lt;= count(DATA)">
     <xsl:call-template name="add-data">
       <xsl:with-param name="strlen"
                select="$strlen+string-length(DATA[$index])"/>
       <xsl:with-param name="index"
                select="$index+1"/>
     </xsl:call-template>
   <xsl:if>
 </xsl:template>

(Untested, and probably not exactly what you want when, e.g., the first
DATA node has more than 915 characters, but you get the idea)

 Steve


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]