- PR -

算術演算子MODの使用方法

1
投稿者投稿内容
やまと
会議室デビュー日: 2002/01/08
投稿数: 3
投稿日時: 2002-01-08 18:03
はじめまして。
やまとと申します。

1〜9までの数字を以下の様に表示させるXSLを作成しています。

123
456
789

XMLは以下の様になっています。(要点のみ抜き出し)

<NO>1</NO>
<NO>2</NO>
<NO>3</NO>
<NO>4</NO>
<NO>5</NO>
<NO>6</NO>
<NO>7</NO>
<NO>8</NO>
<NO>9</NO>

以上のようなXMLで、3つ区切りに表示したいのです。
算術演算子MODで、行いたいのですが、構文が分かりません。

<xsl:value-of select="NO" />
<xsl:if test="NOを3で割った時の余りが0の場合">
<br />
</xsl:if>


<xsl:apply-templates select="NO" />で、ループさせ、NOを表示しています。
条件式の部分を日本語で書いてしまいましたが、構文が分からないのはこの部分です。

申し訳ありませんが、ご教授お願い致します。
井上孝司
ぬし
会議室デビュー日: 2001/09/08
投稿数: 668
お住まい・勤務地: 東京都
投稿日時: 2002-01-08 18:20
井上です。

<xsl:if test="NO mod 3 = '0'">

でいかがでしょう?

ただ、NO 要素の値をそのまま使う方法だと、折り返すかどうかが NO 要素の値に
左右されてしまって具合が悪いので、<xsl:for-each> でループを回した上で、折
り返すかどうかの判断には position() 関数を使った方がいいかもしれませんね。
_________________
www.kojii.net
やまと
会議室デビュー日: 2002/01/08
投稿数: 3
投稿日時: 2002-01-08 18:57
やまとです。

井上さん。ありがとうございます。
参考にさせて頂きます。

また、質問になってしまうのですが、
position()を使用するとこの関数は使う事が出来ないというエラーが起きてしまいます。
参考書で調べてみましたが、XSLの2行目の【xmlns:xsl】を変更しなければ
ならないような気がします。
現在は
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
が書き出しになっております。
自分でも調べてはみましたが、勉強不足の為、理解する事が出来ませんでした。

申し訳ありませんが、上記の件の対策等、ご教授して頂ければうれしく思います。
宜しくお願い致します。



井上孝司
ぬし
会議室デビュー日: 2001/09/08
投稿数: 668
お住まい・勤務地: 東京都
投稿日時: 2002-01-08 19:28
井上です。
それはドラフト版 XSLT ですね。Windows 環境なら、MSXML3 をインストールすれば
勧告版 XSLT が使えるようになるので、そちらなら position() 関数が使えます。
そのとき、名前空間 URI が http://www.w3.org/1999/XSL/Transform (だったと思う)
に変わるので、スタイルシートを忘れずに修正してください。
MSXML3 については、MSDN Online XML Developer Center を御覧ください。

URL : http://www.asia.microsoft.com/japan/developer/xml/

_________________
www.kojii.net
やまと
会議室デビュー日: 2002/01/08
投稿数: 3
投稿日時: 2002-01-09 10:41
やまとです。

井上さん。
度々、ご質問にお答え頂き有難う御座いました。

教えて頂いたURLを参考にMSXML3をインストールし、
スタイルシート修正後、再度実行してみたところ、
正常に動作する事が出来ました。

本当に有難う御座いました。
これからも宜しくお願い致します。
1

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