Re: [xsl] Error template trumping other templates on import?

Subject: Re: [xsl] Error template trumping other templates on import?
From: Steve <subsume@xxxxxxxxx>
Date: Mon, 27 Aug 2007 19:25:22 -0400
I understood that general principle, but I didn't necessarily see why
a match="*" would replace more specific matches.

-Steve

On 8/27/07, Michael Kay <mike@xxxxxxxxxxxx> wrote:
> Template rules in an included module have higher precedence than templates
> in an imported module, so if a node matches both, the rule in the included
> module will win.
>
> Michael Kay
> http://www.saxonica.com/
>
>
> > -----Original Message-----
> > From: Steve [mailto:subsume@xxxxxxxxx]
> > Sent: 27 August 2007 20:22
> > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > Subject: [xsl] Error template trumping other templates on import?
> >
> > Hello there,
> >
> > I've got master.xsl which is imported by local.xsl. local.xsl
> > also includes global.xsl. global.xsl, which contains an
> > error-matching template in order to alert me in the case of
> > ambiguous/non-matches. I know several of you use a similar
> > template to catch template match problems.
> >
> > My problem is that when included into local.xsl, the error
> > template takes over all matches. However, when the templates
> > from master.xsl are placed into local.xsl, all is fine. Also,
> > when the error template is removed entirely, everything
> > matches as expected.
> >
> > Is the error matching template causing all templates in
> > master.xsl not to be imported?
> >
> > local.xsl---------------
> >
> > <?xml version='1.0' encoding="UTF-8"?>
> > <xsl:stylesheet version='1.0'
> > xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
> >       <xsl:import href="../../../master/Consumers/xsl/global.xsl" />
> >       <xsl:include href="../../Global/xsl/templates.xsl" />
> >
> >       <xsl:variable name="XML"
> > select="document('../XML.xml')/node()" />
> >
> >       <xsl:param name="consumerID" />
> >       <xsl:param name="Mode" />
> > </xsl:stylesheet>
> >
> > master.xsl------------
> >
> > <?xml version='1.0' encoding="UTF-8"?>
> > <xsl:stylesheet version='1.0'
> > xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
> >       <xsl:template name="master" match="/">
> >               <xsl:choose>
> >                       <xsl:when test="$R/id and $R/firstName">
> >                               <xsl:apply-templates mode="nav"
> > select="$R" />
> >                       </xsl:when>
> >                       <xsl:when test="$consumerID!=''">
> >                               <xsl:apply-templates mode="nav"
> > select="document(concat($getXML,'fields=id,firstName,lastName,
> > MI,consumerID&amp;table=Consumer_Inv&amp;key=id&amp;val=',$con
> > sumerID))/Records/Record"
> > />
> >                       </xsl:when>
> >               </xsl:choose>
> >               <xsl:call-template name="warning" />
> >               <xsl:apply-templates />
> >               <xsl:call-template name="warning" />
> >       </xsl:template>
> >       <xsl:template mode="nav" match="node()" >
> >               <fieldset id="navigation" class="oneCol">
> >                       <div>
> >                               <span id="consumerInfo">
> >                                       <xsl:value-of
> > select="firstName" />&#32;
> >                                       <xsl:value-of
> > select="MI" />&#32;
> >                                       <xsl:value-of
> > select="lastName" /> &#32;<br />
> >                                       &#35;<xsl:value-of
> > select="consumerID" />
> >                               </span>
> >                          </div>
> >                 </fieldset>
> >           </xsl:template>
> > </xsl:stylesheet>
> >
> > global.xsl ------
> > <xsl:stylesheet version='1.0'
> > xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
> >         <xsl:template match="*">
> >               Error matching template
> >         </xsl:template>
> > </xsl:stylesheet>

Current Thread