スポンサーリンク

[XSLT] xsl:call-templateとxsl:apply-templatesの違いと使い方


<xsl:call-template>と<xsl:apply-templates>の違い

<xsl:call-template>はあまり使われてる情報が少ないので、違いについて調査。

<xsl:call-template>の特徴は下記。
重要なのは、applyと違ってノードの位置が変わらないところ。

  • select属性に、テンプレート名を入れる。(templateのname属性で指定したのがテンプレート名)
  • コンテキストノードやカレントノードの位置が変動しない

サンプルコード

XML

XSTL

変換結果

解説

「root/data/age」の個所が違いが分かる。
applyであれば、コンテキストノードがroot/dataになり、ageだけの指定で動く。
callであれば、コンテキストノードが変わらないので、呼び出し側のコンテキストノード「/」のまま。

<xsl:call-template>の使いどころのまとめ

呼び出し側のコンテキストノードを気にせずに、処理ができるように書きたい場合にcallが使えるのが特徴。

 

XSLT
スポンサーリンク
シェアする
trelab