xsl-list
[Top] [All Lists]

RE: [xsl] xslt 1.1 - one liner

2007-07-05 12:52:21

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(_at_)gmail(_dot_)com] 
Sent: Thursday, July 05, 2007 5:51 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

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
 


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>