目次へ

7.2 スタイルシートのインクルード

<xsl:include href = uri-reference />

XSLT スタイルシートは xsl:include 要素を記述することにより、別の XSLT スタイルシートを取り込むことができます。より詳しく書くと、xsl:include 要素は自身を href 属性によって与えられた URI にある xsl:stylesheet 要素、または xsl:transform 要素の内容で置き換えます。

ある XML 文書で用いた XSLT スタイルシートを、別の XML 文書を変換するときにインクルードすることにより同様の変換を行うことができ、同じコードを何度も書く必要がなくなりますし、記述ミスを防ぐこともできます。xsl:include 要素は必須である href 属性を持ち、その属性値には、インクルードするスタイルシートを識別するための URI を指定します。

スタイルシートが自分自身を直接的または間接的にインクルードすることはできません。つまり、スタイルシート A がスタイルシート A 自身を取り込んでいるスタイルシート B を取り込むことはできません。

include.xsl のスタイルシート内
<xsl:output indent="yes"/>
<xsl:template match="/people">
  <xsl:element name="person">
    <xsl:attribute name="sheet">include</xsl:attribute>
    <xsl:for-each select="person">
      <person><xsl:value-of select="." /></person>
    </xsl:for-each>
  </xsl:element>
</xsl:template>
<xsl:include href="include2.xsl" />
include2.xsl のスタイルシート内
<xsl:template match="/people">
  <xsl:element name="person">
    <xsl:attribute name="sheet">included</xsl:attribute>
    <xsl:for-each select="person">
      <person><xsl:value-of select="." /></person>
    </xsl:for-each>
  </xsl:element>
</xsl:template>

上記のスタイルシートを people.xml に適用すると以下の出力を得られます。

<?xml version="1.0" encoding="UTF-8"?>
<person sheet="included">
<person>Kevin Shields</person>
<person>Trent Reznor</person>
</person>

同一のノードに対するテンプレートがいずれのスタイルシートにも含まれていますが、ドキュメント順で後ろにある include2.xsl のテンプレートが適用されていることがわかります。

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp