xsl-list
[Top] [All Lists]

Fw: [xsl] substring after/substring before

2009-03-28 08:52:04

...
With XSLT 1.0, the solution will be a bit lengthier. for e.g., you can
used a named template to tokenize the string recursively, and get the
result.

It does not need to be lengthier if your XSLT 1.0 processor supports
regexp:replace() EXSLT function -- DataPower processor does.

And it should be more efficient than recursive stylesheet calls.


<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
  xmlns:regexp="http://exslt.org/regular-expressions";

  <xsl:output method="xml" />

  <xsl:template match="/">
    <xsl:variable name="fname" select="regexp:replace
(.,' [^ ]*$','g','')" />
    <xsl:variable name="lname" select="substring-after(.,concat($fname,'
'))" />

    <xsl:value-of select="$fname" />#<xsl:value-of select="$lname" />
  </xsl:template>
</xsl:stylesheet>


Mit besten Grüßen / Best wishes,

Hermann Stamm-Wilbrandt
Developer, XML Compiler
WebSphere DataPower SOA Appliances
----------------------------------------------------------------------
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter
Geschäftsführung: Erich Baier
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294
----- Forwarded by Hermann Stamm-Wilbrandt/Germany/IBM on 03/28/2009 01:46
PM -----
                                                                       
             Mukul Gandhi                                              
             <gandhi(_dot_)mukul(_at_)gma                                       
  
             il.com>                                                    To
                                       
xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com 
             03/28/2009 12:38                                           cc
             PM                                                        
                                                                   Subject
                                       Re: [xsl] substring after/substring
             Please respond to         before                          
             xsl-list(_at_)lists(_dot_)mu                                       
  
              lberrytech.com                                           
                                                                       
                                                                       
                                                                       
                                                                       




With XSLT 2.0 this can done as following:

<xsl:variable name="str" select="'A. B. C. Surname'" />
<xsl:variable name="tokenList" select="tokenize($str, '\s+')" />
<xsl:variable name="fname" select="string-join($tokenList[position()
&lt; last()], ' ')" />
<xsl:variable name="lname" select="$tokenList[last()]" />

<fnm><xsl:value-of select="$fname" /></fnm>
<snm><xsl:value-of select="$lname" /></snm>

With XSLT 1.0, the solution will be a bit lengthier. for e.g., you can
used a named template to tokenize the string recursively, and get the
result.

On Sat, Mar 28, 2009 at 2:06 PM, Joga Singh Rawat 
<jrawat(_at_)aptaracorp(_dot_)com>
wrote:
Hi List,

Can I spilit a string into two parts by last space as substring-before(.,
'

'[last()]) is not getting accurate result.


Input :

A. B. C. Surname


Output:

<fnm>A.</fnm>

<snm>B. C. Surname</snm>


Required output

Output:

<fnm>A. B. C.</fnm>

<snm>Surname</snm>


Anybody have any clue???


Thanks

...JSR



--
Regards,
Mukul Gandhi

--~------------------------------------------------------------------
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>
--~--



--~------------------------------------------------------------------
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>