RE: [xsl] how to always call a template at the end of xsl:template

Subject: RE: [xsl] how to always call a template at the end of xsl:template
From: Xiaocun Xu <xiaocunxu@xxxxxxxxx>
Date: Tue, 21 Oct 2003 13:57:39 -0700 (PDT)
Ah, that is neat, thanks for the pointer.

--- Michael Kay <mhk@xxxxxxxxx> wrote:
> In XSLT 2.0 you can do
> 
> <xsl:template match="*" mode="#all" priority="10">
>   <xsl:next-match/>
>   <xsl:call-template name="logRowId"/>
> </xsl:template>
> 
> Michael Kay
> 
> > -----Original Message-----
> > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx 
> > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On
> Behalf Of Xiaocun Xu
> > Sent: 21 October 2003 18:19
> > To: xsl-list
> > Subject: [xsl] how to always call a template at
> the end of 
> > xsl:template
> > 
> > 
> > Hi,
> > 
> >   I need to log row ID for error reporting and
> this
> > has to be done at end of all rows regardless of
> > template mode.  The obvious way is to add
> > <xsl:call-template name="logRowId"/> at end of
> each of
> > the <xsl:template match="row"> regardless of mode,
> the
> > problem is maintainence as I need to pepper this
> call
> > to all row templates (there are a number of row
> > templates with different modes) and I need to
> continue
> > remember add this call at end of each new row
> template
> > mode in the future.  Is there a clean way to
> always
> > call template logRowId at end of <xsl:template
> > match="row"> regardless of mode?  Sample source
> XML
> > and XSLT below.
> > 
> > thanks,
> > Xiaocun
> > 
> > Source XML:
> > <row row="7">
> > 	<cell column="1">host</cell>
> > 	<cell column="3">fsc1_BA1</cell>
> > 	<cell column="4">unacknowledged</cell>
> > 	<cell column="5">rfx</cell>
> > 	<cell column="7">lead</cell>
> > </row>
> > <row row="9">
> > 	<cell column="1">respondent</cell>
> > 	<cell column="2">s1</cell>
> > 	<cell column="3">s1_AM1</cell>
> > 	<cell column="4">unacknowledged</cell>
> > 	<cell column="5">rfx</cell>
> > </row>
> > 
> > 
> > XSLT:
> > <xsl:apply-templates select="//row[@row &lt; 8]"
> > mode="host"/>
> > <xsl:apply-templates select="//row[@row &gt; 8]"
> mode="respondent"/>
> > 
> > <xsl:template match="row" mode="host">
> > 	<!-- skip unnecessary details -->
> > 	<xsl:call-template name="logRowId"/>
> > </xsl:template>
> > <xsl:template match="row" mode="respondent">
> > 	<!-- skip unnecessary details -->
> > 	<xsl:call-template name="logRowId"/>
> > </xsl:template>
> > 
> > <!-- log row ID for error reporting -->
> > <xsl:template name="logRowId">
> > 	<xsl:element name="Logs">
> > 		<xsl:attribute name="rowID"><xsl:value-of 
> > select="@row"/></xsl:attribute>
> > 	</xsl:element>
> > </xsl:template>
> > 
> > __________________________________
> > Do you Yahoo!?
> > The New Yahoo! Shopping - with improved product
> search 
> http://shopping.yahoo.com
> 
>  XSL-List info and archive: 
> http://www.mulberrytech.com/xsl/xsl-list
> 
> 
>  XSL-List info and archive: 
> http://www.mulberrytech.com/xsl/xsl-list
> 


__________________________________
Do you Yahoo!?
The New Yahoo! Shopping - with improved product search
http://shopping.yahoo.com

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


Current Thread