| <xsl:apply-imports> | |
| Permet d'appliquer tout modèle remplacé dans le nœud actuel. Il est comparable à la méthode super() dans Java. | |
| Catégorie | |
|
Instruction |
|
| Attributs obligatoires | |
|
Aucun. |
|
| Attributs facultatifs | |
|
Aucun. |
|
| Contenu | |
|
Aucun. <xsl:apply-imports> représente un élément vide. |
|
| Apparaît dans | |
|
<xsl:apply-imports> apparaît dans un modèle. |
|
| Défini dans | |
|
XSLT section 5.6, Remplacement des règles de modèle. |
|
| Exemple | |
|
Le court fichier XML suivant illustre <xsl:apply-imports> :
<?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>
La feuille de style importée est la suivante :
<?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>
Ce modèle permet le formatage de base des éléments <true> et <false>, comme illustré à la Figure A-1. Document généré par un formatage de base La feuille de style suivante permet d'illustrer <xsl:apply-imports> alors qu'elle importe l'autre feuille de style :
<?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>
Utiliser <xsl:apply-imports> permet de compléter le comportement des modèles importés. La feuille de style produit le document suivant :
<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>
Une fois affichée, la feuille de style ressemble à laFigure A-2. Document généré avec <xsl:apply-imports> |
|