|
Subject: [xsl] formatting lines to a fixed width. From: Kamal Bhatt <kbhatt@xxxxxxxxx> Date: Thu, 01 Dec 2005 12:00:37 +1100 |
title:[TAB]Blah BLah BLah blah blah blah blah [TAB] [TAB]BLAH BLAH
with input text: <Text>Blah BLah BLah blah blah blah blah
<xsl:template name="text-print"> <xsl:param name="txt"/> <xsl:param name="width"/> <xsl:param name="title"/> <xsl:param name="first"/> <xsl:param name="text-pos"/> <xsl:param name="space-padding"/>
<xsl:param name="space-pad">
<xsl:call-template name="repeat-chars">
<xsl:with-param
name="rep-chars"><xsl:text>&space;</xsl:text></xsl:with-param>
<xsl:with-param name="times" select="$space-padding"/>
<xsl:with-param name="str"></xsl:with-param>
</xsl:call-template>
</xsl:param>
<xsl:if test="$txt">
<xsl:variable name="real-width">
<xsl:call-template name="tune-width">
<xsl:with-param name="txt" select="$txt"/>
<xsl:with-param name="width" select="$width - $space-padding"/>
<xsl:with-param name="def" select="$width - $space-padding"/>
</xsl:call-template>
</xsl:variable> <xsl:choose>
<xsl:when test="$first = 'true' and $text-pos = 1">
<!-- TEXT OUTPUT BEGINS -->
<xsl:value-of select="$title"/>:<xsl:text>&tab;</xsl:text>
<xsl:value-of select="$space-pad"/>
<xsl:value-of select="substring($txt, 1, $real-width)"/>
<xsl:text>&newln;</xsl:text>
<!-- TEXT OUTPUT ENDS -->
</xsl:when>
<xsl:otherwise>
<!-- TEXT OUTPUT BEGINS -->
<xsl:text>&tab;</xsl:text>
<xsl:value-of select="$space-pad"/>
<xsl:value-of select="substring($txt, 1, $real-width)"/>
<xsl:text>&newln;</xsl:text>
<!-- TEXT OUTPUT ENDS -->
</xsl:otherwise>
</xsl:choose>
<xsl:call-template name="text-print">
<xsl:with-param name="txt"
select="substring($txt, $real-width + 1)"/>
<xsl:with-param select="$width" name="width"/>
<xsl:with-param name="first">false</xsl:with-param>
<xsl:with-param name="title" select="$title"/>
<xsl:with-param name="space-padding" select="$space-padding"/>
</xsl:call-template>
</xsl:if>
</xsl:template><xsl:template name="tune-width"> <xsl:param name="txt"/> <xsl:param name="width"/> <xsl:param name="def"/> <xsl:variable name="newln"><xsl:text>&newln;</xsl:text></xsl:variable>
<xsl:choose>
<xsl:when test="$width = 0">
<xsl:value-of select="$def"/>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="substring($txt, $width, 1) = ' '">
<xsl:value-of select="$width"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="tune-width">
<xsl:with-param name="txt" select="$txt"/>
<xsl:with-param name="width" select="$width - 1"/>
<xsl:with-param name="def" select="$def"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:template>| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Match the element that ha, David Carlisle | Thread | Re: [xsl] formatting lines to a fix, Kamal Bhatt |
| Re: [xsl] Match the element that ha, David Carlisle | Date | Re: [xsl] formatting lines to a fix, Kamal Bhatt |
| Month |