

以下のようなXMLファイルを作成した(XML宣言省略)
<purchase-order>
<book>
<title>古い算数</title> <!--注文する本の題名-->
<price>1500</price> <!--一冊あたりの本の値段-->
<count>6</count> <!--注文した冊数-->
</book>
<book>
<title>楽しくない国語</title>
<price>1000</price>
<count>4</count>
</book>
<book>
<title>詳解リカバリ</title>
<price>4000</price>
<count>5</count>
</book>
</purchase-order>
データ中の本のタイトルは気にしないでください(^^;;;
この注文全体について一冊あたりの平均価格(つまり(1500*6+1000*4+4000*5)/(6+4+5))を求めたいのですが、
どうやって求めたらいいのでしょうか?
6+4+5の部分だけなら
前略
<xsl:template match="purchase-order">
<xsl:value-of select="sum(count)">
<xsl:template>
後略
でうまくいくんですが(別なデータでは上手くいった。関数名との競合は起きないと思うんですが..)
分子を出すにあたって、selectに指定する内容が解らないんです。

No.1ベストアンサー
- 回答日時:
初書き込みです。
時間がったているので解決したかと思いますが、レスしますね。
以下のテンプレートを使用すれば、出来るのかなと思います。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="purchase-order" />
</body>
</html>
</xsl:template>
<xsl:template match="purchase-order">
<xsl:variable name="total_sum">
<xsl:call-template name="culc_sum">
<xsl:with-param name="tanka" select="book/price" />
<xsl:with-param name="suryou" select="book/count" />
</xsl:call-template>
</xsl:variable>
<xsl:text>合 計</xsl:text>
<xsl:value-of select="format-number( $total_sum div sum(book/count),'#,###')" />
</xsl:template>
<xsl:template name="culc_sum">
<xsl:param name="tanka" />
<xsl:param name="suryou" />
<xsl:choose>
<xsl:when test="not($tanka) or not($suryou)">
<xsl:value-of select="0" />
</xsl:when>
<xsl:otherwise>
<xsl:variable name="sum_data">
<xsl:call-template name="culc_sum">
<xsl:with-param name="tanka" select="$tanka[position()>1]" />
<xsl:with-param name="suryou" select="$suryou[position()>1]" />
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="number($tanka[1]) * number($suryou[1]) + $sum_data" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
実は解決しておりませんでした(汗)
ご回答ありがとうございます。
(僕が未熟なだけかもしれないけど)ソース見てこんな書き方もあるんだなぁと感心しました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
XMLを作成してもタグしか表示さ...
-
ChatGPT excel
-
MSFormsとは何ですか?
-
Excel関数で、セル内の文字列の...
-
PCでSteamのサイト内で検索する...
-
XMLサイトマップの登録方法がわ...
-
タモリさんを信じられますか?
-
自分のHTMLサイトでRSSを読み込...
-
ゲーミングPCに入っているAlris...
-
【BAT(バッチ)ファイル】Web...
-
XMLとは何ですか?
-
特殊文字の検索方法
-
フォルダー内検索
-
公文書のxmlファイルの開き方が...
-
Webページに関するさまざまな情...
-
head要素
-
ヤフー知恵袋みたいなサイトを...
-
メールアドレスについて
-
マスターノード
-
エクセルのマクロについて教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
タグの有無の判定
-
xmlのテキストにリンクを張りた...
-
XSL中の改行、タブを無効にした...
-
XSLでXMLデータをタブ区切りデ...
-
XSL内でJavaScriptを記述し、Ja...
-
XMLとXSLTでリンクを張る方法
-
空かスペースを認識させること...
-
XSLで、XMLの空タグを制御したい。
-
xmlから吐き出したhtmlデータの...
-
xsl:sortを子要素で
-
自動的にリンクを貼る・・・
-
xmlからの表示
-
2stepをくりかえす方法を教えて...
-
XMLからcsvへの変換
-
タグを置き換える
-
XMLのHTMLへの変換 (初心者)
-
スマートなxsltの記述方法
-
XSLスタイルシートについて
-
XSLTで固定長データファイルを...
-
htmlに変換されない
おすすめ情報