[xep-support] Need to evaluate string-lengths for a set of no des--how?

Blankner, Sherrod Sherrod.Blankner at schwab.com
Wed Aug 11 09:29:51 PDT 2004


Werner:
Thanks for your reply! I was messing around with preceding sibing, but
following-sibling may do the trick. I'll let you know how it progresses.
skb

> ----------
> From: 	owner-xep-support at renderx.com on behalf of Werner Donné
> Reply To: 	xep-support at renderx.com
> Sent: 	Wednesday, August 11, 2004 1:26 AM
> To: 	xep-support at renderx.com
> Subject: 	Re: [xep-support] Need to evaluate string-lengths for a set
> of nodes--how?
> 
> Sherrod,
> 
> You can do apply-templates on the first name element. In the template
> matching this you do the normal work followed by an apply-templates
> on the following-sibling::name[1]. You pass the current total string
> to the next as a parameter.
> 
> ..
>    <xsl:apply-templates select="names/name[1]"/>
> ..
> 
> <xsl:template match="names/name">
>    <xsl:param name="current"/>
>    <xsl:choose>
>      <xsl:when test="string-length(.) + string-length($current) > 61">
>        print a line with $current
>        <xsl:choose>
>          <xsl:when test="not(following-sibling::name)">
>            print last line with context node
>          </xsl:when>
>          <xsl:otherwise>
>            <xsl:apply-templates select="following-sibling::name[1]">
>              <xsl:with-param name="current" select="text()"/>
>            </xsl:apply-templates>
>          </xsl:otherwise>
>        </xsl:choose>
>      </xsl:when>
>      <xsl:when test="not(following-sibling::name)">
>        print last line with $current and context node
>      </xsl:when>
>      <xsl:otherwise>
>        <xsl:apply-templates select="following-sibling::name[1]">
>          <xsl:with-param name="current" select="concat($current,
> text())"/>
>        </xsl:apply-templates>
>      </xsl:otherwise>
>    </xsl:choose>
> </xsl:template>
> 
> Regards,
> 
> Werner.
> 
> Blankner, Sherrod wrote:
> > 	Can anyone out there help me brainstorm some logic for a letter
> > recipient name:
> > 
> > 	We have a simple letter XSL that processes the following XML to fill
> > in the recipient name
> > 	<names>
> > 		<name>John Doe</name>
> > 		<name>Jane Doe</name>
> > 		<name>Jim Doe</name>
> > 		</names>
> > 
> > 	Currently our XSL is very straight forward
> > 
> > 			<fo:block>
> > 				<xsl:for-each select="names/name">
> > 					<fo:block>
> > 						<xsl:value-of select="."/>
> > 					</fo:block>
> > 				</xsl:for-each>
> > 				</fo:block>
> > 
> > 
> > However, with the new window size in the envelope, we can't stack names
> > indefinitely--we only have 6 lines for the total address, with a maximum
> of
> > three name lines if the address is in the US. I need logic that
> evaluates
> > whether the string length of a set of <name> tags is more than 61
> > characters, at which point I want to cut off and print just those names
> into
> > line 1. Then I need to start where line 1 left off and evaluate the next
> set
> > of <name> tags and see if these add up to under 61 characters, at which
> > point I can write in line 2, etc. I have three possible lines.
> > 
> > Does anyone have any suggestions?
> > I've been working with the string-length function, but I can't seem to
> get
> > it to increment up inside a for-each loop. I also messed around with
> some
> > param/call-templates functions but got the same result. 
> > 
> > Thanks
> > Sherrod
> > 
> > 
> > 
> > 
> > 
> > Sherrod Blankner
> > CRS Digital Studio
> > ---------------------------------------------------
> > 120 Kearny, 11th Floor
> > Desk: 415-636-5181
> > Cell: 415-225-9159
> > ---------------------------------------------------
> > 
> > -------------------
> > (*) To unsubscribe, send a message with words 'unsubscribe xep-support'
> > in the body of the message to majordomo at renderx.com from the address
> > you are subscribed from.
> > (*) By using the Service, you expressly agree to these Terms of Service
> http://www.renderx.com/tos.html
> > 
> > 
> 
> -- 
> Werner Donné  --  Re BVBA
> Engelbeekstraat 8
> B-3300 Tienen
> tel: (+32) 486 425803	e-mail: werner.donne at re.be
> 
> -------------------
> (*) To unsubscribe, send a message with words 'unsubscribe xep-support'
> in the body of the message to majordomo at renderx.com from the address
> you are subscribed from.
> (*) By using the Service, you expressly agree to these Terms of Service
> http://www.renderx.com/tos.html
> 
> 

-------------------
(*) To unsubscribe, send a message with words 'unsubscribe xep-support'
in the body of the message to majordomo at renderx.com from the address
you are subscribed from.
(*) By using the Service, you expressly agree to these Terms of Service http://www.renderx.com/tos.html



More information about the Xep-support mailing list