- From: Jeremias Maerki <dev@jeremias-maerki.ch>
- Date: Fri, 22 Feb 2008 10:43:04 +0100
- To: www-xsl-fo@w3.org
Small mistake in your XSLT code: for a space, the space PLUS a nbspace was inserted. That way, the break possibility remains. Should be: <xsl:when test="substring($remaining-address, 1, 1) = ' '"> <xsl:choose> <xsl:when test="$prev-char != ','"> <!-- if the preceding character was not a comma, use a non-breaking space --> <xsl:text> </xsl:text> </xsl:when> <xsl:otherwise> <!-- if the preceding character was a comma, use a normal space --> <xsl:value-of select="substring($remaining-address, 1, 1)" /> </xsl:otherwise> </xsl:choose> <xsl:call-template name="space_2_white"> <xsl:with-param name="remaining-address" select="substring($remaining-address, 2)" /> </xsl:call-template> </xsl:when> On 21.02.2008 12:18:12 John Virgo wrote: > > Hi, > > I tried your suggestion, however I'm still seeing the issue. I've > attached a sample code block to show you what I'm doing (wrongly I > assume :P ) > > <!-- Replace all white space characters with a non-breaking space to > prevent line breaking --> > <xsl:template name="space_2_white"> > <xsl:param name="remaining-address" select="''" /> > <xsl:param name="prev-char" select="0" /> > <xsl:choose> > <xsl:when test="not($remaining-address)" /> > <!-- Exit on null string --> > > <xsl:when test="substring($remaining-address, 1, > 1) = ' '"> > <!-- if the preceding character was a > comma, use a normal space --> > <xsl:value-of > select="substring($remaining-address, 1, 1)" /> > <!-- if the preceding character was not > a comma, use a non-breaking space --> > <xsl:if test="$prev-char != > ','"> </xsl:if> > > <xsl:call-template name="space_2_white"> > <xsl:with-param > name="remaining-address" select="substring($remaining-address, 2)" /> > </xsl:call-template> > </xsl:when> > > <xsl:otherwise> > <!-- Insert the next char, and recur --> > <xsl:value-of > select="substring($remaining-address, 1, 1)" /> > <xsl:call-template name="space_2_white"> > <xsl:with-param > name="remaining-address" select="substring($remaining-address, 2)" /> > <xsl:with-param name="prev-char" > select="substring($remaining-address, 1, 1)" /> > </xsl:call-template> > </xsl:otherwise> > </xsl:choose> > </xsl:template> > > JV > > -----Original Message----- > From: www-xsl-fo-request@w3.org [mailto:www-xsl-fo-request@w3.org] On > Behalf Of Jeremias Maerki > Sent: 21 February 2008 09:11 > To: www-xsl-fo@w3.org > Subject: Re: Custom line-break requirement > > > You can replace all occurences of <space> with <nbspace> but leave all > occurences of <comma><space> as is. > > <nbspace> = non-breaking space =   > > HTH > > On 21.02.2008 09:49:01 JohnVirgo wrote: > > > > > > I've got an interesting problem that I've been struggling to find an > > answer to. > > > > I need to produce some text in the form of an address block, which > > only line breaks on ',' characters not on ' ' characters. > > > > I.e. Currently I get: > > 1234 Thingy drive, New York, New > > York, Some county, AC 0DE > > > > Where I want address elements to stay together: > > 1234 Thingy drive, New York, > > New York, Some county, > > AC 0DE > > > > I've tried several techniques to no avail: > > keep-together attribute doesn't seem to have a way to override the > > logic to do this. > > Inserted a white printable char for each space, still gets treated as > > a place to break. > > Can't reliably calculate line width of manual breaking with a variable > > > width font by char count. > > > > Any ideas? > > > > Thanks, JV > > -- > > View this message in context: > > http://www.nabble.com/Custom-line-break-requirement-tp15606844p1560684 > > 4.html Sent from the w3.org - www-xsl-fo mailing list archive at > > Nabble.com. > > > > > > > Jeremias Maerki > > > Jeremias Märki _________________________________________________________ Jeremias Märki, Software-Development and Consulting Contact Information: http://www.jeremias-maerki.ch/contact.html Blog: http://www.jeremias-maerki.ch/blog/
Received on Friday, 22 February 2008 09:43:23 UTC