@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

XSLでの変換の仕方について

1
投稿者投稿内容
ひろ
会議室デビュー日: 2002/02/15
投稿数: 8
投稿日時: 2008-10-09 17:57
<A>一番目</A>
<A>二番目</A>
<A>三番目</A>
<A>四番目</A>
<A>五番目</A>
<A>六番目</A>

<段組>
  <奇数>
   <A>一番目</A>
  </奇数>
  <偶数>
   <A>二番目</A>
  </偶数>
</段組>
<段組>
  <奇数>
   <A>三番目</A>
  </奇数>
  <偶数>
   <A>四番目</A>
  </偶数>
</段組>
<段組>
  <奇数>
   <A>五番目</A>
  </奇数>
  <偶数>
   <A>六番目</A>
  </偶数>
</段組>
のようにXSLTで変換したいのですが、どのようにしたらいいか分かりません。
for-eachを使ってやっては見ているのですが・・・

すいません。よろしくお願いします
お だ
会議室デビュー日: 2008/04/02
投稿数: 14
投稿日時: 2008-10-09 18:13
for-each 内で、 position() を使えば今何番目かを取得出来ませんか?
※あまり詳しくないので間違っていたらすいません。

ひろ
会議室デビュー日: 2002/02/15
投稿数: 8
投稿日時: 2008-10-10 09:13
>おださん
ありがとうございます

ただ、positionでの指定だと、たとえば六番目以上に項目が増えるときはどうするのでしょうか?

度々ですがよろしくお願いします
だっちょ
大ベテラン
会議室デビュー日: 2006/12/05
投稿数: 115
投稿日時: 2008-10-10 10:10
最近使ってないので少し間違ってるかもしれませんが、次みたいなのでうまくいきませんか?

<xsl:template match="/root">
<xsl:for-each select="A[position() mod 2 = 1]">
<段組>
<奇数>
<A><xsl:value-of select="current()"/></A>
</奇数>
</段組>
<段組>
<偶数>
<A><xsl:value-of select="following::A"/></A>
</偶数>
</段組>
</xsl:for-each>
</xsl:template>

ひろ
会議室デビュー日: 2002/02/15
投稿数: 8
投稿日時: 2008-10-10 17:12
>だっちょさん

ありがとうございます

やってみたところ、下記のようになってしまいました
難しいです・・・

<段組>
  <奇数>
   <A>一番目</A>
  </奇数>
</段組>
<段組>
  <偶数>
   <A>二番目</A>
  </偶数>
</段組>
<段組>
  <奇数>
   <A>三番目</A>
  </奇数>
</段組>
<段組>
  <偶数>
   <A>四番目</A>
  </偶数>
</段組>
<段組>
  <奇数>
   <A>五番目</A>
  </奇数>
</段組>
<段組>
  <偶数>
   <A>六番目</A>
  </偶数>
</段組>
だっちょ
大ベテラン
会議室デビュー日: 2006/12/05
投稿数: 115
投稿日時: 2008-10-10 18:08
バグですね。訂正します。(確認してないのですみません)
コード:
<xsl:template match="/root"> 
 <xsl:for-each select="A[position() mod 2 = 1]"> 
  <段組> 
   <奇数> 
    <A><xsl:value-of select="current()"/></A> 
   </奇数> 
   <偶数> 
    <A><xsl:value-of select="following::A"/></A> 
   </偶数> 
  </段組> 
 </xsl:for-each> 
</xsl:template> 


ひろ
会議室デビュー日: 2002/02/15
投稿数: 8
投稿日時: 2008-10-12 00:23
>だっちょさん

度々ありがとうございます

無事できました!
ありがとうございました。
1

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