Re: [xsl] Confusing namespaces and xslt

Subject: Re: [xsl] Confusing namespaces and xslt
From: David Carlisle <davidc@xxxxxxxxx>
Date: Thu, 2 Oct 2008 22:03:12 +0100
> When I added those modes I saw nothing in the output, i.e. it was
> almost as if the template didn't match. When I removed them then I'd
> get a match.

a template in a mode (just as a template in the default unnamed mode)
has no effect unless you apply templates in that mode to a node that
matches the template, so most likely you didn't apply templates at the
right point (but it's hard to guess given no information).

If you have lots of elements that you want to add after lots of
different elements you'd do something like

  <xsl:template match="@* | node()">
   <xsl:copy>
     <!-- Everything here (inside <xsl:copy>) only applies to elements -->
     <xsl:apply-templates select="@*"/>
     <xsl:apply-templates mode="content" select="."/>
     <xsl:apply-templates mode="append" select="."/>
   </xsl:copy>
   <xsl:apply-templates mode="after" select="."/>
  </xsl:template>

then by default you'd want nothing added after things so

  <xsl:template match="@* | node()" mode="after"/>

but if you want to add something after box you'd do

<xsl:template mode="after" match="box">
 <tape/>
</xsl:template>


Note in this form you don't need to repeat the "standard processing" for
the box element.

David

________________________________________________________________________
The Numerical Algorithms Group Ltd is a company registered in England
and Wales with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.

This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs. 
________________________________________________________________________

Current Thread