xsl-list
[Top] [All Lists]

Re: [xsl] "Return" from a function?

2006-06-01 02:42:48
On 6/1/06, Mukul Gandhi <gandhi(_dot_)mukul(_at_)gmail(_dot_)com> wrote:
On 6/1/06, Phillip B Oldham <phillip(_dot_)oldham(_at_)kilo75(_dot_)com> wrote:
> Though, thinking about it, I suppose I could do something like the
> following (thanks *Andrew*):
>
> <xsl:template match="/subscriptions/item[renewaldate]">
> <p>Your renewal date for <xsl:value-of select="subscriptionname" /> is:
> <xsl:value-of select="renewaldate" />.</p>
> </xsl:template>
>
> <xsl:template match="/subscriptions/item[not(renewaldate)]">
> <p>Sorry, there has been an error...</p>
> </xsl:template>
>
> Feels weird though, because actions for the same element aren't being
> kept "together" (within the same template), but it does look more useful
> than a return.

I think, you can write

<xsl:template match="/subscriptions/item">
   <xsl:choose>
      <xsl:when test="renewaldate">
         <p>Your renewal date for <xsl:value-of select="subscriptionname" /> is:
         <xsl:value-of select="renewaldate" />.</p>
     </xsl:when>
     <xsl:otherwise>
        <p>Sorry, there has been an error...</p>
     </xsl:otherwise>
</xsl:template>

You could, but one of the great benefits of keeping everything in
individual templates is that you could then override a template with
an importing stylesheet.

For example, if you had the requirement to alter the error message for
a particular customer, all you would need to do is create a new
stylesheet that imports the existing stylesheet:

<xsl:stylesheet ...>
 <xsl:import href="main.xslt"/>
 <xsl:template match="/subscriptions/item[not(renewaldate)]">
   <p> Customer specific error message </p>
 </xsl:template>
</xsl:stylesheet>

You wouldnt have to touch the existing code which means you wouldn't
risk breaking anything for existing customers, wouldn't have to
re-test everything etc.

This, I think, is another good design rule: when a template contains a
choose/when as its only child, separate it out into individual
templates.

--~------------------------------------------------------------------
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>
--~--

<Prev in Thread] Current Thread [Next in Thread>