Subject: RE: Error template trumping other templates on import?
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 27 Aug 2007 21:34:37 +0100
|
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: 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&table=Consumer_Inv&key=id&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" /> 
> <xsl:value-of
> select="MI" /> 
> <xsl:value-of
> select="lastName" />  <br />
> #<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>
|