<xsl:include> 要素

他の XSLT ファイルをインクルードします。

<xsl:include
  href = "uri-reference"/>

属性

  • href
    必須。 インクルードされる XSLT ファイルを識別する URI (Uniform Resource Identifier) 参照。

要素情報

出現回数

無制限

親要素

xsl:stylesheetxsl:transform

子要素

(子要素はありません)

解説

XSLT ファイルは、<xsl:include> 要素を使って他の XSLT ファイルをインクルードできます。 href 属性値は、インクルードされるファイルを識別する URI 参照です。 相対 URI は、<xsl:include> 要素の base URI との関係によって解決されます。

<xsl:include> 要素は、<xsl:stylesheet> 要素の子要素としてのみ使用できます。

インクルードは、ツリー レベルで行われるときと同様に、Microsoft® XML コア サービス (MSXML) で処理されます。 これは、XML ツリーのドキュメント オブジェクト モデル (DOM) ビューとは異なります。 href 属性値によって検索されたリソースは、XML ドキュメントとして解析され、そのドキュメントの <xsl:stylesheet> 要素の子要素によって、インクルードする側のドキュメントの <xsl:include> 要素が置き換えられます。 <xsl:import> の場合と異なり、インクルードされるテンプレート規則のインポート優先順位は、インクルードする側のスタイル シートのテンプレート規則のインポート優先順位と同じになります。 したがって、1 つの要素に対応するテンプレート規則が、インクルードする側のスタイル シートにもインクルードされるスタイル シートにも含まれている場合は、ドキュメント順に従ってどちらかのテンプレートが呼び出されます。 インクルードする側のスタイル シートのテンプレートが、インクルードされるテンプレートの後にあれば、前者が呼び出されます。 それ以外の場合は、後者が呼び出されます。

XSLT ファイルが自身を直接または間接的にインクルードすると、エラーが発生します。

XSLT ファイルを複数回インクルードすると、定義が重複するため、エラーが発生することがあります。 インクルードが間接的に行われると、このような複数回のインクルードがわかりにくくなります。 たとえば、A、B、C、D がすべて XSLT ファイルであるとします。 次のように、ファイル B、C、D に他の XSLT ファイルをインクルードします。

  • B は A をインクルードします。

  • C は A をインクルードします。

  • D は B と C の両方をインクルードします。

この結果、XSLT ファイル D は、間接的に XSLT ファイル A を 2 回インクルードすることになります。 このエラーを回避するには、(A のインクルードを除く) B 内のすべてを別の XSLT ファイル B1 に移し、B1 と A がインクルードされるように B を変更します。 さらに、同様の方法で C を変更し、最後に、A、B1、C1 がインクルードされるように D を変更します。

次のトピックでは、<xsl:include> の使用例を紹介します。