xsl-list
[Top] [All Lists]

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

2004-12-04 07:27:31

Leaving aside the question of why you are using <xsl:text> 
for the output you might find recursion more maintainable 
than "if" although a little more verbose. Perhaps something 
like this (untested).

<xsl:template match="prosody" name="format-prosody">
 <xsl:param name="atts" select="@*"/>

   <xsl:for-each select="$atts[1]">
   <xsl:choose>

    <xsl:when test="self::pitch='x-high'">
     <xsl:text>&lt;PITCH BASE="70%"&gt;</xsl:text>
     <xsl:call-template name="format-prosody">
        <xsl:with-param name="atts" select="$atts[position()>1]"/>
     </xsl:call-template>
     <xsl:text>&lt;/PITCH&gt;</xsl:text>
    </xsl:when>

    <xsl:when test="self::rate='slow'">
     <xsl:text>&lt;RATE SPEED="-40%"&gt;</xsl:text>
     <xsl:call-template name="format-prosody">
        <xsl:with-param name="atts" select="$atts[position()>1]"/>
     </xsl:call-template>
     <xsl:text>&lt;/RATE&gt;</xsl:text>
    </xsl:when>

    <xsl:otherwise>
     <xsl:call-template name="format-prosody">
        <xsl:with-param name="atts" select="$atts[position()>1]"/>
     </xsl:call-template>
    </xsl:otherwise>

   </xsl:choose>
   </xsl:for-each>

   <xsl:if test="count($atts)=0">
           <xsl:apply-templates/>
   </xsl:if>

</xsl:template>

Kev.

On Saturday 04 December 2004 17:34, Paul Giannaros wrote:
On Saturday 04 December 2004 13:45, George Cristian Bina 
wrote:
Hi,

You can do something like below:

<xsl:if test="@pitch='x-high'">
     <xsl:text>&lt;PITCH BASE="70%"&gt;</xsl:text>
     <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:text>&lt;/PITCH&gt;</xsl:text>
</xsl:if>

That would work, but would not be very practical. There
are quite a few options and this would force me to have
to write a _very_ long nested if statement. Any other
solutions?

--~----------------------------------------------------
-------------- XSL-List info and archive: 
http://www.mulberrytech.com/xsl/xsl-list To
unsubscribe, go to:
http://lists.mulberrytech.com/xsl-list/ or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

--~------------------------------------------------------
------------ XSL-List info and archive: 
http://www.mulberrytech.com/xsl/xsl-list To unsubscribe,
go to: http://lists.mulberrytech.com/xsl-list/ or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--