- PR -

XSLで数値表示行うには

1
投稿者投稿内容
pochi
会議室デビュー日: 2002/09/18
投稿数: 3
投稿日時: 2002-09-18 11:46
計算した数値データをXSLで少数点表示したのに
xsl:value-of select="format-number(loading_result/@sigmaC_y,'###0.000')
「NaN」表示されてしまいます。
表示形式がおかしいのでしょうか?
表現したい値は、1.3362583です。

井上孝司
ぬし
会議室デビュー日: 2001/09/08
投稿数: 668
お住まい・勤務地: 東京都
投稿日時: 2002-09-18 12:29
井上です。

<xsl:decimal-format> タグを併用して、数値や桁区切り記号を
事前に指定しておいても駄目ですか ?

_________________
<author>
<name>井上 孝司</name> <web>www.kojii.net</web>
</author>

[ メッセージ編集済み 編集者: 井上孝司 編集日時 2002-09-18 12:29 ]
pochi
会議室デビュー日: 2002/09/18
投稿数: 3
投稿日時: 2002-09-18 13:08
早速の回答ありがとうございます。
decimal-formatの使い方が良くわかりません。
もう少し詳しく解説していただけないでしょうか?自分なりにHPから探してみました。
<xsl:decimal-format decimal-separator="."
grouping-separator=","
percent="%"
per-mille="‰"
zero-digit="0"
digit="#"
pattern-separator=";"
infinity="Infinity"
NaN="NaN"
minus-sign="-" />を定義しておいて
          
<td align="center" nowrap="nowrap"><xsl:value-of select="format-number(@coor2_x,'###0.000','decimal-separator')" /></td>でうまく動きませんでした。
よねくら
常連さん
会議室デビュー日: 2002/04/24
投稿数: 29
投稿日時: 2002-09-20 09:46
変換対象のXML文書を見たいですね。

出力対象のデータが、まず数値として正しい形式なのかを
チェックするには、以下のように記述できると思います。

<xsl:if test="boolean(number(loading_result/@sigmaC_y))">
<xsl:value-of select="format-number(loading_result/@sigmaC_y,'###0.000')"/>
</xsl:if>
井上孝司
ぬし
会議室デビュー日: 2001/09/08
投稿数: 668
お住まい・勤務地: 東京都
投稿日時: 2002-09-20 15:26
井上です。
引用:

pochiさんの書き込み (2002-09-18 13:08) より:

<xsl:decimal-format decimal-separator="."
grouping-separator=","
percent="%"
per-mille="‰"
zero-digit="0"
digit="#"
pattern-separator=";"
infinity="Infinity"
NaN="NaN"
minus-sign="-" />


この他に、name="" 属性が要ります。以下に、一例を示します。

<xsl:decimal-format name="jp" decimal-separator="."
grouping-separator="," zero-digit="0" digit="#" minus-sign="-"
NaN="数値ではありません" />
<xsl:decimal-format name="euro" decimal-separator=","
grouping-separator="." zero-digit="0" digit="#" minus-sign="-"
NaN="Not a Number" />

<xsl:value-of select="format-number(123456.789, '###,##0.00','jp')" />
<xsl:value-of select="format-number(-123456.789, '###,##0.00','jp')" />
<xsl:value-of select="format-number('foo', '###,##0.00;(###,##0.00)','jp')" />
<xsl:value-of select="format-number(123456.789, '###.###,00','euro')" />
<xsl:value-of select="format-number(-123456.789, '###.###,00','euro')" />
<xsl:value-of select="format-number('foo', '###.###,00;###.###,00)','euro')" />

先に 'jp' あるいは 'euro' という名前で書式定義をしておいて、それを format-number 関数から呼び出しています。
_________________
www.kojii.net
1

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