RE: [xsl] Strings Position

Subject: RE: [xsl] Strings Position
From: bryan.s.schnabel@xxxxxxxxxxxxxx
Date: Tue, 25 Nov 2003 14:18:52 -0800
Hi Bruno,

I may not have understood what you meant by shifting the string position by
position.  But here's a way of associating each character with its position.
If this is way wrong, please let me know, and I'll try to better understand.

This XML:

<p Zahlen='00643cam 022002291 04500' />

When processed with this XSL:

<xsl:template match="p">
 <xsl:variable name="shorter">
  <xsl:value-of select="substring-after(@Zahlen,substring(@Zahlen,1,1))" />
 </xsl:variable>
 <P number="{@Zahlen}">
  <xsl:element name="{concat('shift',string-length(@Zahlen))}">
   <xsl:value-of select="substring(@Zahlen,1,1)"/>
  </xsl:element>
  <xsl:call-template name="short">
   <xsl:with-param name="shortened" 
                   select="substring-after(@Zahlen,substring(@Zahlen,1,1))"
/>
  </xsl:call-template>
 </P>
</xsl:template>

<xsl:template name="short">
 <xsl:param name="shortened" />
 <xsl:variable name="shorter">
  <xsl:value-of
select="substring-after($shortened,substring($shortened,1,1))" />
 </xsl:variable>
 <xsl:element name="{concat('shift',string-length($shorter)+1)}">
  <xsl:value-of select="substring($shortened,1,1)"/>
 </xsl:element>
 <xsl:if test="string-length($shorter) > 0">
  <xsl:call-template name="short">
   <xsl:with-param name="shortened" 
 
select="substring-after($shortened,substring($shortened,1,1))" />
  </xsl:call-template>
 </xsl:if>
</xsl:template>

Gives you this result:

<P number="00643cam 022002291 04500">
   <shift24>0</shift24>
   <shift23>0</shift23>
   <shift22>6</shift22>
   <shift21>4</shift21>
   <shift20>3</shift20>
   <shift19>c</shift19>
   <shift18>a</shift18>
   <shift17>m</shift17>
   <shift16> </shift16>
   <shift15>0</shift15>
   <shift14>2</shift14>
   <shift13>2</shift13>
   <shift12>0</shift12>
   <shift11>0</shift11>
   <shift10>2</shift10>
   <shift9>2</shift9>
   <shift8>9</shift8>
   <shift7>1</shift7>
   <shift6> </shift6>
   <shift5>0</shift5>
   <shift4>4</shift4>
   <shift3>5</shift3>
   <shift2>0</shift2>
   <shift1>0</shift1>
</P>

Good luck,

Bryan

-----Original Message-----
From: Bruno LLopes [mailto:brunollopes@xxxxxxx] 
Sent: Tuesday, November 25, 2003 1:33 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: [xsl] Strings Position


Hi, 
I have a string for exemple '00643cam 022002291 04500'
and I need look at every position of the string a see if each element
has the correct value...
How can  I shift the string position by position?
use xslt...

thanks 

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread