質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.47%

  • XML

    668questions

    XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

  • 関数

    224questions

    関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

XMLをXSL変換で条件を絞りこんで、絞り込んだ数をcountする

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 1,567

yamanoharu0129

score 39

課題で、XSL変換で、XML内のデータを絞り込んで該当するデータを表示、プラス、該当するデータの数をカウントするxslを製作しています。出来ないのは、親要素のタグが表示されない点と、カウントをどこに入れればいいのかがわかりません。コードは下記になります。studentsの中にstudentがあり、studentの属性がid、子がnameとpointで、ポイントが60以下のデータを見つけるというものです。この表記だと、課題の完成図には記載されている<students>が表示されません。studentsから指定して、studentsで同様の絞り込みを試すなどをしましたが、Studentからにしかなりません。
また、コードのどこにcountを入れればいいのか、わかりません。絞り込みを行っているstudentの部分に入れてみましたが、カウントはゼロでした。
絞り込みとカウントをどう合わせていれればいいのか、ネットや教科書を見てもわからず困っています。
もう一つ、ここにtableを加えて表示する課題もあり、出来れば、どこに入れればいいのか教えていただきたいです。
XMLが下記です
<students>
    <student id="E99X0001">
        <name>一橋太郎</name>
        <point>85</point>
    </student>
    <student id="E99X0002">
        <name>二宮恵</name>
        <point>75</point>
    </student>
    <student id="E99X0003">
        <name>三島和義</name>
        <point>40</point>
    </student>
    <student id="E99X0004">
        <name>四谷明美</name>
        <point>87</point>
    </student>
    <student id="E99X0005">
        <name>五木弘樹</name>
        <point>60</point>
    </student>
    <student id="E99X0006">
        <name>六本木朱里</name>
        <point>82</point>
    </student>
    <student id="E99X0007">
        <name>七星賢治</name>
        <point>77</point>
    </student>
    <student id="E99X0008">
        <name>八坂ほのか</name>
        <point>62</point>
    </student>
    <student id="E99X0009">
        <name>九鬼雅臣</name>
        <point>45</point>
    </student>
    <student id="E99X0010">
        <name>十川登喜子</name>
        <point>100</point>
    </student>
</students>
コード
XSLが下記です。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" encoding="Shift_JIS" />
    <xsl:template match="/">
        <root>
            <xsl:apply-templates select="students/student[point &lt; 60]" />
        </root>
    </xsl:template>
        <xsl:template match="students">
        <xsl:apply-templates select="student" />    
    </xsl:template>
    <xsl:template match="student">
        <xsl:copy>
            <xsl:apply-templates select="@id" />
            <xsl:apply-templates select="name" />
            <xsl:apply-templates select="point" />
        </xsl:copy>
    </xsl:template>
    <xsl:template match="@id">
        <id>
            <xsl:value-of select="." />
        </id>
    </xsl:template>
    <xsl:template match="name">
        <xsl:copy-of select="." />
    </xsl:template>
    <xsl:template match="point">
        <xsl:copy-of select="." />
    </xsl:template>
</xsl:stylesheet>
完成イメージがこれです。
完成イメージ
追記:課題の一文を見逃していました。<fugoukaku>の挿入も出来ていません。


  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • Tak1wa

    2015/07/01 13:03

    データを絞り込んで該当するデータを表示 → どういう形式で表示したいのでしょうか。カウントの表示の仕方と併せて教えてください。期待するアウトプットを追記してもらえるとわかりやすいです。

    キャンセル

回答 1

checkベストアンサー

+1

こんにちは。
Tableが云々の件は詳細が不明なのでここでは触れません。

以下のような感じになるのではないでしょうか。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" encoding="Shift_JIS" />
    
    <xsl:template match="/">
      <!--rootはhugoukaku-->
      <hugoukaku>
        <!--studentsにテンプレート適用-->
        <xsl:apply-templates select="students" />
      </hugoukaku>
    </xsl:template>

    <xsl:template match="students">
      <!--不合格の人-->
      <xsl:variable name="hugoukakunohito" select="student[point &lt; 60]" />
      
      <!--ノード構成で出力-->
      <students>
        <xsl:apply-templates select="$hugoukakunohito" />
      </students>
      
      <!--Count出力-->
      <count>
        <xsl:value-of select="count($hugoukakunohito)"/>
      </count>
    </xsl:template>
    
    <xsl:template match="student">
        <xsl:copy>
            <xsl:apply-templates select="@id" />
            <xsl:apply-templates select="name" />
            <xsl:apply-templates select="point" />
        </xsl:copy>
    </xsl:template>
    
    <xsl:template match="@id">
        <id>
            <xsl:value-of select="." />
        </id>
    </xsl:template>
    <xsl:template match="name">
        <xsl:copy-of select="." />
    </xsl:template>
    
    <xsl:template match="point">
        <xsl:copy-of select="." />
    </xsl:template>
</xsl:stylesheet>

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/07/01 19:07

    今までの授業でいまいち理解しきれていなかった点も理解出来ました。ありがとうございます。

    キャンセル

関連した質問

  • 解決済

    xmlとxslのファイルを使用.表を作りたい.

    表を作成するためにxslのファイルを編集しています. 以下のようなコードになっています.     <table border="1">         <tr>          

  • 解決済

    rubyを使ってSQlite3を動かす

    rubyでsqlite3を動かそうとしているのですが、文字化けをして困っているので、力を借りに来ました。 ソースは、 require 'sqlite3' db = SQLite

  • 受付中

    追加機能の実装(C言語)

    課題1で作成したプログラムに学生の追加機能を実装してください。 引数にMeiboの配列を指定することができる関数addを定義し、ユーザが入力した情報を学生の一覧に追加する機能を実装

  • 受付中

    XML XSLについての問題です

    最近XML XSLの課題で、すべでの資料は表の中に入れてくださいといわれたんですが、表の作り方はわかりませんので、ご教授をお願い致します。 以下は今まで作ったXSL <xsl:

  • 解決済

    テーブル表示をするHTML文書に 変換するXSLファイル

    課題で以下の資料をテーブルで表示するというのですが、何が入力が間違っているみたいで、ご教授お願いいたします。 XSLです <xsl:stylesheet version="

  • 解決済

    Java if文を多様しないで組みたい

    現在Javaにて名前と科目を入力したら登録した点数がでるプログラムを組んでいます。 エラーは無いのですがif文を多様してしまっているのでif文をあまり使わずに作りたいです。

  • 解決済

    xsl:paramで取得した変数を要素名として指定したい

    本のデータを持つxmlファイルを、xsltによってhtmlに変換し、RubyのCGIを使ってページ遷移をしています。 xmlファイルに、要素itemの子要素としてtitle,cre

  • 解決済

    Smartyを使ってDBからデータを引っ張ってきて表示したい

    smartyを使ってMySQLからデータをもってきたい場合 PHPにはなんと記述すればいいのでしょうか・・・? assignが必要とは聞いたのですが、assignもいまいち分か

同じタグがついた質問を見る

  • XML

    668questions

    XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

  • 関数

    224questions

    関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。