Subject: RE: [xsl] Do Templates Conflict? From: "Andrew Welch" <ajwelch@xxxxxxxxxxxxxxx> Date: Thu, 5 May 2005 09:26:17 +0100 |
> 1. The one with highest "import precedence" is selected > (Import precedence is determined by your import hierarchy > when you use > xsl:import to bring in stylesheet modules, enabling you > to override > imported templates transparently in an importing > stylesheet. If you > want modularity without this behavior, use xsl:include.) There is a massive gotcha here (or a bug in the spec, depending on your point of view). Consider a stylesheet that imports two stylesheets, which both contain a template that matches the same element: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:import href="a.xsl"/> <xsl:import href="b.xsl"/> <xsl:template match="/"> <xsl:apply-imports/> </xsl:template> </xsl:stylesheet> 'a.xsl': <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="node" priority="10">A</xsl:template> </xsl:stylesheet> 'b.xsl': <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="node">B</xsl:template> </xsl:stylesheet> Note the template in 'a.xsl' specifies priority 10. Even with this, the output is 'B' from 'b.xsl'. Because the first rule in template conflict resolution is import precedence, and one of the rules of import precedence is 'the last import wins', so the processor ignores all the usual ways to control priority. > One reason many of us like Saxon for development is that > Saxon will signal > a warning before it uses the last best template. MSXML simply > uses that > one. Other processors signal an error. YMMV. However in this case, the usual "ambiguous rule match" warning isn't output, making it very hard to track down. I have asked Mike on the Saxon list a while back if it's possible to give a warning for this specific case, so hopefully it will make it into 8.5 :) (From memory I think it wasn't possible for the priority attribute to work across the 'built' stylesheet, so a warning is next-best). cheers andrew
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Do Templates Conflict?, Pawson, David | Thread | RE: [xsl] Do Templates Conflict?, Michael Kay |
[xsl] HELP, Validate generated XML , Seng Kiat Lim | Date | Re: [xsl] A challenge.. Group Perio, David Carlisle |
Month |