テンプレートの挿入<xsl:include>

・xslファイルの中に他のxslファイルを取り込む。挿入したい位置に書式<xsl:include href=""/>で取り込む。href属性は必須で、挿入するxslファイルを相対パスで記述。

(注意)任意の位置に挿入できるが、必ずトップレベル要素としてである。即ち<xsl:stylesheet>の直下であって、他の要素内に記述できない。

・テンプレートが重複する場合、<xsl:include href="">の挿入位置にファイル内容が記述されているとみなし、「テンプレートの優先度」が適用される。同じ優先度の場合、後に記述されているほうが優先される。
(サンプルのname要素はテンプレートの重複がなくincludeされたファイル内容が適用される。end要素とtotal要素はテンプレートが重複している。end要素は<xsl:include href="">のほうが後なのでincludeされたファイル内容が適用され、total要素は<xsl:include href="">のほうが前なのでincludeされたファイル内容は適用されない。)

[サンプルXML文書を表示](下のフレームに)

XMLソース

<?xml version="1.0" encoding="Shift_JIS" ?>
<?xml-stylesheet type="text/xsl" href="include01.xsl"?>
<root>
<title>2003年11月05日の東証株式第一部情報</title>
<info><name>銘柄</name><end>終値(円)</end><total>出来高(千株)</total></info>
<data>
<kabu><name code="6752">松下</name><end>1529</end><total>12302</total></kabu>
<kabu><name code="6753">シャープ</name><end>1786</end><total>3964</total></kabu>
<kabu><name code="6758">ソニー</name><end>4030</end><total>8220</total></kabu>
<kabu><name code="6764">三洋</name><end>516</end><total>7551</total></kabu>
<kabu><name code="6501">日立</name><end>692</end><total>21896</total></kabu>
<kabu><name code="6502">東芝</name><end>440</end><total>17832</total></kabu>
<kabu><name code="6701">NEC</name><end>1027</end><total>19229</total></kabu>
<kabu><name code="6702">富士通</name><end>708</end><total>16634</total></kabu>
</data>
<end>以上です(2003/11/19)</end>
</root>

XSLソース(include01.xsl)

<?xml version="1.0" encoding="Shift_Jis"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="Shift_JIS"/>
<xsl:template match="/">
<center><H3><xsl:value-of select="root/title"/></H3></center>
<xsl:apply-templates select="root/data/kabu"/>
</xsl:template>

<xsl:template match="kabu">
<p>
<xsl:apply-templates select="name"/>:
<xsl:apply-templates select="end"/>,
<xsl:apply-templates select="total"/>
</p>
</xsl:template>

<xsl:template match="end">
<span style="color:yellow"><xsl:value-of select="."/></span>
</xsl:template>
<xsl:include href="include01a.xsl"/>
<xsl:template match="total">
<span style="color:green"><xsl:value-of select="."/></span>
</xsl:template>
</xsl:stylesheet>

includeされるXSLソース(include01a.xsl)

<?xml version="1.0" encoding="Shift_Jis"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="Shift_JIS"/>
<xsl:template match="name">
<span style="color:blue"><xsl:value-of select="."/></span>
</xsl:template>
<xsl:template match="end">
<span style="color:red"><xsl:value-of select="."/></span>
</xsl:template>
<xsl:template match="total">
<span style="color:red"><xsl:value-of select="."/></span>
</xsl:template>
</xsl:stylesheet>

end(03/11/19)