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="{(_at_)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(_at_)msn(_dot_)com]
Sent: Tuesday, November 25, 2003 1:33 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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