Re: [xsl] Creating nested output from <xsl:if>'s

Subject: Re: [xsl] Creating nested output from <xsl:if>'s
From: George Cristian Bina <george@xxxxxxx>
Date: Sat, 04 Dec 2004 18:17:41 +0200
Hi Paul,

Yes, it should be a xsl:choose instead of xsl:if.
<xsl:template name="checkPitch">
      <xsl:when test="@pitch='x-high'">
          <xsl:text>&lt;PITCH BASE="70%"&gt;</xsl:text>
          <xsl:call-template name="checkRate"/>
          <xsl:text>&lt;/PITCH&gt;</xsl:text>
      </xsl:when>
      <xsl:otherwise>
          <xsl:call-template name="checkRate"/>
      </xsl:otherwise>
</xsl:template>

Best Regards,
George
---------------------------------------------------------------------
George Cristian Bina
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com


Paul Giannaros wrote:


On Saturday 04 December 2004 14:02, George Cristian Bina wrote:

Hi Paul,

You can also do this with a chain of named templates, each performs one
check and delegates to the next:

<xsl:template name="checkPitch">
    <xsl:if test="@pitch='x-high'">
        <xsl:text>&lt;PITCH BASE="70%"&gt;</xsl:text>
        <xsl:call-template name="checkRate"/>
        <xsl:text>&lt;/PITCH&gt;</xsl:text>
    </xsl:if>
</xsl:template>
<xsl:template name="checkRate">
    <xsl:if test="@rate='slow'">
        <xsl:text>&lt;RATE SPEED="-40%"&gt;</xsl:text>
        <xsl:apply-templates/>
        <xsl:text>&lt;/RATE&gt;</xsl:text>
    </xsl:if>
</xsl:template>
<xsl:template match="//prosody">
    <xsl:call-template name="checkPitch"/>
</xsl:template>

Best Regards,
George


Thanks again for your reply George, but would this not mean that if pitch was not set to x-high then checkRate would not be called? Again, this would mean a very huge file if I had to do this for every combination of attributes for the prosody element.

Current Thread