| 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,'
','~')),'~','
'
)" />
       </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,'
> 
','~')),'~',' 
')" />
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,'
               
','~')),'~',' 
')" />"
       </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 | 
|---|
| 
 | 
| <- Previous | Index | Next -> | 
|---|---|---|
| Re: [xsl] xslt 1.1 - one liner, Dimitre Novatchev | Thread | RE: [xsl] xslt 1.1 - one liner, Michael Kay | 
| RE: RE: [xsl] Help quoting sequence, cknell | Date | Re: [xsl] Removing an XML Attribute, Tony Graham | 
| Month |