xsl-list
[Top] [All Lists]

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

2007-08-27 14:13:00
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(_at_)gmail(_dot_)com] 
Sent: 27 August 2007 20:22
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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>

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--