Subject: RE: [xsl] how to get total string-length() From: "Matthew L. Avizinis" <mla@xxxxxxxxx> Date: Fri, 2 Aug 2002 10:01:21 -0400 |
> -----Original Message----- > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of J.Pietschmann > Sent: Thursday, August 01, 2002 3:46 PM > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Re: [xsl] how to get total string-length() > > > Matthew L. Avizinis wrote: > > Hello all, > > If I have the following snippet: > > > > <fo:block margin-right="{concat(NNN*1.5),'mm')}"> > > --------------------------------^^^ > > <xsl:call-template name="process-nodes"/> > > <xsl:if test="not(@no-pg-num)"> > > <fo:leader leader-pattern="dots" leader-pattern-width="2.0mm" > > leader-alignment="reference-area"/> > > </xsl:if> > > <xsl:for-each > > select="document(concat($libname,'/index.xml'))//index/index-term[@id = > > $primary]"> > > <xsl:value-of select="."/><xsl:if test="position() != > > last()">, </xsl:if> > > </xsl:for-each> > > </fo:block> > > > > In the for-each line I grab each index-term that has an id that > matches the > > value in $primary. Thus I could have a line like > > the index entry..........123, 234, 345 > > > > What I want to be able to do is, using the example in the line above, > > calculate the number of characters in "123, 234, 345" and be > able to insert > > it in the NNN location in the block margin-right location. > Obviously I need > > to figure this out outside/before the block, but howto, that's > the question. > > This appears to be really easy: put it into a variable > and use string-length: > > <xsl:variable name="page-list"> > <xsl:for-each > select="document(concat($libname, > '/index.xml'))//index/index-term[@id = $primary]"> > <xsl:value-of select="."/><xsl:if test="position() != > last()">, </xsl:if> > </xsl:for-each> > </xsl:variable> > > > <fo:block margin-right="{concat(string-length($page-list)*1.5),'mm')}"> > <xsl:call-template name="process-nodes"/> > <xsl:if test="not(@no-pg-num)"> > <fo:leader leader-pattern="dots" leader-pattern-width="2.0mm" > leader-alignment="reference-area"/> > </xsl:if> > <xsl:value-of select="$page-list"/> > </fo:block> > > If you have any markup in the page number list, like fo:basic-links, > use xsl:copy-of instead of xsl:value-of. > > J.Pietschmann > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] how to get total string-l, J.Pietschmann | Thread | RE: [xsl] how to get total string-l, Matthew L. Avizinis |
RE: [xsl] Table of contents, Andrew Welch | Date | RE: [xsl] how to get total string-l, Matthew L. Avizinis |
Month |