<xsl:apply-imports> | |
上書きされたテンプレートを現在のノードに適用できます。これは Java の super() メソッドに相当します。 | |
カテゴリ | |
命令 |
|
必須の属性 | |
なし。 |
|
省略可能な属性 | |
なし。 |
|
コンテンツ | |
なし。<xsl:apply-imports> は空の要素です。 |
|
指定先 | |
<xsl:apply-imports> はテンプレート内に指定します。 |
|
定義先 | |
XSLT 5.6 節「Overriding Template Rules」 |
|
例 | |
<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> 読み込むスタイルシートは次のとおりです。 <?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> 図 A-1 に示すように、このテンプレートは、<true> および <false> 要素に基本的なフォーマットを提供します。 基本的なフォーマットで生成されたドキュメント このスタイルシートを使用して、他のスタイルシートを読み込む <xsl:apply-imports> を示します。 <?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> このスタイルシートの表示を図 A-2 に示します。 <xsl:apply-imports> で生成されたドキュメント |