XPathとXSLTの関数 【数値関数】

2004年02月22日(日)更新


数値関数

たけち: 今回は、数値関数について学ぼうね。

さらら: 数値を四捨五入したり合計したりするための関数だったわね。

たけち: あっ、よく覚えてたね。一応、復習しておこうね。

【数値関数】

関数名概要XPathXSLT
ceiling小数点以下を切り上げた整数を得る
floor小数点以下を切り捨てた整数を得る
number指定したデータを数値に変換する
round四捨五入した整数を得る
sumノード集合内の一連の数値の合計値を得る

さらら: あら、これだけだったのね。

たけち: そうなんだね。ここでそれぞれの関数はどう書くのかをつぎに載せておくね。

  • 書式: 数値 ceiling(数値)
  • 書式: 数値 floor(数値)
  • 書式: 数値 number(数値)
  • 書式: 数値 round(数値)
  • 書式: 数値 sum(ノードセット)

さらら: sum関数だけ使い方が違うのね。でないと合計が求められないものね。

たけち: そうそう。この場合、ノードセット内の各ノードが内容として持っている文字列値を数値に変換した結果の合計値が求められるんだね。

さらら: うん。


XMLデータの例

たけち: じゃ、さっそく今回のサンプルを見てみようね。今回は、万葉集とは違う例にするね。

さらら: あっ、そっか。数値ですものねぇ〜。(^ ^;

xmlデータ例 【substring2.xml】

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="numbers.xsl"?>
<numbers>

<number>-15.001</number>

<number>-14.5</number>

<number>-14.4</number>

<number>-0</number>

<number>0</number>

<number>0.345</number>

<number>1.2345</number>

<number>15.0001</number>

<number>15.9999</number>

</numbers>

さらら: number要素が並んでいるわね。数字ばっかりね。

たけち: まっ、まぁ、かんべんして。今回は、これらについて数値関数を適用してみよう。

さらら: はい。

たけち: じゃあ、つぎのXSLTスタイルシートを見て。


数値を使ったXSLTスタイルシートの例

XSLTスタイルシート例 【numbers.xsl】

<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">

<xsl:template match="/">
   <html>
   <head>
   <title>数値関数使用例: 各数値の整数値を表示します</title>
   <link rel="stylesheet" type="text/css" href="manyo.css" />
   </head>
   <body>
   <p>■数値関数使用例: 各数値の整数値を表示します</p>

   <table border="1" width="500">
   <tr><th>元データ</th><th>ceiling</th><th>floor</th><th>round</th></tr>
   <xsl:apply-templates />
   </table>
      <p align="right">以上です。</p>
   </body>
   </html>
</xsl:template>

<!-- 各数値の整数値を表示します -->
<xsl:template match="number">
   <tr>
   <td><xsl:value-of select="number(text())" /></td>
   <td><xsl:value-of select="ceiling(text())" /></td>
   <td><xsl:value-of select="floor(text())" /></td>
   <td><xsl:value-of select="round(text())" /></td>

   </tr>
</xsl:template>

</xsl:stylesheet>

さらら: sum関数以外の数値関数を使っているのね。

たけち: そうだね。

さらら: どうなるのか早くみてみたいわ。

たけち: じゃあ、このXSLTスタイルシートを"numbers.xsl"というファイルにして、IEで表示してみようね。次のテキストをクリックしてみて。

XMLファイル numbers.xml(上記説明のXML/XSLT適用)

数値関数で数値を表示

さらら: へぇ〜。こんな風になるのね。万葉集じゃ、あんまり使いそうも無いわね。

たけち: そっ、そうだね。じゃ、今回はこれでおしまい。このあと、sum関数について別の例で見てみようね。

さらら: は〜い。ありがと。

→あとは、sum関数です。。。 (^ ^;