<xsl:apply-imports> |
Diese Anweisung gestattet Ihnen, überschriebene Vorlagen (Templates) auf den aktuellen Knoten anzuwenden. Sie ist vergleichbar mit der Java-Methode super().
Kategorie
Anweisung
Obligatorische Attribute
Keine
Optionale Attribute
Keine
Inhalt
Keiner. <xsl:apply-imports> ist ein leeres Element.
Übergeordnetes Element
<xsl:apply-imports> erscheint innerhalb einer Vorlage.
Definition
XSLT-Abschnitt 5.6, Überschreiben von Template-Regeln
Beispiel
Hier eine kurze XML-Datei, die die Funktionsweise von <xsl:apply-imports> veranschaulichen soll:
    <?xml version="1.0"?>
    <test>

      <p>This is a test XML document used by several
      of our sample stylesheets.</p>
      <question>
        <text>When completed, the Eiffel Tower was the
        tallest building in the world.</text>
        <true correct="yes">You're correct!  The Eiffel
        Tower was the world's tallest building until 1930.</true>
        <false>No, the Eiffel Tower was the world's tallest
        building for over 30 years.</false>
      </question>
      <question>
        <text>New York's Empire State Building knocked the
        Eiffel Tower from its pedestal.</text>
        <true>No, that's not correct.</true>
        <false correct="yes">Correct!  New York's Chrysler
        Building, completed in 1930, became the world's tallest.</false>
      </question>
    </test>
Und hier das Stylesheet, das importiert wird:
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

      <xsl:output method="html"/>

      <xsl:template match="/">
        <html>
          <body>
            <xsl:for-each select="//text|//true|//false">
              <p>
                <xsl:apply-templates select="."/>
              </p>
            </xsl:for-each>
          </body>
        </html>
      </xsl:template>

      <xsl:template match="text">
        <xsl:text>True or False: </xsl:text><xsl:value-of select="."/>
      </xsl:template>

      <xsl:template match="true|false">
        <b><xsl:value-of select="name()"/>:</b>
        <br/>
        <xsl:value-of select="."/>
      </xsl:template>

    </xsl:stylesheet>
Diese Vorlage bietet eine grundlegende Formatierung für die Elemente <true> und <false> (siehe Abbildung A-1). Mit grundlegender Formatierung generiertes Dokument Schließlich das Stylesheet, das die Anweisung <xsl:apply-imports> veranschaulichen soll und das das andere Stylesheet importiert:
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

      <xsl:import href="imported.xsl"/>
      <xsl:output method="html"/>

      <xsl:template match="/">
        <html>
          <head>
            <title>A Brief Test</title>
            <style>
              <xsl:comment>
                p.question {font-size: 125%; font-weight: bold}
                p.right    {color: green}
                p.wrong    {color: red}
              </xsl:comment>
            </style>
          </head>
          <body>
            <h1>A Brief Test</h1>
            <xsl:for-each select="//question">
              <table border="1">
                <xsl:apply-templates select="text"/>
                <xsl:apply-templates select="true|false"/>
              </table>
              <br/>
            </xsl:for-each>
          </body>
        </html>
      </xsl:template>

      <xsl:template match="text">
        <tr bgcolor="lightslategray">
          <td>
            <p class="question">
              <xsl:apply-imports/>
            </p>
          </td>
        </tr>
      </xsl:template>

      <xsl:template match="true|false">
        <tr>
          <td>
            <xsl:choose>
              <xsl:when test="@correct='yes'">
                <p class="right">
                  <xsl:apply-imports/>
                </p>
              </xsl:when>
              <xsl:otherwise>
                <p class="wrong">
                  <xsl:apply-imports/>
                </p>
              </xsl:otherwise>
            </xsl:choose>
          </td>
        </tr>
      </xsl:template>

    </xsl:stylesheet>
Die Verwendung von <xsl:apply-imports> gibt Ihnen die Möglichkeit, das Vorhalten importierter Vorlagen zu erweitern. Das neue Stylesheet erzeugt das folgende Dokument:
    <html>
    <head>
    <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>A Brief Test</title>
    <style>
    <!--
                p.question {font-size: 125%; font-weight: bold}
                p.right    {color: green}
                p.wrong    {color: red}
              -->
    </style>
    </head>
    <body>
    <h1>A Brief Test</h1>
    <table border="1">
    <tr bgcolor="lightslategray">
    <td>
    <p class="question">True or False: When completed, the Eiffel
    Tower was the tallest building in the world.</p>
    </td>
    </tr>
    <tr>
    <td>
    <p class="right">
    <b>true:</b>
    <br>You're correct!  The Eiffel Tower was the world's tallest
    building until 1930.</p>
    </td>
    </tr>
    <tr>
    <td>
    <p class="wrong">
    <b>false:</b>
    <br>No, the Eiffel Tower was the world's tallest building for
    over 30 years.</p>
    </td>
    </tr>
    </table>
    <br>
    <table border="1">
    <tr bgcolor="lightslategray">
    <td>
    <p class="question">True or False: New York's Empire State Building
    knocked the Eiffel Tower from its pedestal.</p>
    </td>
    </tr>
    <tr>
    <td>
    <p class="wrong">
    <b>true:</b>
    <br>No, that's not correct.</p>
    </td>
    </tr>

    <tr>
    <td>
    <p class="right">
    <b>false:</b>
    <br>Correct!  New York's Chrysler Building, completed in 1930,
    became the world's tallest.</p>
    </td>
    </tr>
    </table>
    <br>
    </body>
    </html>
Wie das HTML-Dokument in einem Browser angezeigt wird, sehen Sie in Abbildung A-2. Ein mit <xsl:apply-imports> erzeugtes Dokument