スタイルシート変換言語 XSLT

<xsl:call-template>の解説です。  スタイルシート変換言語 XSLTリファレンス 

<xsl:call-template>

<xsl:call-template 
name="qname">
・・・
</xsl:call-template>
xsl:call-templateは、xsl:template要素でname属性が指定されたテンプレート (名前付きテンプレート)を呼び出す事ができます。 (xsl:templateには、match属性・name属性のどちらか一方のみ指定可能)
また、xsl:call-templateでxsl:with-paramを使用してパラメータを指定する事もできます。 (xsl:with-paramについてはまた後日書きます)
※ 以下のように要素名に仮名や漢字などを使用する事もできます。 これは私達日本人にとっては非常にわかりやすく便利なのですが、XMLパーサの種類などによっては 問題が発生する事や、文字コードの指定等によってもデータの容量が増えてしまいます。 ただ、わかりにくい半角英数での要素名にすると後々苦労する事にもなりますので注意が必要です。
zipファイル 以下のサンプルをダウンロード(ZIP圧縮)
■ aaa.xml
<?xml version="1.0" encoding="Shift_JIS"?>
<?xml-stylesheet type="text/xsl" href="bbb.xsl"?>

<商品データ>

<題>商品一覧</題>
<商品>
 <名>りんご</名>
 <価格 単="円">200</価格>
 <説明>甘くて美味しいりんごです。</説明>
</商品>

<商品>
 <名>柿</名>
 <価格 単="円">150</価格>
 <説明>数量に限りがあります。</説明>
</商品>

<商品>
 <名>バナナ</名>
 <価格 単="円">100</価格>
 <説明>エネルギー補給にどうぞ。</説明>
</商品>

<商品>
 <名>キウイ</名>
 <価格 単="円">200</価格>
 <説明>ビタミンCが豊富に含まれています。</説明>
</商品>

</商品データ>
■ bbb.xsl
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="商品データ">
<html>
<body>
<xsl:apply-templates select="題" />
 <table border="1" width="400">
 <xsl:for-each select="商品">
  <xsl:call-template name="一覧" />
 </xsl:for-each>
 </table>
</body>
</html>
</xsl:template>

<xsl:template match="題">
<h1><xsl:value-of select="."/></h1>
</xsl:template>

<xsl:template name="一覧">
<tr>
 <td>
  <xsl:value-of select="./名"/>
 </td>
 <td>
  <xsl:value-of select="./価格"/>
  <xsl:value-of select="./価格/@単"/>
 </td>
 <td>
  <xsl:value-of select="./説明"/>
 </td>
</tr>
</xsl:template>

</xsl:stylesheet>
サンプル
XSLT要素一覧
+ <xsl:apply-imports>
+ <xsl:apply-templates>
+ <xsl:attribute>
+ <xsl:attribute-set>
+ <xsl:call-template>
+ <xsl:comment>
+ <xsl:copy>
+ <xsl:copy-of>
+ <xsl:decimal-format>
+ <xsl:element>
+ <xsl:fallback>
+ <xsl:for-each>
+ <xsl:if>
+ <xsl:import>
+ <xsl:include>
+ <xsl:key>
+ <xsl:message>
+ <xsl:namespace-alias>
+ <xsl:number>
+ <xsl:otherwise>
+ <xsl:output>
+ <xsl:param>
+ <xsl:preserve-space>
+ <xsl:processing-instruction>
+ <xsl:sort>
+ <xsl:strip-space>
+ <xsl:stylesheet>
+ <xsl:template>
+ <xsl:text>
+ <xsl:value-of>
+ <xsl:variable>
+ <xsl:when>
+ <xsl:with-param>