[xsl] Template priority problem

Subject: [xsl] Template priority problem
From: Chris Bowditch <bowditch_chris@xxxxxxxxxxx>
Date: Tue, 06 Sep 2005 16:38:24 +0100
I have a requirement to copy a source XML input file but adjust just a couple of elements in the file. I thought this would be real simple but I can't get it to work. I have two templates, one specific to match elements I want to change and a identity transform one. Here is the XSL I have:

<xsl:template match="field" priority="2">
<xsl:variable name="fieldindex" select="@index"/>
<xsl:variable name="fieldname" select="ancestor::dataSet/fielddefinition[$fieldindex]/@label"/>
<field>
<xsl:value-of select="."/>
</field>
</xsl:template>
<xsl:template match="* | comment() | text() | processing-instruction() | @*" priority="1">
<xsl:copy>
<xsl:apply-templates select="* | comment() | text() | processing-instruction() | @*"/>
</xsl:copy>
</xsl:template>


The problem is the template that matches field elements is always ignored, despite the higher priority! So I just get an exact copy of the input XML. Can someone explain why this is and offer a simple solution to my requirement.

Thanks,

Chris

Current Thread