webmasterです。fwordさん、ご質問ありがとうございます。
これは、XMLによほど慣れていないと躓くと思います。マニュアルなどでも説明
しておらず、すいません。
結論から書くと、おそらく{../../@id}で取れるのではないかと思います。
ここから先は不要でしたら無視して頂いてOKですが、簡単に説明しますと、
CMSDからXSLTへ渡される加工前のエントリデータは、次のようになっています。
(簡略してあります)
コード: 全て選択
<entrylist>
<entry id="00005">
<imagelist>
<listitem id="1"><image>(画像ファイルのパス)</image></listitem>
<listitem id="2"><image>(画像ファイルのパス)</image></listitem>
<listitem id="3"><image>(画像ファイルのパス)</image></listitem>
</imagelist>
</entry>
<entry id="00008">
<imagelist>
<listitem id="1"><image>(画像ファイルのパス)</image></listitem>
<listitem id="2"><image>(画像ファイルのパス)</image></listitem>
<listitem id="3"><image>(画像ファイルのパス)</image></listitem>
</imagelist>
</entry>
:
</entrylist>
「<xsl:for-each select="entry">」の内部では通常、XSLの加工対象となる
「カーソル(現在位置)」は、entryタグにある為、{@id}と書くとentryタグのid属性
を取得してくれるのですが、今回の場合、さらに<xsl:for-each select="imagelist/listitem">
によってカーソル(現在位置)が listitemタグに移動しています。
よって、{@id}と書くとlistitemのid属性が取得されてしまいます。
このxsl:for-each内でentryのid属性を取得する為に、相対パス指定によって
「..」を2回使い、二つ上の階層(entryタグ)まで戻り、そこから@idを参照します。
なので、「{../../@id}」という書き方になります。
ルートからの相対パス指定で、「{/entry/@id}」でも取れる場合もあります。
以上、解決しなかった場合、大変お手数ですが再度ご質問頂ければ幸いです。