This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Looping over characters in a string
- To: <xsl-list at lists dot mulberrytech dot com>
- Subject: RE: [xsl] Looping over characters in a string
- From: "Jarno Elovirta" <jarno at codeonline dot com>
- Date: Thu, 10 May 2001 09:12:44 +0300
- Reply-To: xsl-list at lists dot mulberrytech dot com
Heippa!
> Is it possible to loop over characters in a string? For example, I want:
>
> XML: <tag>value</tag>
>
> HTML: XXXXXvalue
> (5 X's, 1 for each character of 'value')
>
[...]
>
> Does anyone have the magic XSL code for this?
Not exactly magic, but would this do?
[c:\temp]type test.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<tag>value</tag>
[c:\temp]type test.xsl
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
<xsl:template match="/">
<xsl:call-template name="loop">
<xsl:with-param name="index" select="string-length(tag)" />
</xsl:call-template>
<xsl:value-of select="tag"/>
</xsl:template>
<xsl:template name="loop">
<xsl:param name="index" />
<xsl:if test="$index">
<xsl:text>X</xsl:text>
<xsl:call-template name="loop">
<xsl:with-param name="index" select="$index - 1" />
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
[c:\temp]jd test.xml test.xsl
XXXXXvalue
Or if you want to use the Piez Method/Hack
[c:\temp]type test.xsl
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
<xsl:template match="/">
<xsl:for-each select="(document('')//node())[position() <=
string-length(current()/tag)]">X</xsl:for-each>
<xsl:value-of select="tag"/>
</xsl:template>
</xsl:stylesheet>
Hope this wasn't too boring, hopefully someone else will post magic XLST,
which will be really cool and ASCII art too.
Jarno - Wumpscut: I Want You
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list