- PR -

XSLTについて

1
投稿者投稿内容
Rika
会議室デビュー日: 2005/01/06
投稿数: 16
投稿日時: 2006-01-11 14:56
XSLTでXML文書をHTMLに変換しています。

あるタグの変換処理を行うときの条件として、上位要素の属性値が特定の値を示していることを確認したいのですが、どのように確認すればいいでしょうか。
なお、該当する上位要素が何階層上かは決まっていないので、条件が満たされるまでは最上位まで調べる必要があります。
以下にXMLの例をあげておきます。

((例))

<a revise="0">
  ・・・
 <b>
<c>問題のタグ</c>    ←上位要素aのrevise属性値が0なので、変換処理を実行する。
 </b>
  ・・・
</a>
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2006-01-11 15:05
検索語は
軸 ancestor
です

[ メッセージ編集済み 編集者: MMX 編集日時 2006-01-11 15:06 ]
Rika
会議室デビュー日: 2005/01/06
投稿数: 16
投稿日時: 2006-01-12 09:47
MMXさま、ご回答ありがとうございます。

ancestorで調べるのはわかりましたが、上位要素のタグが不定で、かつ属性値を指定する条件文の書き方で困っています。
以下のようにコードを書いてみたのですが、うまくいきません。
 
 <xsl:if test="ancestor::*[revise="0"]">
  ・・・変換処理・・・
 </xsl:if>

何かよい方法はないでしょうか。
ご教授お願いします。
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2006-01-12 10:21
普通にループすればいいのでは。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2006-01-12 10:36
以下のようにコードを書いてみたのですが、うまくいきません。
 <xsl:if test="ancestor::*[revise="0"]">

当然です、xmlエディターを使っているなら 指摘されるでしょう、
xsltプロセッサを実行する前に。

1.”のくくりがおかしい
2.revise は属性の書き方になっていない
Rika
会議室デビュー日: 2005/01/06
投稿数: 16
投稿日時: 2006-01-12 10:51
MMXさま、Anthyhimeさま、ご回答ありがとうございます。

以下のように書き直したところ、うまくいったようです。
 <xsl:if test="ancestor::*[@revise='0']">

ご協力ありがとうございました。
また機会があればよろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)