コンテキストノード

context node

 XSLTのスクリプトが実行されているときに、個々のテンプレートを処理する際に基準点となるノードをコンテキストノードという。XSLTスクリプトの中にXPath式を書く時に、ルートノードを起点とした絶対指定の他に、コンテキストノードを起点とした相対指定を書くことができる。一般的に、XPath式は相対指定で書かれることが多いが、コンテキストノードの位置を勘違いすると、XPath式が意図通りに解釈されないことになる。これは、XSLTスクリプトで起きるトラブルの典型的なパターンの一つである。

 たとえば、以下のようなXSLTのテンプレートがあったとする。

<xsl:template match="para">
  <xsl:apply-templates select="item[position()=1]"/>
</xsl:template>

 apply-templates要素のselect属性に書かれたXPath式を評価する際、itemという要素名を評価する場合のコンテキストノードは、templateでmatchさせたpara要素にある。そのため、ここでは、para要素の子要素のitem要素が対象となる。しかし、position()=1という式を評価するときには、コンテキストノードはpara要素ではなく、item要素になる。そのため、この式は、全体で、1番目のitem要素を選択する意図を表現している。決して、1番目のpara要素の子要素にくるitem要素ではない。

関連記事

関連用語

リンク

XML & SOA フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

アイティメディアの提供サービス

キャリアアップ