- PR -

XSLTの処理を教えてください

1
投稿者投稿内容
チルドレン
会議室デビュー日: 2004/02/13
投稿数: 8
投稿日時: 2004-02-13 20:47
はじめまして。
以下のようなXMLデータがあった場合に
<data>1</data>
<data>3</data>

XSLTのほうにて、<data>タグをループして、
dataに1があるかないかで、処理を切り分け
次にdataに2があるかないかで、処理を切り分け
次にdataに3があるかないかで、処理を切り分け・・というようなことをしたいのですが。
data要素の数はわかっております。

xsl:for-eachですとどのように記述していいかわかりません。

宜しくお願いします。

まこと
会議室デビュー日: 2003/11/06
投稿数: 14
投稿日時: 2004-02-14 13:01
該当データがあるかないかだけで区別する場合なら

<xsl:if test="data[. = '1']">
1があるときの処理
</xsl:if>
...

のようにできます。
各dataの値で処理を切り分けるのであれば

<xsl:for-each select="data">
<xsl:choose>
<xsl:when test=". = '1'">
1のときの処理
</xsl:when>
...
</xsl:choose>
</xsl:for-each>

for-eachを使う必要もないですけど。
チルドレン
会議室デビュー日: 2004/02/13
投稿数: 8
投稿日時: 2004-02-14 18:51
まことさん。説明不足ですいません。

もう少し詳しく書きますと、

処理がA、Bの2種類あるとします。
1.data=1があるので=>data=1に関しては、Aの処理をする
2.data=2がないので=>data=2に関しては、Bの処理をする
3.data=3があるので=>data=3に関しては、Aの処理をする
4.data=4がないので=>data=4に関しては、Bの処理をする
5.data=5がないので=>data=5に関しては、Bの処理をする
以上でdata要素はおしまい。

ここでfor-eachですと、data=1、3については処理を記述できるのですが、
data=2,4,5に関しての処理ができません。
数字の小さい方から、全ての数字に関して処理をしたいのですが。

以上です。上手に説明できないのですが、宜しくお願いいたします。
井上孝司
ぬし
会議室デビュー日: 2001/09/08
投稿数: 668
お住まい・勤務地: 東京都
投稿日時: 2004-02-14 19:11
井上です。

データが 5 種類に限定されているのであれば、述部フィルタ ([ ] 内) の記述をそれぞれの値に合わせて変えた 5 個のテンプレートを data 要素用に作成しておいて、片っ端から適用するというのはどうです ?
_________________
www.kojii.net
1

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