Previous | Next | Indexes
Zvon > Tutorials > XSLT 2.0 Tutorial > Multiple stylesheets (3/6) >

Template conflicts between importing and imported stylesheets.

If the main stylesheet imports another stylesheet with xsl:import and this stylesheet contains a matching template with the same priority as the main one, the declaration in the main stylesheet takes precedence.

If xsl:include were used instead of xsl:import there would be an ambiguous rule match as xsl:include only "pastes" its stylesheet to the place where it occurs and so templates in the included stylesheet behave as if they were part of the main stylesheet.

XSLT

      <xsl:stylesheet
                  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                  version="2.0">
            <xsl:import  href="st3-a.xslt"/>

            <xsl:template  match="/aaa">
                  <xxx>
                        <xsl:apply-templates  select="*"/>
                  </xxx>
            </xsl:template>

            <xsl:template  match="bbb">
                  <main-bbb/>
            </xsl:template>

      </xsl:stylesheet>

st3-a.xslt

      <xsl:stylesheet
                  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                  version="2.0">
            <xsl:output  method="xml"
                        omit-xml-declaration="yes"/>

            <xsl:template  match="bbb">
                  <imported-bbb/>
            </xsl:template>

            <xsl:template  match="ccc">
                  <imported-ccc/>
            </xsl:template>

      </xsl:stylesheet>
XML

      <aaa>
            <bbb/>
            <ccc/>
      </aaa>
Output

      <xxx>
            <main-bbb/>
            <imported-ccc/>
      </xxx>


Previous chapter: Multiple source documents
Next chapter: Multiple Outputs
Previous page: Stylesheets inclusion
Next page: Template conflicts between several imported stylesheets.