| |
XPath関数で数値の平均値を計算する | ||
|
XPath関数の文字列を整形するformat-number、ノード数を数えるcount、合計値を計算するsumを使って、<price>要素の平均値を計算してみます。
|
2003/9/9
「XPath関数」は出力するノード値を加工、演算するためのさまざまな機能を提供します。別稿「XPath関数で部分テキストを出力する」では主要な文字列関数concat、substringを解説しましたが、ここでは残る数値関数、ノードセット関数、XSLT関数を使ってみましょう。
以下は、books.xml(別稿「外部サブセットを利用して、DTDをXML文書から分離する」を参照)の内容をテーブル表示するXSLTスタイルシートです。ただし、<price>要素の値について千単位の区切り文字を付加し、また、最終行に単価の平均値を求めてみます。
[avg.xsl] <?xml version="1.0" encoding="Shift_JIS" ?> |
![]() |
| 価格のけた区切り文字と平均価格が追加された(画像をクリックすると全体を表示します) |
以下の部分に注目してください。
<td nowrap="nowrap"> |
format-number(numVal,strPtn[,strNam])は、XPath関数の中でもXSLT関数に分類される関数の1つで、引数に指定された数値numValを文字列パターンstrPtnの形式で整形します。strPtnに指定できるパターン文字列は以下のとおりです。
| パターン文字列 | 概要 |
# |
有効けた数のみを表示。余分な0は表示されない |
0 |
指定されたけた数分だけ表示。値がけた数に満たない場合、ゼロを補完する |
, |
千単位のけた区切り文字 |
. |
小数区切り文字 |
strNamは任意に指定できる引数で、“europian”などのロケール名を指定します。
数値データの整形については、<xsl:decimal-format>要素によっても可能です。<xsl:decimal-format>要素については、別稿にてまた詳述することにします。
次に、count(nodSet)は、XPath関数の中でもノードセット関数に分類される関数の1つで、引数に指定されたパスに合致するノードの個数を返します。sumは数値関数に分類され、引数に指定されたパスに合致する数値データの合計値を返します。
つまり、ここでは<price>要素(書籍単価)の値を合計し、書籍数で割り算することで(div)、書籍単価の平均値を求めているわけです。割り算の演算子には「/」ではなく「div」を使用する点に注意してください。XPathでは、「/」はパスの区切り文字として認識されます。
| 「XMLテクニック集」 |
TechTargetジャパン
- QAフレームワーク:仕様ガイドラインが勧告に昇格 (2005/10/21)
データベースの急速なXML対応に後押しされてか、9月に入って「XQuery」や「XPath」に関係したドラフトが一気に11本も更新された - XML勧告を記述するXMLspecとは何か (2005/10/12)
「XML 1.0勧告」はXMLspec DTDで記述され、XSLTによって生成されている。これはXMLが本当に役立っている具体的な証である - 文字符号化方式にまつわるジレンマ (2005/9/13)
文字符号化方式(UTF-8、シフトJISなど)を自動検出するには、ニワトリと卵の関係にあるジレンマを解消する仕組みが必要となる - XMLキー管理仕様(XKMS 2.0)が勧告に昇格 (2005/8/16)
セキュリティ関連のXML仕様に進展あり。また、日本発の新しいXMLソフトウェアアーキテクチャ「xfy technology」の詳細も紹介する
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -

