RE: [xsl] xslt 1.1 - one liner

Subject: RE: [xsl] xslt 1.1 - one liner
From: "Hasnain Panjwani" <niansah@xxxxxxxxx>
Date: Thu, 5 Jul 2007 21:51:57 +0200
Given below, what I want to do is to chop off the spaces on the left, but
keep the line breaks. The one liner does exactly that - never claimed it was
a replacement of trim()!
One problem though - it leaves one space character in the beginning...

So this...

<someText>
                     This is some text to check
                     1) if it does what I want to do
                     2) Paris is in germany
                     3) Soccer is a fancy name for ping-pong
                     I want to remove the 21 white space character from each
line
                     I want to keep the line breaks, so the format is
maintained.
</someText> 

With this xslt:

 <xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
 <xsl:strip-space elements="*" />
 <xsl:output method="text"/>

 <xsl:variable name="vText" select="string(/)"/>
       <xsl:template match="/">
               <xsl:value-of
select="translate(normalize-space(translate($vText,'&#10;','~')),'~','&#10;'
)" />
       </xsl:template>
</xsl:stylesheet>

Will give:

 This is some text to check
 1) if it does what I want to do
 2) Paris is in germany
 3) Soccer is a fancy name for ping-pong
 I want to remove the 21 white space character from each line
 I want to keep the line breaks, so the format is maintained.

---------------------------------





-----Original Message-----
From: Dimitre Novatchev [mailto:dnovatchev@xxxxxxxxx] 
Sent: Thursday, July 05, 2007 5:51 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [xsl] xslt 1.1 - one liner

> <xsl:value-of select="translate(normalize-space(translate($text,'
> &#10;','~')),'~',' &#10;')" />



The above code does not implement trim()   !


For example, when this transformation:

<xsl:stylesheet version="1.1"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

 <xsl:output method="text"/>

 <xsl:variable name="vText" select="string(/)"/>
       <xsl:template match="/">
               "<xsl:value-of
select="translate(normalize-space(translate($vText,'
               &#10;','~')),'~',' &#10;')" />"
       </xsl:template>
</xsl:stylesheet>


is applied against this xml document:

<someText>

  This is    some text

</someText>


the result is:

               "      This is    some text      "


The function f:trim()
 (See:
http://fxsl.cvs.sourceforge.net/fxsl/fxsl-xslt2/Tests/testFunc-Trim.xsl?view
=markup)

 returns:

'This is    some text'




--
Cheers,
Dimitre Novatchev
---------------------------------------
Truly great madness cannot be achieved without significant intelligence.
---------------------------------------
To invent, you need a good imagination and a pile of junk
-------------------------------------
You've achieved success in your field when you don't know whether what
you're doing is work or play

No virus found in this incoming message.
Checked by AVG Free Edition. 
Version: 7.5.476 / Virus Database: 269.10.0/886 - Release Date: 4/7/2007
1:40 PM
 

No virus found in this outgoing message.
Checked by AVG Free Edition. 
Version: 7.5.476 / Virus Database: 269.10.0/886 - Release Date: 4/7/2007
1:40 PM

Current Thread