<xsl:apply-imports> 允许你对指定的结点使用重写的模板,相当于Java中的super()方法。
必须的属性:无
可选的属性:无
<xsl:apply-imports>是一个空元素。
下面是针对<xsl:apply-imports>用法的实例。
XML文件:
复制内容到剪贴板
代码:
<?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>我们要导入的XSLT样式表(imported.xsl):
复制内容到剪贴板
代码:
<?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>该XSLT样式表简单地格式化了XML中的<true> 和 <false>元素。如图
下面是新的XSLT样式表,其中利用<xsl:apply-imports>在XSLT中导入其他的样式表
复制内容到剪贴板
代码:
<?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>使用<xsl:apply-imports>可以丰富被导入样式表的内容。下面是采用新样式表的输出结果:
复制内容到剪贴板
代码:
<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>具体的页面表现为:
原文地址:
http://www.xslt.org.cn/html/grammars/20071027/XSLT_yufaxiangjie_xsl_apply_imports_49.html