This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

RE: string split


Dave,
Try
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">


<xsl:template match="elem">
	<xsl:call-template name="links">
          	<xsl:with-param name="str" select="."/>
	</xsl:call-template>
</xsl:template>
<xsl:template name="links">
	<xsl:param name="str"/>

  	<xsl:choose>
    	<xsl:when test="contains($str,',')">
		<a href="#id{substring-before($str,',')}"><xsl:value-of
select="substring-before($str,',')"/></a>
      		<xsl:call-template name="links">
          		<xsl:with-param name="str" select="substring-after($str,',')" />
          	</xsl:call-template>
   	</xsl:when>
        <xsl:otherwise>
        	<a href="#id{$str}"><xsl:value-of select="$str"/></a>
        </xsl:otherwise>
      	</xsl:choose>
</xsl:template>
</xsl:stylesheet>

Ciao Chris

XML/XSL Portal
http://www.bayes.co.uk/xml


>Given
><doc>
><elem>5,6,7</elem>
></doc>
>
>I need an output of
>
><a href="#id5">5</a>&nbsp;<a href="#id6">6</a>&nbsp;<a
>href="#id7">7</a>&nbsp;
>
>I think its a recursive call to a string splitter template.
>I cant figure out how to 'build up the answer'
>
>template (non worker) is
>
> <xsl:template name="links">
>    <xsl:param name="str"/>
>  <xsl:param name="res"/>
>
>
>  <xsl:choose>
>    <xsl:when test="contains($str,',')">
>      <xsl:call-template name="links">
>          <xsl:with-param name="str" select="substring-after($str,',')"/>
>          <xsl:with-param name="res"><xsl:value-of select="$res"/>
>            <a href="#id{substring-before($str,',')}"><xsl:value-of
>select="substring-before($str,',')"/></a></xsl:with-param>
>          </xsl:call-template>
>        </xsl:when>
>        <xsl:otherwise>
>
>          <xsl:value-of select="$res"/>
>        </xsl:otherwise>
>      </xsl:choose>
>  </xsl:template>
>
>Called using
>
>  <xsl:call-template name="links">
>          <xsl:with-param name="str" select="."/>
>          <xsl:with-param name="res" select="''"/>
>        </xsl:call-template>
>
>Where . contains 5,6,7 as a string.
>
>Any help appreciated.
>DaveP
>
>
> XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]