|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Using keys in templates
Hi Nicolas,
> I'm finding I'm using more and more constructs like :
>
> <xsl:key name="dists" match="/release/module/dist" use="@name"/>
>
> <xsl:template match="module/dist">
> <xsl:variable name="dist" select="@name"/>
> <xsl:if test="generate-id(.) = generate-id(key('dists',$dist))">
> something
> </xsl:if>
> </xsl:template>
>
> Would it be possible to kill the if using a syntax like :
>
> <xsl:template match="module/dist[some test]" priority="1">
> </xsl:template>
>
> <xsl:template match="module/dist" priority="0"/>
Yes -- you could use:
match="module/dist[generate-id(.) =
generate-id(key('dists', @name))]"
but it would probably be better to only select the <dist> elements
that you want to process when you do the <xsl:apply-templates>, as in:
<xsl:template match="module">
<xsl:apply-templates
select="dist[generate-id(.) =
generate-id(key('dists', @name))]" />
</xsl:template>
<xsl:template match="dist">
<!-- this template only processed for the first dist element with
each particular name -->
...
</xsl:template>
Locating which template to use to process a node takes time, so you
should try to apply templates to as small a set as possible rather
than trying to find a template for every node, but only doing
something with some of them.
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








