Dreamweaver TechniqueJAVA Script サンプル | CSS sample | JAVA Applet sample | Flash Sample
HTML4.0 riference | DynamicHTMLXHTML | XML sample | XSLT sample | RIKO's ASP Trial

2個のXSLファイルの結合

■ インクルージョン機能

このサンプルは、XMLファイルに対し、2個のXSLファイルを結合して摘要するものです。
xsl:include 要素を使って、<xsl:include href="結合させたい別のXSLファイルのURL"/>のように記述しすると、両方のテンプレートルールを変えることなく、まとめて適用させることができます。
URLは相対パスで指定すると良いでしょう。

■ XML

include.xml
設定ファイル transfer.xml は、大きく分けて二つの部分から成り立っています。
帳票番号や記票者・発注者など、一帳票内に必ず一つしかないヘッダ部、そして、品番や単価などの帳票内に一覧表形式で示されている実データ部です。
ヘッダ部はセル一つに一要素が割り当てられているのに対し、一覧表部分は対象列に対して一要素が割り当てられています。

■ XSL

include1.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="/">
<xsl:for-each select="全体/情報">
<xsl:apply-templates select="氏名" />
<xsl:apply-templates select="ハンドル" />
<xsl:apply-templates select="住所" />
<xsl:apply-templates select="勤務先" />
<hr />
</xsl:for-each>
</xsl:template>
<xsl:include href="include2.xsl" />
</xsl:stylesheet>

@ 1個目のXSLファイル、include.xslの中には、「全体/情報」の中の「氏名」、「ハンドル」、「住所」、「勤務先」のデータを処理するだけで、どのように表示するか具体的には記述していません。

A <xsl:include href="include2.xsl"> のように記述し、include2.xslを結合させています。

結合しない場合との比較をするには<xsl:include href="include2.xsl" />の1行を削除して表示させます。
結合して表示させた結果と異なり、結合するXSLの指定が反映されなくなります。

include2.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="氏名">
      <div>氏名:<xsl:value-of select="."/></div>
   </xsl:template>
   <xsl:template match="ハンドル">
      <div>ハンドル:<xsl:value-of select="."/></div>
   </xsl:template>
   <xsl:template match="住所">
      <div>住所:<xsl:value-of select="."/></div>
   </xsl:template>
   <xsl:template match="勤務先">
      <div>勤務先:<xsl:value-of select="."/></div>
   </xsl:template>
</xsl:stylesheet>

1. 1個目のXSLファイル(include.xsl)の中の、<sxl:apply-templates select="氏名">~</xsl:template> で指定したテンプレートを摘要しています。
同様に他の要素ノードに対してもテンプレートを摘要します。
これで、結合するXSLの指定(divタグでのブロックわけ)が反映されるようになります。

2個のXSLファイルをまとめて摘要できるということは、逆に言えば、1個のXSLファイルを2個に分けて記述できるということです。最初からいきなり xsl:include要素を使ってXSLコードを書くのではなく、まず基本的なXSLファイルを記述してから、分割して、それぞれ別のXSLファイルとして保存して合体させると理解しやすくなります。

■ 注意

※ xsl:includeはトップレベル要素なので、xsl:stylesheetの子として使いましょう。各位置を間違えるとエラーになります。

※ 結合する側とされる側に同じファイルを指定するとエラーになります。

<<<戻る

R HOUSE | RIKO's Trial Page | Shirley's Pettit Case | Shirley's i-box | Shirley's little box