RE: [xsl] RE: XSL-List Digest V4 #1168

Subject: RE: [xsl] RE: XSL-List Digest V4 #1168
From: "Conal Tuohy" <conalt@xxxxxxxxxxxxxxx>
Date: Thu, 20 Mar 2003 12:56:10 +1200
Walter Crockett wrote:

> 	I'm updating an old stylesheet that still works, but it calls 
> xmlns:xsl="http://www.w3.org/TR/WD-xsl"; instead of the modern version.
> 
> This seems to prevent me from using simple functions like position().
> 
> When I change to http://www.w3.org/1999/XSL/Transform, it 
> breaks because it
> uses the now-defunct xsl:eval.
> 
> <xsl:if test="@Level">  
>      <xsl:eval>makeTreePath(this)</xsl:eval>
> </xsl:if>
> 
> It needs this to make a nice tree in HTML:
> 
>  <xsl:script>
>    <![CDATA[
>       function makeTreePath(e)
>       {
>           var depthChar="|---";
>           var result="";
>           var i; 
>           var j = e.getAttribute("Level");         
> 
>           for(i = 0;i < j;i++){
>               result += depthChar;               
>           }
>           
>           return result;
>       } 
>    ]]>
>    </xsl:script>

This is a FAQ: http://www.dpawson.co.uk/xsl/sect2/repetition.html

Replace the javascript function with a named template like this:

<xsl:template name="makeTreePath">
  <xsl:param name="n"/>
  <xsl:if test="number($n) > 0">
    <xsl:text>|---</xsl:text>
    <xsl:call-template name="makeTreePath">
      <xsl:with-param name="n" select="number($n) - 1"/>
    </xsl:call-template>
  </xsl:if>
</xsl:template>

and call it like this:

<xsl:if test="@Level">  
      <xsl:call-template name="makeTreePath">
		<xsl:with-param name="n" select="@Level"/>
	</xsl:call-template>
</xsl:if>

Cheers!

Con

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


Current Thread