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

From: Blankner, Sherrod (Sherrod.Blankner@schwab.com)
Date: Wed Aug 11 2004 - 09:29:51 PDT

  • Next message: Jorge.Bernad@incony.de: "[xep-support] TIFF Images"

    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@renderx.com on behalf of Werner Donné
    > Reply To: xep-support@renderx.com
    > Sent: Wednesday, August 11, 2004 1:26 AM
    > To: xep-support@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@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@re.be
    >
    > -------------------
    > (*) To unsubscribe, send a message with words 'unsubscribe xep-support'
    > in the body of the message to majordomo@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@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



    This archive was generated by hypermail 2.1.5 : Wed Aug 11 2004 - 09:45:43 PDT