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

Explicit usage of templates from imported stylesheet

If there are two matching templates of the same priority in a stylesheet and in other one which the first stylesheet imports, the template from the first stylesheet takes precedence. The element xsl:apply-imports inside the relevant template in the first stylesheet calls the matching template from the imported one.

While xsl:apply-imports call templates according to their import priority, xsl:next-match is used for match priorities (see previous chapters).

XSLT

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

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

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

      </xsl:stylesheet>

st5-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-bbb/>
            </main-bbb>
            <imported-ccc/>
      </xxx>


Previous chapter: Multiple source documents
Next chapter: Multiple Outputs
Previous page: Template conflicts between several imported stylesheets.
Next page: xsl:apply-imports with parameters