Microsoft Word - 2部-3.doc

Size: px
Start display at page:

Download "Microsoft Word - 2部-3.doc"

Transcription

1 目 次 課題の概要... 3 図 1 XSLT スタイルシートによる HTML 変換...3 リスト1 プログラム実行イメージ (HTML 変換モード )... 3 図 2 HTML 変換モードの HTML をブラウザで表示したときの例...4 リスト2 プログラム実行イメージ ( 人気ランキングモード )... 5 リスト3 人気ランキングモードのリストの条件... 5 図 3 人気ランキングモードのリストのツリー構造... 5 リスト4 人気ランキングリスト XML サンプル... 6 リスト5 プログラム実行イメージ ( オリジナル CD 検索モード ) 課題の開発手順... 7 図 4 課題の開発手順 XSLT の作成 CD アルバムデータを HTML に加工する XSLT... 9 参考 output 要素の method について ( 抜粋 )...9 リスト6 CDAlbumList.xsl リスト7 CDAlbumList.html リスト8 OriginalCDList.xsl 人気ランキングを HTML に加工する XSLT リスト9 CDRanking.xsl プログラムの作成 図 5 プログラムの全体の流れ プログラムの詳細説明 クラスのインポートと引数のチェック HTML 変換モードの処理 XSLT 変換およびファイルへ書き出し 人気ランキングモードの処理 ランキングの一覧を取得 XML の作成 ファイルへ書き出し オリジナル CD 検索モードの処理 検索結果を表示 SAX イベントハンドラ 人気ランキングイベントハンドラ 第 2 部 CD 製作会社のマーケティング調査

2 5.5.2 オリジナル CD 検索イベントハンドラ プログラムのコンパイルと実行 リスト10 プログラムのコンパイル コーディングリスト リスト11 CDAlbumList.java

3 1. 課題の概要 CD アルバム一覧やランキングなどの各種情報をブラウザで表示出来るよう データを HTML に加工します まず HTML 変換モードでは コマンドプロンプトから XML ファイル名 XSLT ファイル名 HTML ファイル名を入力し XML データを HTML ファイルとして保存します 次の図 1およびリスト1は CD アルバムデータである XML ファイル ( 課題 2で作成した 複数のアルバムデータを1つの XML に結合したもの ) をソースデータとし あらかじめ用意した XSLT スタイルシートを指定することによって HTML 変換を行った実行イメージです XML ファイル (CDAlbumList.xml) XSLT ファイル (CDAlbumList.xsl) 変換プログラム OriginalCDList(HTML 変換モード ) HTML ファイル (CDAlbumList.html) 図 1 XSLT スタイルシートによる HTML 変換 リスト 1 プログラム実行イメージ (HTML 変換モード : 太字はコマンド入力および入力 データ ) C: java>java OriginalCDList html >>> XML ファイル名 ( 入力ソース ) CDAlbumList.xml >>> XSLT ファイル名 ( スタイルシート ) CDAlbumList.xsl >>> HTML ファイル名 ( 出力ファイル ) CDAlbumList.html 出力しました C: java> 第 2 部 CD 製作会社のマーケティング調査

4 次の図は 作成された HTML ファイルをブラウザで表示したときのイメージです 図 2 HTML 変換モードの HTML をブラウザで表示したときの例 - 4 -

5 一方人気ランキングモードでは 入力及び出力 XML ファイル名を指定し 人気ランキングとなる XML ファイルを作成します 次のリスト2は オリジナル CD データである XML ファイル ( 後ほど作成する 複数のオリジナルデータを1つの XML に結合したもの ) をソースデータとし 人気ランキング XML ファイルを作成する実行イメージです リスト 2 プログラム実行イメージ ( 人気ランキングモード : 太字はコマンド入力および 入力データ ) C: java> java OriginalCDList -ranking >>> XML 入力ファイル名 OriginalCDList.xml >>> XML 出力ファイル名 CDRanking.xml 出力しました C: java> 人気ランキングモードのリストは次のリスト 3 の条件に従い 図 3 のツリー構造の XML で保存します リスト3 人気ランキングモードのリストの条件 1. ルート要素名を CDRanking とする 2.1 つのランキング情報を Rank 要素に記録する 3. アーティスト名を Artist 要素に記録する 4. 曲名を Title 要素に記録する 5. 曲時間を Time 要素に記録する 6. その曲を選択した学生の人数を Num 要素に記録する CDRanking 要素 Rank 要素 Artist 要素 Title 要素 Time 要素 Num 要素図 3 人気ランキングモードのリストのツリー構造 第 2 部 CD 製作会社のマーケティング調査

6 また実際に保存される XML ファイルは リスト 4 のような XML となります リスト 4 人気ランキングリスト XML サンプル ( 太字は入力データ ) <?xml version="1.0" encoding="shift_jis"?> <CDRanking> <Rank> <Artist> アーティスト 2</Artist> <Title> 曲名 3</Title> <Time>456</Time> <Num>3</Num> </Rank> <Rank> <Artist> アーティスト 1</Artist> <Title> 曲名 2</Title> <Time>234</Time> <Num>2</Num> </Rank> <Rank> <Artist> アーティスト 3</Artist> <Title> 曲名 1</Title> <Time>154</Time> <Num>1</Num> </Rank> </CDRanking> そしてオリジナル CD 検索モードでは ソースデータとなる XML ファイル名と検索曲名を入力することによって その曲をオリジナル CD に選んでいる学生の一覧を表示します 次のリスト3は オリジナル CD データである XML ファイル ( 後ほど作成する 複数のオリジナルデータを1つの XML に結合したもの ) をソースデータとし 曲名を検索する実行イメージです リスト 5 プログラム実行イメージ ( オリジナル CD 検索モード : 太字はコマンド入力お よび入力データ ) C: java> java OriginalCDList -search >>> XML ファイル名 OriginalCDList.xml >>> 曲名曲名 2 鈴木一郎 山田太郎 C: java> - 6 -

7 2. 課題の開発手順 課題 1 では JAXB 課題 2 では DOM と SAX を使用してプログラミングしました 今回 の課題 3 では DOM と SAX に加えて XSLT(XSL Transformations) を使用します XSLT は XML を HTML やプレーンテキスト 別の構造の XML に変換するための言語です 課題 3 では図 4 の順番で作成します HTML 変換モードで使用する XSLT スタイルシートの作成 CD データ結合 XML (CDAlbumList.xml) HTML ファイル (CDAlbumList.html) HTML 変換モード 図 4 課題の開発手順 プログラムを作成 (Java プログラミング ) プログラム実行 (Java による実行 ) オリジナル CD 検索モード オリジナルデータ結合 XML (OriginalCDList.xml) ランキングデータ XML (CDRanking.xml) 入力ランキングモード 第 2 部 CD 製作会社のマーケティング調査

8 3.XSLT の作成 HTML 変換モードで使用する XSLT スタイルシートの作成 CD データ結合 XML (CDAlbumList.xml) HTML ファイル (CDAlbumList.html) HTML 変換モード プログラムを作成 (Java プログラミング ) プログラム実行 (Java による実行 ) オリジナル CD 検索モード オリジナルデータ結合 XML (OriginalCDList.xml) ランキングデータ XML (CDRanking.xml) 入力ランキングモード それでは 手順に従って XSLT とプログラムを作成していきます - 8 -

9 3.1 CD アルバムデータを HTML に加工する XSLT まず最初に 課題 2で作成した複数の CD アルバムを結合した XML を HTML に加工するための XSLT スタイルシートを作成します XSLT には非常に多くの要素や関数があるためそれらの全部を説明することは出来ませんが これから使用する要素 関数について 順次解説をします 1: <?xml version="1.0" encoding="shift_jis"?> XML 文書の宣言です XSLT スタイルシート自体も XML で作成しますので この宣言 が必要です 2: <xsl:stylesheet 3: xmlns:xsl=" version="1.0" 4: xmlns:cdlist="urn:educationproject:popularlist"> ルート要素の宣言です XSLT では ルート要素名は stylesheet と決まっています stylesheet の前に xsl: という文字が付いています これは XML Schema と同様に名前空間接頭辞と呼ばれるものです 3 行目の xmlns:cdlist="urn:educationproject:cdlist" は2 行目と似ています 何が違うかと言うと 2 行目は XSLT 自体の宣言だったのに対し 3 行目はデータソース XML に対する宣言になります ここでは cdlist: という名前空間接頭辞が付いています XSLT でデータソース XML を指定する際には必ず名前空間接頭辞を使用します 5: <xsl:output method="html" indent="yes"/> 出力するファイルのデータ形式とインデントの有無を指定します 参考 output 要素の method について ( 抜粋 ) xml html text XML を出力 HTML を出力 プレーンテキストを出力 第 2 部 CD 製作会社のマーケティング調査

10 7: <xsl:template match="/"> 8: <xsl:apply-templates select="cdlist:cdlist"/> 9: </xsl:template> template は match 属性で指定した要素にマッチした場合の処理を記述します template のことをテンプレートルールといいます 複数の template の中で 特に match="/" で指定されるテンプレートルール( ドキュメントルート / にマッチするテンプレートルール ) から処理されます そしてテンプレートルールの中に apply-templates などのテンプレートを記述します apply-templates は select 属性で指定したものと同じ template を探して処理します もしも select 属性で複数の要素を選択した場合 複数の要素を順順に処理します 今回はルート要素 (1つの CDList 要素 ) にマッチした場合の処理です

11 11: <xsl:template match="cdlist:cdlist"> 12: <html> 13: <head> 14: <title>cd リスト </title> 15: </head> 16: <script language='javascript'> 17: var dispid = "1"; 18: function disp(id) 19: { 20: var item; 21: item = document.all.item(dispid); 22: item.style.display = "none"; 23: dispid = id; 24: item = document.all.item(dispid); 25: item.style.display = "block"; 26: } 27: </script> 28: <table WIDTH="100%"> 29: <tr valign="top"> 30: <td width="30%"> 31: <h1>cd リスト </h1> 32: <xsl:apply-templates select="cdlist:cd" mode="left"/> 33: </td> 34: <td width="70%"> 35: <xsl:apply-templates select="cdlist:cd" mode="right"/> 36: </td> 37: </tr> 38: </table> 39: </html> 40: </xsl:template> cdlist:cdlist 要素にマッチした場合の処理です 実際には <xsl:apply-templates select="cdlist:cdlist"/> から呼び出されます その後は 一部の XSLT 要素を除きほぼ通常の HTML になります ただし XSLT スタイルシートは XML ですから XML の規約に準じて記述する必要がります 通常の HTML との大きな違いは開始タグと終了タグの対応がきちんと取れていることです <br> のような開始タグしか使わないものは <br/> のように記述します ここで定義している JavaScript を簡単に説明します HTML の <div> タグ等では style 属性を指定することにより そのブロックの表示 非表示を切り替えることが出来ます 第 2 部 CD 製作会社のマーケティング調査

12 <div style="display:block"> で表示され <div style="display:none"> で非表示になります この <div> タグに id 属性を設定すると JavaScript から style 属性の操作が出来るようになります つまり dispid 変数に現在表示されている id を保存しておけば 次に表示したい id を指定して disp 関数を呼び出すことにより 表示するブロックを切り替えることが可能です <xsl:apply-templates select="cdlist:cd" mode="left"/> と <xsl:apply-templates select="cdlist:cd" mode="right"/> では select 属性以外に mode 属性が設定されています これは同じ cdlist:cd 要素にマッチした場合で いくつかの処理を分けたい場合の識別に使用します 42: <xsl:template match="cdlist:cd" mode="left"> 43: <xsl:element name="a"> 44: <xsl:attribute name="href">javascript:disp('<xsl:value-of 45: select="position()"/>')</xsl:attribute> 46: <xsl:value-of select="cdlist:name"/> 47: </xsl:element><p/> 48: </xsl:template> <xsl:apply-templates select="cdlist:cd" mode="left"/> から呼び出された場合の処理です element は name 属性で指定したタグを作成します そのタグで属性を指定する必要がある場合 さらに attribute で属性を指定します element が閉じられると終了タグとなります value-of は select 属性で指定した内容がそのまま書き出されます position() は XML での現在の要素 ( cdlist:cd ) の位置 ( 何番目の要素か?) を意味します したがってたとえば cdlist:cd 要素の位置が 2 (2 番目 ) で cdlist:title 要素の内容が タイトル 2 だとすると <a href= javascript:disp('2') > タイトル 2</a><p/> というタグが作成されます

13 50: <xsl:template match="cdlist:cd" mode="right"> 51: <xsl:element name="div"> 52: <xsl:attribute name="id"> 53: <xsl:value-of select="position()"/> 54: </xsl:attribute> 55: <xsl:attribute name="style"> 56: <xsl:if test="position()=1">display:block</xsl:if> 57: <xsl:if test="position()>1">display:none</xsl:if> 58: </xsl:attribute> 59: <xsl:element name="img"> 60: <xsl:attribute name="src"> 61: <xsl:choose> 62: <xsl:when test="cdlist:image/text()"> 63: <xsl:value-of select="cdlist:image"/> 64: </xsl:when> 65: <xsl:otherwise>dummy.jpg</xsl:otherwise> 66: </xsl:choose> 67: </xsl:attribute> 68: <xsl:attribute name="align">right</xsl:attribute> 69: <xsl:attribute name="width">250</xsl:attribute> 70: <xsl:attribute name="height">250</xsl:attribute> 71: </xsl:element> 72: <h2><xsl:value-of select="cdlist:title"/></h2> 73: <h2><xsl:value-of select="cdlist:artist"/></h2> 74: 発売日 :<xsl:value-of select="substring(cdlist:release, 1, 10)"/><br/> 75: <xsl:apply-templates select="cdlist:musiclist/cdlist:music"/> 76: </xsl:element> 77: </xsl:template> <xsl:apply-templates select="cdlist:cd" mode="right"/> から呼び出された場合の処 理です if は test 属性で指定した式が真の場合にその内容が処理されます 真でなければ その if ブロックは処理されません すなわち 1 番目の CD 要素は <div> タグの style 属性が display:block( 表示状態 ) となり 2 番目以降の CD 要素は <div> タグの style 属性 が display:none( 非表示状態 ) となります choose ブロックでは 最初に when の test 属性が評価され test 属性で指 定した式が真の場合に when の内容が処理され 真でなければ otherwise の内容が 処理されます Image 要素については空要素である場合もあるため Image 要素がテキス トノードを持つことが真であるなら つまり Image 要素が空要素でないなら 属性の値と 第 2 部 CD 製作会社のマーケティング調査

14 して Image 要素の文字列を取り出します そうでなければ属性の値を dummy.jpg とします substring(cdlist:release, 1, 10) は cdlist:release の1 文字目から10 文字を取り出します Release 要素には :00 などの値が保存されていますので 先頭の10 文字を取り出します <xsl:apply-templates select="cdlist:musiclist/cdlist:music"/> のように select 属性で / を用いた階層指定もできます この記述で MusicList 要素の子要素である Music 要素を処理します 79: <xsl:template match="cdlist:music"> 80: <xsl:value-of select="position()"/>. 81: <xsl:value-of select="@title"/> 82: <xsl:value-of select="floor(@time div 60)"/> 分 83: <xsl:value-of select="@time mod 60"/> 秒 <br/> 84: は Title 属性を取り出します を付ける必要があります から呼び出された場合の処理です はスペースを意味し HTML では に変換されます floor(@time div 60) は Time 属性を60で割った商を小数点以下で切り捨てます mod 60 は Time 属性を60で割った余りです つまり秒数から mm 分 ss 秒 の形式に変換しています これで XSLT が作成出来ました 完成した XSLT の例と変換した後の HTML をそれぞ れリスト 6 とリスト 7 に示します 尚 オリジナル CD リストを結合した場合の XML を HTML に加工する XSLT スタイルシートは ほぼ同様に作成出来ます その例をリスト8に示します ここで必要なオリジナル CD リストを結合するプログラムは 課題 2の CD アルバムデータ結合プログラムのファイル名の判断の部分を CD から FV に変更するだけで使用出来ます

15 リスト6 CDAlbumList.xsl( 太字は任意設定値 ) 1: <?xml version="1.0" encoding="shift_jis"?> 2: <xsl:stylesheet 3: xmlns:xsl=" version="1.0" 4: xmlns:cdlist="urn:educationproject:popularlist"> 5: <xsl:output method="html" indent="yes"/> 6: 7: <xsl:template match="/"> 8: <xsl:apply-templates select="cdlist:cdlist"/> 9: </xsl:template> 10: 11: <xsl:template match="cdlist:cdlist"> 12: <html> 13: <head> 14: <title>cd リスト </title> 15: </head> 16: <script language='javascript'> 17: var dispid = "1"; 18: function disp(id) 19: { 20: var item; 21: item = document.all.item(dispid); 22: item.style.display = "none"; 23: dispid = id; 24: item = document.all.item(dispid); 25: item.style.display = "block"; 26: } 27: </script> 28: <table WIDTH="100%"> 29: <tr valign="top"> 30: <td width="30%"> 31: <h1>cd リスト </h1> 32: <xsl:apply-templates select="cdlist:cd" mode="left"/> 33: </td> 34: <td width="70%"> 35: <xsl:apply-templates select="cdlist:cd" mode="right"/> 36: </td> 37: </tr> 38: </table> 第 2 部 CD 製作会社のマーケティング調査

16 39: </html> 40: </xsl:template> 41: 42: <xsl:template match="cdlist:cd" mode="left"> 43: <xsl:element name="a"> 44: <xsl:attribute name="href">javascript:disp('<xsl:value-of 45: select="position()"/>')</xsl:attribute> 46: <xsl:value-of select="cdlist:title"/> 47: </xsl:element><p/> 48: </xsl:template> 49: 50: <xsl:template match="cdlist:cd" mode="right"> 51: <xsl:element name="div"> 52: <xsl:attribute name="id"> 53: <xsl:value-of select="position()"/> 54: </xsl:attribute> 55: <xsl:attribute name="style"> 56: <xsl:if test="position()=1">display:block</xsl:if> 57: <xsl:if test="position()>1">display:none</xsl:if> 58: </xsl:attribute> 59: <xsl:element name="img"> 60: <xsl:attribute name="src"> 61: <xsl:choose> 62: <xsl:when test="cdlist:image/text()"> 63: <xsl:value-of select="cdlist:image"/> 64: </xsl:when> 65: <xsl:otherwise>dummy.jpg</xsl:otherwise> 66: </xsl:choose> 67: </xsl:attribute> 68: <xsl:attribute name="align">right</xsl:attribute> 69: <xsl:attribute name="width">250</xsl:attribute> 70: <xsl:attribute name="height">250</xsl:attribute> 71: </xsl:element> 72: <h2><xsl:value-of select="cdlist:title"/></h2> 73: <h2><xsl:value-of select="cdlist:artist"/></h2> 74: 発売日 :<xsl:value-of select="substring(cdlist:release, 1, 10)"/><br/> 75: <xsl:apply-templates select="cdlist:musiclist/cdlist:music"/> 76: </xsl:element> 77: </xsl:template> 78: 79: <xsl:template match="cdlist:music">

17 80: <xsl:value-of select="position()"/>. 81: <xsl:value-of 82: <xsl:value-of div 60)"/> 分 83: <xsl:value-of mod 60"/> 秒 <br/> 84: </xsl:template> 85: 86: </xsl:stylesheet> 第 2 部 CD 製作会社のマーケティング調査

18 リスト7 CDAlbumList.html <html xmlns:cdlist="urn:educationproject:cdlist"> <head> <META http-equiv="content-type" content="text/html; charset=shift_jis"> <title>cd リスト </title> </head> <script language="javascript"> var dispid = "1"; function disp(id) { var item; item = document.all.item(dispid); item.style.display = "none"; dispid = id; item = document.all.item(dispid); item.style.display = "block"; } </script> <table WIDTH="100%"> <tr valign="top"> <td width="30%"> <h1>cd リスト </h1> <a href="javascript:disp('1')"> タイトル 1</a> <p></p> <a href="javascript:disp('2')"> タイトル 2</a> <p></p> <a href="javascript:disp('3')"> タイトル 3</a> <p></p> </td><td width="70%"> <div id="1" style="display:block"> <img src="image1.bmp" align="right"><h2> タイトル 1</h2> <h2> アーティスト 1</h2> 発売日 : <br>1. 曲名 分 34 秒 <br>2. 曲名 分 12 秒 <br> </div> <div id="2" style="display:none">

19 <img src="image2.jpg" align="right"><h2> タイトル 2</h2> <h2> アーティスト 2</h2> 発売日 : <br>1. 曲名 分 34 秒 <br>2. 曲名 分 12 秒 <br>3. 曲名 分 36 秒 <br> </div> <div id="3" style="display:none"> <img src="image3.gif" align="right"><h2> タイトル 3</h2> <h2> アーティスト 3</h2> 発売日 : <br>1. 曲名 分 34 秒 <br>2. 曲名 分 12 秒 <br> </div> </td> </tr> </table> </html> 第 2 部 CD 製作会社のマーケティング調査

20 リスト8 OriginalCDList.xsl( 太字は任意設定値 ) 1: <?xml version="1.0" encoding="shift_jis"?> 2: <xsl:stylesheet 3: xmlns:xsl=" version="1.0" 4: xmlns:cdlist="urn:educationproject:popularlist"> 5: <xsl:output method="html" indent="yes"/> 6: 7: <xsl:template match="/"> 8: <xsl:apply-templates select="cdlist:cdlist"/> 9: </xsl:template> 10: 11: <xsl:template match="cdlist:cdlist"> 12: <html> 13: <head> 14: <title>cd リスト </title> 15: </head> 16: <script language='javascript'> 17: var dispid = "1"; 18: function disp(id) 19: { 20: var item; 21: item = document.all.item(dispid); 22: item.style.display = "none"; 23: dispid = id; 24: item = document.all.item(dispid); 25: item.style.display = "block"; 26: } 27: </script> 28: <table WIDTH="100%"> 29: <tr valign="top"> 30: <td width="30%"> 31: <h1>cd リスト </h1> 32: <xsl:apply-templates select="cdlist:cd" mode="left"/> 33: </td> 34: <td width="70%"> 35: <xsl:apply-templates select="cdlist:cd" mode="right"/> 36: </td> 37: </tr> 38: </table>

21 39: </html> 40: </xsl:template> 41: 42: <xsl:template match="cdlist:cd" mode="left"> 43: <xsl:element name="a"> 44: <xsl:attribute name="href">javascript:disp('<xsl:value-of 45: select="position()"/>')</xsl:attribute> 46: <xsl:value-of select="cdlist:name"/> 47: </xsl:element><p/> 48: </xsl:template> 49: 50: <xsl:template match="cdlist:cd" mode="right"> 51: <xsl:element name="div"> 52: <xsl:attribute name="id"> 53: <xsl:value-of select="position()"/> 54: </xsl:attribute> 55: <xsl:attribute name="style"> 56: <xsl:if test="position()=1">display:block</xsl:if> 57: <xsl:if test="position()>1">display:none</xsl:if> 58: </xsl:attribute> 59: <h2><xsl:value-of select="cdlist:name"/></h2><br/> 60: <xsl:apply-templates select=" cdlist:musiclist /cdlist:music"/> 61: </xsl:element> 62: </xsl:template> 63: 64: <xsl:template match="cdlist:music"> 65: <h3> 66: <xsl:value-of select="position()"/>. 67: <xsl:value-of 68: <xsl:value-of div 60)"/> 分 69: <xsl:value-of mod 60"/> 秒 70: </h3><br/> 71: 感想 : 72: <xsl:value-of select="cdlist:feeling"/><br/> 73: オリジナル CD: 74: <xsl:if test="cdlist:status='r'"> 保留 </xsl:if> 75: <xsl:if test="cdlist:status='p'"> 追加済み </xsl:if> 76: <br/><br/><br/> 77: </xsl:template> 78: 79: </xsl:stylesheet> 第 2 部 CD 製作会社のマーケティング調査

22 3.2 人気ランキングを HTML に加工する XSLT 次に 今回プログラムで作成する人気ランキングの XML を HTML に加工する XSLT を作成します 基本的な内容は CD アルバムを結合した XML を HTML に加工する XSLT と同様です 新しい XSLT 構文を使用する部分のみ説明します 尚 ここでは名前空間接頭辞を定義せずに作成します 31: <xsl:template match="rank"> 32: <xsl:param name="num" select="num"/> 33: <tr> 34: <td><xsl:value-of select="count(//rank[num>$num]) + 1"/></td> 35: <td><xsl:value-of select="title"/></td> 36: <td><xsl:value-of select="floor(@time div 60)"/> 分 37: <xsl:value-of select="@time mod 60"/> 秒 <td/> 38: <td><xsl:value-of select="num"/></td> 39: </tr> 40: </xsl:template> 人気ランキングの一覧を表示する場合に 同じ人気 つまりその曲を選択した学生の人数が同じ場合には 順位を同じにする必要があります そのため順位の決定方法を 対象 Rank 要素の Num 要素の値 ( その曲を選択した学生の人数 ) とその他の Rank 要素の Num 要素の値を比較し 対象 Rank 要素の Num 要素の値よりも大きい値の Num 要素を持つ Rank 要素の数 ( つまり対象 Rank 要素よりも上位の Rank 要素の数 ) をカウントし それに1を足した値 としています param は name 属性で指定した変数に select 属性で指定した値を代入します ここでは num という変数に Num 要素の値( 対象 Rank 要素の Num 要素の値 ) を代入しています 次に count(//rank[num>$num]) + 1 という内容を表示しています ここで //Rank[Num>$num] とありますが //Rank はルート要素以下全ての Rank 要素という意味で [Num>$num] が取り出す条件を指定しています つまり ルート要素以下全ての Rank 要素の Num 子要素の値が 現在の Rank 要素の Num 要素の値より大きいものををカウントして それに1を足しています 完成した XSLT の例をリスト 9 に示します

23 リスト9 CDRanking.xsl( 太字は任意設定値 ) 1: <xsl:stylesheet 2: xmlns:xsl=" version="1.0"> 3: <xsl:output method="html" indent="yes"/> 4: 5: <xsl:template match="/"> 6: <xsl:apply-templates select="cdranking"/> 7: </xsl:template> 8: 9: <xsl:template match="cdranking"> 10: <html> 11: <head> 12: <title> 楽曲人気ランキング </title> 13: </head> 14: <body> 15: <div align="center"> 16: <h1> 楽曲人気ランキング </h1> 17: <table border="2"> 18: <tr> 19: <th> 順位 </th> 20: <th> 曲名 </th> 21: <th> 時間 </th> 22: <th> 人数 </th> 23: </tr> 24: <xsl:apply-templates select="rank"/> 25: </table> 26: </div> 27: </body> 28: </html> 29: </xsl:template> 30: 31: <xsl:template match="rank"> 32: <xsl:param name="num" select="num"/> 33: <tr> 34: <td><xsl:value-of select="count(//rank[num>$num]) + 1"/></td> 35: <td><xsl:value-of select="title"/></td> 36: <td><xsl:value-of select="floor(@time div 60)"/> 分 37: <xsl:value-of select="@time mod 60"/> 秒 <td/> 38: <td><xsl:value-of select="num"/></td> 第 2 部 CD 製作会社のマーケティング調査

24 39: </tr> 40: </xsl:template> 41: 42: </xsl:stylesheet>

25 4. プログラムの作成 HTML 変換モードで使用する XSLT スタイルシートの作成 CD データ結合 XML (CDAlbumList.xml) HTML ファイル (CDAlbumList.html) HTML 変換モード プログラムを作成 (Java プログラミング ) プログラム実行 (Java による実行 ) オリジナル CD 検索モード オリジナルデータ結合 XML (OriginalCDList.xml) ランキングデータ XML (CDRanking.xml) 入力ランキングモード 第 2 部 CD 製作会社のマーケティング調査

26 プログラムの全体の流れは図 5 のようになります 5.1 クラスのインポートと引数のチェック 5.2 HTML 変換モードの処理 ファイルへ書き出し (XSLT) 5.3 人気ランキングモードの処理 ランキングの一覧を取得 (SAX) XML の作成 (DOM) ファイルへ書き出し (DOM) 5.4 オリジナル CD 検索モードの処理 検索結果を表示 (SAX) 5.5 SAX イベントハンドラ 人気ランキングイベントハンドラ オリジナル CD 検索イベントハンドラ parse メソッドで実行 図 5 プログラムの全体の流れ

27 1: // クラスのインポートと引数のチェック 5.1 2: public class OriginalCDList { 3: 4: if (args[0].equals("-html")) { 5: // HTML 変換モードの処理 5.2 6: try { 7: // XML ファイル名の入力 8: // XSLT ファイル名の入力 9: // HTML ファイル名の入力 10: // XSLT 変換およびファイルへ書き出し : } catch (Exception e) { 12: // 例外処理 13: } 14: } 15: else if (args[0].equals("-ranking")) { 16: // 人気ランキングモードの処理 : try { 18: // XML 入力ファイル名の入力 19: // XML 出力ファイル名の入力 20: // ランキングの一覧を取得 (SAX) : parser.parse(new File(xml1), new RankingHandler(arr_ranking)); 22: // ランキングを多い順番にソート 23: // XML の作成 (DOM) : // ファイルへ書き出し (DOM) : } catch (Exception e) { 26: // 例外処理 27: } 28: } 29: else if (args[0].equals("-search")) { 30: // オリジナル CD 検索モードの処理 : try { 32: // XML ファイル名の入力 33: // 曲名の入力 34: // 検索結果を表示 (SAX) : parser.parse(new File(xml), new SearchHandler(str)); 36: } catch (Exception e) { 37: // 例外処理 38: } 39: } 第 2 部 CD 製作会社のマーケティング調査

28 40: 41: } 42: 43: // 人気ランキングイベントハンドラ (SAX) : class RankingHandler extends DefaultHandler { 45: } 46: 47: // オリジナル CD 検索イベントハンドラ (SAX) : class SearchHandler extends DefaultHandler { 49: }

29 5. プログラムの詳細説明 ここからは Java による CD アルバムデータを表示するプログラムの作成です それで は プログラムを順番に作成していきます 5.1 クラスのインポートと引数のチェック まず 必要なクラスをインポートします その後 メインプログラムで引数のチェック をし 入力 編集のそれぞれのモードの処理をします 1: import java.io.*; 2: import java.text.*; 3: import java.util.*; 4: import javax.xml.parsers.*; 5: import javax.xml.transform.*; 6: import javax.xml.transform.dom.*; 7: import javax.xml.transform.stream.*; 8: import org.w3c.dom.*; 9: import org.xml.sax.*; 10: import org.xml.sax.helpers.*; DOM と SAX を使用しますので javax.xml.parsers.* 以下 7 行をインポートします XSLT の処理は主に javax.xml.transform.* を使用します 13: class Ranking { 14: // Artist 属性値を保存する文字列 15: String artist; 16: // Title 属性値を保存する文字列 17: String title; 18: // Time 属性値を保存する文字列 19: String time; 20: // 出現回数を保存する変数 21: int num; 22: } 人気ランキングモードでランキングデータを保存するクラスを定義します 第 2 部 CD 製作会社のマーケティング調査

30 25: class RankingComparator implements Comparator { 26: public int compare(object o1, Object o2) { 27: return (((Ranking)o2).num - ((Ranking)o1).num); 28: } 29: } 人気ランキングモードでランキングデータをソートするコールバック関数です ランキングの人数によって比較を行います Comparator インターフェースは ソートメソッド (Collections クラスの sort メソッド等 ) の引数として使用 (138 行目 ) することによって リストの順序付けを行うことのできる比較関数となります 通常は 最初の引数が2 番目の引数より小さい場合を負の整数とし 両方が等しい場合を0 最初の引数が2 番目の引数より大きい場合を正の整数とすることによってリストを昇順に並べることができますが ここでは num の値が大きい順番 ( 降順 ) に並べますので 通常と逆の比較になります 尚 引数には Ranking クラスが渡されますので Ranking クラスで型変換を行った後 Ranking クラスの変数 num の値を比較しています 32: public class OriginalCDList { 33: public static void main(string[] args) { 34: 35: // 引数のチェック 36: if (args.length!= 1) { 37: // 引数が1 個以外の場合はメッセージを出力して終了 38: System.out.println(" 引数を入力してください "); 39: System.out.println(" -html : HTML 変換 "); 40: System.out.println(" -ranking : 人気ランキング "); 41: System.out.println(" -search : オリジナル CD 検索 "); 42: return; 43: } 44: 45: // BufferedReader オブジェクトの作成 46: BufferedReader br = 47: new BufferedReader(new InputStreamReader(System.in)); CDAlbumList というクラス名でプログラムを作成します 最初に引数のチェックをします 今回は - html が HTML 変換の場合のパラメータ -ranking が人気ランキングの場合のパラメータ -search がオリジナル CD 検索の場 合のパラメータとします 次にコマンドラインから文字を入力する準備として BufferedReader オブジェクトを用 意しておきます

31 49: if (args[0].equals("-html")) { 50: // ここから HTML 変換モードの処理 51: try { // ファイルへ書き出し : } catch (Exception e) { 96: // 例外処理 ( スタックトレースの出力 ) 97: e.printstacktrace(); 98: } 99: } 100: 101: else if (args[0].equals("-ranking")) { 102: // ここから人気ランキングモードの処理 103: try { // ランキングの一覧を取得 // XML の作成 // ファイルへ書き出し : } catch (Exception e) { 190: // 例外処理 ( スタックトレースの出力 ) 191: e.printstacktrace(); 192: } 193: } 194: 195: else if (args[0].equals("-search")) { 196: // ここからオリジナル CD 検索モードの処理 197: try { // 検索結果を表示 : } catch (Exception e) { 228: // 例外処理 ( スタックトレースの出力 ) 229: e.printstacktrace(); 230: } 231: } コマンドラインパラメータが -html (HTML 変換モード ) の場合 - ranking ( 人気 ランキングモード ) の場合 - search ( オリジナル CD 検索モード ) の場合で処理を分け ます 第 2 部 CD 製作会社のマーケティング調査

32 5.2 HTML 変換モードの処理 最初は HTML 変換モードの処理です コマンドラインからファイル名の入力を行い その内容にしたがって XSLT 変換を行い ファイルへ書き出します XSLT 変換およびファイルへ書き出し 1 XML ファイル名 XSLT ファイル名 HTML ファイル名の入力 59: // XML ファイル名の入力 60: for ( ; ; ) { 61: System.out.println( 62: ">>> XML ファイル名 ( 入力ソース )"); 63: xml = br.readline(); 64: if (!xml.equals("")) break; 65: } 66: 67: // XSLT ファイル名の入力 68: for ( ; ; ) { 69: System.out.println( 70: ">>> XSLT ファイル名 ( スタイルシート )"); 71: xslt = br.readline(); 72: if (!xslt.equals("")) break; 73: } 74: 75: // HTML ファイル名の入力 76: for ( ; ; ) { 77: System.out.println( 78: ">>> HTML ファイル名 ( 出力ファイル )"); 79: html = br.readline(); 80: if (!html.equals("")) break; 81: } 最初に XML ファイル名 XSLT ファイル名 HTML ファイル名を入力します

33 2 TransformerFactory, Transformer オブジェクトの作成 85: TransformerFactory tf = TransformerFactory.newInstance(); TransformerFactory オブジェクトを生成します 87: Transformer t = tf.newtransformer(new StreamSource(xslt)); 89: t.setoutputproperty("encoding", "Shift_JIS"); Transformer オブジェクトを生成します これまで newtransformer メソッドの引数には何も指定していませんでしたが XSLT で変換する場合には XSLT ファイルを指定します そして 文字エンコーディング方式の設定を行います HTML 出力の場合 インデントの設定はしなくてもある程度見やすい状態で出力されますので インデントの設定は行っていません 3 書き出し 91: t.transform(new StreamSource(xml), 92: new StreamResult(new File(html))); XML ファイルを指定して HTML ファイルに出力します 第 2 部 CD 製作会社のマーケティング調査

34 5.3 人気ランキングモードの処理 次に 人気ランキングモードの処理です SAX を使用してランキングの一覧を取得し DOM を使用して XML の作成とファイルへの書き出しを行います 書き出されたファイル を使用して HTML 変換モードの処理を行い HTML に出力します ランキングの一覧を取得 1 XML 入力ファイル名 XML 出力ファイル名の入力 111: // XML 入力ファイル名の入力 112: for ( ; ; ) { 113: System.out.println( 114: ">>> XML 入力ファイル名 "); 115: xml1 = br.readline(); 116: if (!xml1.equals("")) break; 117: } 118: 119: // XML 出力ファイル名の入力 120: for ( ; ; ) { 121: System.out.println( 122: ">>> XML 出力ファイル名 "); 123: xml2 = br.readline(); 124: if (!xml2.equals("")) break; 125: } 最初に XML 入力ファイル名 XML 出力ファイル名を入力します 2 SAXParserFactory, SAXParser オブジェクトの作成 131: SAXParserFactory spfactory = SAXParserFactory.newInstance(); 133: SAXParser parser = spfactory.newsaxparser(); SAXParserFactory オブジェクトと SAXParser オブジェクトを生成します

35 3 ランキングの一覧を取得 135: parser.parse(new File(xml1), new RankingHandler(arr_ranking)); SAXParser オブジェクトの parse メソッドを使用して イベント処理を行います このメソッドを呼び出した時点で RankingHandler が実行されます RankingHandler では XML を順次読み込み Artist 属性 Title 属性 Artist 属性 その曲を選択した学生の人数を Ranking クラスに設定し コンストラクタの引数である変数 arr_ranking に保存します 4 ランキングを多い順番にソート 138: Collections.sort(arr_ranking, new RankingComparator()); Collections クラスの sort メソッドを使用して ランキングのソートを行います 1 番目の引数が ArrayList オブジェクト ( 実際には List オブジェクトですが ArrayList クラスは List クラスを継承していますから問題ありません ) で 2 番目の引数が先に作成したコールバック関数です 第 2 部 CD 製作会社のマーケティング調査

36 5.3.2 XML の作成 1 DocumentBuilderFactory, DocumentBuilder オブジェクトの作成 142: DocumentBuilderFactory dbf = 143: DocumentBuilderFactory.newInstance(); 145: DocumentBuilder db = dbf.newdocumentbuilder(); DocumentBuilderFactory オブジェクトと DocumentBuilder オブジェクトを生成します 2 新規 Document の作成 147: DOMImplementation di = db.getdomimplementation(); 148: Document document = di.createdocument(null, "CDRanking", null); Document オブジェクトを生成します 3 CDRanking 要素の取得 150: Element root = (Element)document.getDocumentElement(); Document オブジェクトの getdocumentelement メソッドを使用して2で作成したルート要素 (CDRanking) のオブジェクトを取得します

37 4 Rank 要素 Artist 要素 Title 要素 Time 要素 Num 要素の作成と追加 152: for (int i = 0; i < arr_ranking.size(); i++) { 153: // Rank 要素の作成 154: Element rank = (Element)document.createElement("Rank"); 155: root.appendchild(rank); 156: Ranking r = (Ranking)arr_ranking.get(i); 157: // Artist 要素の作成 158: Element artist = (Element)document.createElement("Artist"); 159: artist.appendchild(document.createtextnode(r.artist)); 160: rank.appendchild(artist); 161: // Title 要素の作成 162: Element title = (Element)document.createElement("Title"); 163: title.appendchild(document.createtextnode(r.title)); 164: rank.appendchild(title); 165: // Time 要素の作成 166: Element time = (Element)document.createElement("Time"); 167: time.appendchild(document.createtextnode(r.time)); 168: rank.appendchild(time); 169: // Num 要素の作成 170: Element num = (Element)document.createElement("Num"); 171: num.appendchild(document.createtextnode( 172: String.valueOf(r.num))); 173: rank.appendchild(num); 174: } 人気ランキングの曲数だけループ処理して Rank 要素 Artist 要素 Title 要素 Time 要素 Num 要素の作成と追加をします 第 2 部 CD 製作会社のマーケティング調査

38 5.3.3 ファイルへ書き出し 1 TransformerFactory, Transformer オブジェクトの作成 178: TransformerFactory tf = TransformerFactory.newInstance(); TransformerFactory オブジェクトを生成します 180: Transformer t = tf.newtransformer(); 182: t.setoutputproperty("encoding", "Shift_JIS"); 183: t.setoutputproperty("indent", "yes"); Transformer オブジェクトを生成します 生成した Transformer の setoutputproperty を使用して文字エンコーディング方式とインデントの設定を行います 2 書き出し 185: t.transform(new DOMSource(document), 186: new StreamResult(xml2)); 作成した XML をファイルに書き出します

39 5.4 オリジナル CD 検索モードの処理 次に オリジナル CD 検索モードの処理です SAX を使用してオリジナル CD を検索し ます 検索結果を表示 1 XML ファイル名 曲名の入力 203: // XML ファイル名の入力 204: for ( ; ; ) { 205: System.out.println( 206: ">>> XML ファイル名 "); 207: xml = br.readline(); 208: if (!xml.equals("")) break; 209: } 210: 211: // 曲名の入力 212: for ( ; ; ) { 213: System.out.println( 214: ">>> 曲名 "); 215: str = br.readline(); 216: if (!str.equals("")) break; 217: } 最初に XML ファイル名 曲名を入力します 2 SAXParserFactory, SAXParser オブジェクトの作成 222: SAXParserFactory spfactory = SAXParserFactory.newInstance(); 224: SAXParser parser = spfactory.newsaxparser(); SAXParserFactory オブジェクトと SAXParser オブジェクトを生成します 3 検索結果を表示 226: parser.parse(new File(xml), new SearchHandler(str)); SAXParser オブジェクトの parse メソッドを使用して イベント処理を行い その処理の中で結果を表示します このメソッドを呼び出した時点で SearchHandler が実行されます SearchHandler では XML を順次読み込み Title 属性から曲名で指定された文字列を検索し マッチした場合に Name 要素をコンソールに表示します 第 2 部 CD 製作会社のマーケティング調査

40 5.5 SAX イベントハンドラ 最後に人気ランキングとオリジナル CD 検索の SAX イベントハンドラを作成します 人気ランキングイベントハンドラ 1 クラス定義 235: class RankingHandler extends DefaultHandler { 236: 237: // ランキングに関する情報を保存するリスト 238: private static ArrayList arr_ranking; 239: // Artist 属性値を保存する文字列 240: private String artist; 241: // Title 属性値を保存する文字列 242: private String title; 243: // Time 属性値を保存する文字列 244: private String time; 245: 246: RankingHandler(ArrayList arr) { 247: arr_ranking = arr; 248: } 人気ランキングイベントハンドラを RankingHandler という名称で作成します ArrayList を受け取るためにコンストラクタを定義しています 2 ドキュメント開始時 251: public void startdocument() { 252: arr_ranking.clear(); 253: } 受け取ったArrayList の全ての内容を削除します

41 3 要素の開始タグ読み込み時 256: public void startelement(string uri, 257: String localname, 258: String qname, 259: Attributes attributes) { 260: if (qname.equals("music")) { 261: // Artist 属性を保存 262: artist = attributes.getvalue("artist"); 263: // Title 属性を保存 264: title = attributes.getvalue("title"); 265: // Time 属性を保存 266: time = attributes.getvalue("time"); 267: } 268: } Music 要素の処理をします 属性を検索し Title 属性と Time 属性の内容を保存しま す 第 2 部 CD 製作会社のマーケティング調査

42 3 要素の終了タグ読み込み時 275: public void endelement(string uri, String localname, String qname) { 276: if (qname.equals("music")) { 277: Ranking r; 278: // リストの中を検索 279: for (int i = 0; i < arr_ranking.size(); i++) { 280: r = (Ranking)arr_ranking.get(i); 281: // リストの中に見付かった場合はカウントをインクリメント 282: if (r.title.equals(title)) { 283: r.num++; 284: return; 285: } 286: } 287: // リストの中に見付からない場合はリストに追加 288: r = new Ranking(); 289: r.artist = artist; 290: r.title = title; 291: r.time = time; 292: r.num = 1; 293: arr_ranking.add(r); 294: } 295: } Music 要素の処理をします ArrayList から曲名を検索して見付かった場合にはカウント をインクリメントします 見付からなかった場合には Title 属性と Time 属性とカウント1 を ArrayList に追加します

43 5.5.2 オリジナル CD 検索イベントハンドラ 1 クラス定義 302: class SearchHandler extends DefaultHandler { 303: 304: // キーワードを保存する文字列 305: private String keyword; 306: // キーワードが見付かったかどうかを保存する変数 307: private boolean find; 308: // テキストデータを保存する文字列 309: private String text; 310: // Name 要素のデータを保存する文字列 311: private String name; 312: // Title 属性値を保存する文字列 313: private String title; 314: 315: SearchHandler(String s) { 316: keyword = s; 317: } オリジナル CD 検索イベントハンドラを SearchHandler という名称で作成します 検 索キーワードを受け取るためにコンストラクタを定義しています 2 要素の開始タグ読み込み時 324: public void startelement(string uri, 325: String localname, 326: String qname, 327: Attributes attributes) { 328: if (qname.equals("cd")) { 329: find = false; 330: } else if (qname.equals("music")) { 331: // Title 属性を保存 332: title = attributes.getvalue("title"); 333: } 334: text = ""; 335: } CD 要素の開始タグで検索結果フラグを false に設定しておきます Music 要素の開始 タグで属性を検索し Title 属性の内容を保存します 第 2 部 CD 製作会社のマーケティング調査

44 3 テキストデータ読み込み時 338: public void characters(char[] ch, int offset, int length) { 339: text += new String(ch, offset, length); 340: } String クラスで文字列を取り出し テキストデータを保存しておきます 4 要素の終了タグ読み込み時 343: public void endelement(string uri, String localname, String qname) { 344: if (qname.equals("name")) { 345: // Name 要素を保存 346: name = text; 347: } else if (qname.equals("music")) { 348: // Title 属性からキーワードを検索 349: if (title.indexof(keyword)!= -1) find = true; 350: } else if (qname.equals("cd")) { 351: // キーワードが見付かった場合に表示 352: if (find) { 353: System.out.println(name); 354: } 355: } 356: } Name 要素の終了タグで先に保存した文字列を保存しておきます Music 要素の終了タ グでTitle 属性からキーワードを検索して見付かった場合には検索結果フラグを true にし ます CD 要素の終了タグで検索結果が true の場合 Name 要素の内容を表示します

45 6. プログラムのコンパイルと実行 HTML 変換モードで使用する XSLT スタイルシートの作成 CD データ結合 XML (CDAlbumList.xml) HTML ファイル (CDAlbumList.html) HTML 変換モード プログラムを作成 (Java プログラミング ) プログラム実行 (Java による実行 ) オリジナル CD 検索モード オリジナルデータ結合 XML (OriginalCDList.xml) ランキングデータ XML (CDRanking.xml) 入力ランキングモード 最後に プログラムのコンパイルです J2SE バージョン 1.4 以降には XSLT,DOM,SAX の API が標準で含まれていますので 特にパッケージ等をインストールする必要なく コ ンパイルが可能です リスト 10 プログラムのコンパイル ( 太字はコマンド入力 ) C: java> javac CDAlbumList.java プログラムの実行は リスト 1 リスト 2 リスト 3 を参照してください 第 2 部 CD 製作会社のマーケティング調査

46 7. コーディングリスト コーディングリストをリスト 11 に示します リスト11 CDAlbumList.java 1: import java.io.*; 2: import java.text.*; 3: import java.util.*; 4: import javax.xml.parsers.*; 5: import javax.xml.transform.*; 6: import javax.xml.transform.dom.*; 7: import javax.xml.transform.stream.*; 8: import org.w3c.dom.*; 9: import org.xml.sax.*; 10: import org.xml.sax.helpers.*; 11: 12: // ランキングのリストで使用するクラス 13: class Ranking { 14: // Artist 属性値を保存する文字列 15: String artist; 16: // Title 属性値を保存する文字列 17: String title; 18: // Time 属性値を保存する文字列 19: String time; 20: // 出現回数を保存する変数 21: int num; 22: } 23: 24: // ランキングのリストのソートで使用するコールバック 25: class RankingComparator implements Comparator { 26: public int compare(object o1, Object o2) { 27: return (((Ranking)o2).num - ((Ranking)o1).num); 28: } 29: } 30: 31: // メインプログラム 32: public class OriginalCDList { 33: public static void main(string[] args) { 34: 35: // 引数のチェック 36: if (args.length!= 1) { 37: // 引数が1 個以外の場合はメッセージを出力して終了 38: System.out.println(" 引数を入力してください "); 39: System.out.println(" -html : HTML 変換 "); 40: System.out.println(" -ranking : 人気ランキング "); 41: System.out.println(" -search : オリジナル CD 検索 "); 42: return; 43: } 44: 45: // BufferedReader オブジェクトの作成 46: BufferedReader br = 47: new BufferedReader(new InputStreamReader(System.in));

47 48: 49: if (args[0].equals("-html")) { 50: // ここから HTML 変換モードの処理 51: try { 52: // XML ファイル名を保存する文字列 53: String xml; 54: // XSLT ファイル名を保存する文字列 55: String xslt; 56: // HTML ファイル名を保存する文字列 57: String html; 58: 59: // XML ファイル名の入力 60: for ( ; ; ) { 61: System.out.println( 62: ">>> XML ファイル名 ( 入力ソース )"); 63: xml = br.readline(); 64: if (!xml.equals("")) break; 65: } 66: 67: // XSLT ファイル名の入力 68: for ( ; ; ) { 69: System.out.println( 70: ">>> XSLT ファイル名 ( スタイルシート )"); 71: xslt = br.readline(); 72: if (!xslt.equals("")) break; 73: } 74: 75: // HTML ファイル名の入力 76: for ( ; ; ) { 77: System.out.println( 78: ">>> HTML ファイル名 ( 出力ファイル )"); 79: html = br.readline(); 80: if (!html.equals("")) break; 81: } 82: 83: // HTML への書き出し 84: // TransformerFactory オブジェクトの作成 85: TransformerFactory tf = TransformerFactory.newInstance(); 86: // Transformer オブジェクトの作成 87: Transformer t = tf.newtransformer(new StreamSource(xslt)); 88: // 出力プロパティを指定 89: t.setoutputproperty("encoding", "Shift_JIS"); 90: // 書き出し 91: t.transform(new StreamSource(xml), 92: new StreamResult(new File(html))); 93: 94: System.out.println(" 出力しました "); 95: } catch (Exception e) { 96: // 例外処理 ( スタックトレースの出力 ) 97: e.printstacktrace(); 98: } 99: } 100: 101: else if (args[0].equals("-ranking")) { 第 2 部 CD 製作会社のマーケティング調査

48 102: // ここから人気ランキングモードの処理 103: try { 104: // ランキングに関する情報を保存するリスト 105: ArrayList arr_ranking; 106: // XML 入力ファイル名を保存する文字列 107: String xml1; 108: // XML 出力ファイル名を保存する文字列 109: String xml2; 110: 111: // XML 入力ファイル名の入力 112: for ( ; ; ) { 113: System.out.println( 114: ">>> XML 入力ファイル名 "); 115: xml1 = br.readline(); 116: if (!xml1.equals("")) break; 117: } 118: 119: // XML 出力ファイル名の入力 120: for ( ; ; ) { 121: System.out.println( 122: ">>> XML 出力ファイル名 "); 123: xml2 = br.readline(); 124: if (!xml2.equals("")) break; 125: } 126: 127: // リストを初期化 128: arr_ranking = new ArrayList(); 129: 130: // SAXParserFactory オブジェクトの作成 131: SAXParserFactory spfactory = SAXParserFactory.newInstance(); 132: // SAXParser オブジェクトの作成 133: SAXParser parser = spfactory.newsaxparser(); 134: // RankingHandler でランキングの一覧を取得 135: parser.parse(new File(xml1), new RankingHandler(arr_ranking)); 136: 137: // ランキングを多い順番にソート 138: Collections.sort(arr_ranking, new RankingComparator()); 139: 140: // XML の作成 141: // DocumentBuilderFactory オブジェクトの作成 142: DocumentBuilderFactory dbf = 143: DocumentBuilderFactory.newInstance(); 144: // DocumentBuilder オブジェクトの作成 145: DocumentBuilder db = dbf.newdocumentbuilder(); 146: // 新規 Document の作成 147: DOMImplementation di = db.getdomimplementation(); 148: Document document = di.createdocument(null, "CDRanking", null); 149: // CDList 要素の取得 150: Element root = (Element)document.getDocumentElement(); 151: 152: for (int i = 0; i < arr_ranking.size(); i++) { 153: // Rank 要素の作成 154: Element rank = (Element)document.createElement("Rank"); 155: root.appendchild(rank);

49 156: Ranking r = (Ranking)arr_ranking.get(i); 157: // Artist 要素の作成 158: Element artist = (Element)document.createElement("Artist"); 159: artist.appendchild(document.createtextnode(r.artist)); 160: rank.appendchild(artist); 161: // Title 要素の作成 162: Element title = (Element)document.createElement("Title"); 163: title.appendchild(document.createtextnode(r.title)); 164: rank.appendchild(title); 165: // Time 要素の作成 166: Element time = (Element)document.createElement("Time"); 167: time.appendchild(document.createtextnode(r.time)); 168: rank.appendchild(time); 169: // Num 要素の作成 170: Element num = (Element)document.createElement("Num"); 171: num.appendchild(document.createtextnode( 172: String.valueOf(r.num))); 173: rank.appendchild(num); 174: } 175: 176: // ファイルへ書き出し 177: // TransformerFactory オブジェクトの作成 178: TransformerFactory tf = TransformerFactory.newInstance(); 179: // Transformer オブジェクトの作成 180: Transformer t = tf.newtransformer(); 181: // 出力プロパティを指定 182: t.setoutputproperty("encoding", "Shift_JIS"); 183: t.setoutputproperty("indent", "yes"); 184: // 書き出し 185: t.transform(new DOMSource(document), 186: new StreamResult(xml2)); 187: 188: System.out.println(" 出力しました "); 189: } catch (Exception e) { 190: // 例外処理 ( スタックトレースの出力 ) 191: e.printstacktrace(); 192: } 193: } 194: 195: else if (args[0].equals("-search")) { 196: // ここからオリジナル CD 検索モードの処理 197: try { 198: // XML ファイル名を保存する文字列 199: String xml; 200: // 入力された内容を保存する文字列 201: String str; 202: 203: // XML ファイル名の入力 204: for ( ; ; ) { 205: System.out.println( 206: ">>> XML ファイル名 "); 207: xml = br.readline(); 208: if (!xml.equals("")) break; 209: } 第 2 部 CD 製作会社のマーケティング調査

50 210: 211: // 曲名の入力 212: for ( ; ; ) { 213: System.out.println( 214: ">>> 曲名 "); 215: str = br.readline(); 216: if (!str.equals("")) break; 217: } 218: 219: System.out.println(""); 220: 221: // SAXParserFactory オブジェクトの作成 222: SAXParserFactory spfactory = SAXParserFactory.newInstance(); 223: // SAXParser オブジェクトの作成 224: SAXParser parser = spfactory.newsaxparser(); 225: // SearchHandler で検索結果を表示 226: parser.parse(new File(xml), new SearchHandler(str)); 227: } catch (Exception e) { 228: // 例外処理 ( スタックトレースの出力 ) 229: e.printstacktrace(); 230: } 231: } 232: } 233: } 234: 235: class RankingHandler extends DefaultHandler { 236: 237: // ランキングに関する情報を保存するリスト 238: private static ArrayList arr_ranking; 239: // Artist 属性値を保存する文字列 240: private String artist; 241: // Title 属性値を保存する文字列 242: private String title; 243: // Time 属性値を保存する文字列 244: private String time; 245: 246: RankingHandler(ArrayList arr) { 247: arr_ranking = arr; 248: } 249: 250: // ドキュメント開始時 251: public void startdocument() { 252: arr_ranking.clear(); 253: } 254: 255: // 要素の開始タグ読み込み時 256: public void startelement(string uri, 257: String localname, 258: String qname, 259: Attributes attributes) { 260: if (qname.equals("music")) { 261: // Artist 属性を保存 262: artist = attributes.getvalue("artist"); 263: // Title 属性を保存

51 264: title = attributes.getvalue("title"); 265: // Time 属性を保存 266: time = attributes.getvalue("time"); 267: } 268: } 269: 270: // テキストデータ読み込み時 271: public void characters(char[] ch, int offset, int length) { 272: } 273: 274: // 要素の終了タグ読み込み時 275: public void endelement(string uri, String localname, String qname) { 276: if (qname.equals("music")) { 277: Ranking r; 278: // リストの中を検索 279: for (int i = 0; i < arr_ranking.size(); i++) { 280: r = (Ranking)arr_ranking.get(i); 281: // リストの中に見付かった場合はカウントをインクリメント 282: if (r.title.equals(title)) { 283: r.num++; 284: return; 285: } 286: } 287: // リストの中に見付からない場合はリストに追加 288: r = new Ranking(); 289: r.artist = artist; 290: r.title = title; 291: r.time = time; 292: r.num = 1; 293: arr_ranking.add(r); 294: } 295: } 296: 297: // ドキュメント終了時 298: public void enddocument() { 299: } 300: } 301: 302: class SearchHandler extends DefaultHandler { 303: 304: // キーワードを保存する文字列 305: private String keyword; 306: // キーワードが見付かったかどうかを保存する変数 307: private boolean find; 308: // テキストデータを保存する文字列 309: private String text; 310: // Name 要素のデータを保存する文字列 311: private String name; 312: // Title 属性値を保存する文字列 313: private String title; 314: 315: SearchHandler(String s) { 316: keyword = s; 317: } 第 2 部 CD 製作会社のマーケティング調査

52 318: 319: // ドキュメント開始時 320: public void startdocument() { 321: } 322: 323: // 要素の開始タグ読み込み時 324: public void startelement(string uri, 325: String localname, 326: String qname, 327: Attributes attributes) { 328: if (qname.equals("cd")) { 329: find = false; 330: } else if (qname.equals("music")) { 331: // Title 属性を保存 332: title = attributes.getvalue("title"); 333: } 334: text = ""; 335: } 336: 337: // テキストデータ読み込み時 338: public void characters(char[] ch, int offset, int length) { 339: text += new String(ch, offset, length); 340: } 341: 342: // 要素の終了タグ読み込み時 343: public void endelement(string uri, String localname, String qname) { 344: if (qname.equals("name")) { 345: // Name 要素を保存 346: name = text; 347: } else if (qname.equals("music")) { 348: // Title 属性からキーワードを検索 349: if (title.indexof(keyword)!= -1) find = true; 350: } else if (qname.equals("cd")) { 351: // キーワードが見付かった場合に表示 352: if (find) { 353: System.out.println(name); 354: } 355: } 356: } 357: 358: // ドキュメント終了時 359: public void enddocument() { 360: } 361: }

XSLT 4-1

XSLT 4-1 XSLT 4-1 XSLT XML XML HTML XSLT 1.0 (W3C ) http://www.w3.org/tr/xslt http://www.zvon.org/xxl/xsltreference/output/ ( ) XML 4-2 XSLT XML

More information

XMLとXSLT

XMLとXSLT XML と XSLT 棚橋沙弥香 目次 現場のシステム構成とXML/XSLの位置づけ XMLとは XSL/XSLTとは Xalanのインストール いろいろなXSL XMLマスター試験の紹介 現場のシステム構成 HTML 画面上のデータ 電文 電文 外部 WEB サーバー (Java) CORBA 通信 認証サーバー (C 言語 ) DB XML 電文 HTML XSL XSLT 変換今回の説明範囲

More information

オブジェクト指向プログラミング・同演習 5月21日演習課題

オブジェクト指向プログラミング・同演習 5月21日演習課題 オブジェクト指向プログラミング 同演習 5 月 21 日演習課題 問題 1 配列の例外処理例外が発生する可能性のある処理を try で囲み その後に catch で例外を捕捉します 例外処理の終了処理として finally が行われます これは書かなくて自動的に行われます 提出課題 1 (Kadai052301.java) 以下のプログラムは例外処理をしていない ArrayIndexOutOfBoundsException

More information

Java講座

Java講座 ~ 第 1 回 ~ 情報科学部コンピュータ科学科 2 年竹中優 プログラムを書く上で Hello world 基礎事項 演算子 構文 2 コメントアウト (//, /* */, /** */) をしよう! インデントをしよう! 変数などにはわかりやすい名前をつけよう! 要するに 他人が見て理解しやすいコードを書こうということです 3 1. Eclipse を起動 2. ファイル 新規 javaプロジェクト

More information

Microsoft Word - 3部.doc

Microsoft Word - 3部.doc 目 次... 4 1. 課題の概要... 4 図 1 掲示板画面の例 ( 通常表示 )... 4 図 2 掲示板画面の例 ( 追加 )... 5 図 3 掲示板画面の例 ( 検索 )... 5 図 4 掲示板画面の例 ( 一覧表示 )... 6 2. データの保存... 7 リスト1 XML のスキーマ条件... 7 図 5 BBS.xml のツリー構造... 7 リスト2 BBS.xml... 8

More information

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文 Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文字 0x0000 ~ 0xffff byte 1バイト整数 - 2 8 ~ 2 8-1 short 2バイト整数

More information

Webプログラミング演習

Webプログラミング演習 Web プログラミング演習 STEP11 XSLT を使った画面生成 XML:Extensible Markup Language コンピュータが扱うデータや文書を表現する技術 SGML(Standard Generalized Markup Language) の改良 利用者が自由に拡張可能なマークアップ言語を設計 HTML=SGML を利用して作成された Web ページ記述言語 XHTML=XML

More information

Prog1_10th

Prog1_10th 2014 年 6 月 19 日 ( 木 ) 実施 例外処理 Java 言語では, 作成したプログラムを実行する際に, 記述した処理が想定しない事態によって実行できなくなる場合を例外と呼び, その例外への対処, 即ち例外処理が求められる 例外処理を行うための try 文の一般形は次のようになる 例外を発生させる可能性のある処理 catch( 例外のクラス名 1 変数 1 ) 例外に対処する処理 1 catch(

More information

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 条件判断文 3 switch 文 switch 文式が case の値と一致した場合 そこから直後の break; までを処理し どれにも一致しない場合 default; から直後の break; までを処理する 但し 式や値 1

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 条件判断文 3 switch 文 switch 文式が case の値と一致した場合 そこから直後の break; までを処理し どれにも一致しない場合 default; から直後の break; までを処理する 但し 式や値 1 Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 条件判断文 3 switch 文 switch 文式が case の値と一致した場合 そこから直後の までを処理し どれにも一致しない場合 default; から直後の までを処理する 但し 式や値 1 値 2は整数または文字である switch( 式 ) case 値 1: // コロン : です セミコロン ; と間違えないように!!

More information

問題1 以下に示すプログラムは、次の処理をするプログラムである

問題1 以下に示すプログラムは、次の処理をするプログラムである 問題 1 次に示すプログラムは 配列 a の値を乱数で設定し 配列 a の値が 333 より大きく 667 以下の値 の合計値を求めるプログラムである 1 と 2 に適切なコードを記述してプログラムを完 成させよ class TotalNumber { public static void main(string[] args) { int[] a = new int[1000]; // 1 解答条件

More information

K227 Java 2

K227 Java 2 1 K227 Java 2 3 4 5 6 Java 7 class Sample1 { public static void main (String args[]) { System.out.println( Java! ); } } 8 > javac Sample1.java 9 10 > java Sample1 Java 11 12 13 http://java.sun.com/j2se/1.5.0/ja/download.html

More information

1/8 ページ Java 基礎文法最速マスター Java Javaの文法一覧です 他の言語をある程度知っている人はこれを読めばJavaの基礎をマスターしてJavaを書くことができるようになっています 簡易リファレンスとしても利用できると思いますので これは足りないと思うものがあれば教えてください 1. 基礎 class の作成プログラムはclassに記述します たとえばSampleという名前のclassを作る場合

More information

Prog1_15th

Prog1_15th 2017 年 7 月 27 日 ( 木 ) 実施 応用プログラム (3) キー検索 コレクションには, ハッシュテーブルと呼ばれるものがある これは, キー (key) と値 (value) とを組として保持しているものである 通常の配列が添字により各要素にアクセス出来るのに比べて, ハッシュテーブルではキーを用いて各値にアクセスすることが出来る キー及びそのキーから連想される値の組を保持していることから,

More information

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版   Copyright 2018 NTT DATA INTRAMART CORPORATION 1 Top 目次 1. 改訂情報 2. はじめに 2.1. 本書の目的 2.2. 対象読者 2.3. サンプルコードについて 2.4. 本書の構成 3. 辞書項目 API 3.1. 最新バージョン 3.1.1. 最新バージョンの辞書を取得する 3.2. 辞書項目 3.2.1. 辞書項目を取得する 3.2.2.

More information

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版   None

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版   None クイック検索検索 目次 Copyright 2013 NTT DATA INTRAMART CORPORATION 1 Top 目次 intra-mart Accel Platform イベントナビゲータ開発ガイド初版 2013-07-01 None 改訂情報概要イベントフローの作成 更新 削除をハンドリングするイベントフローを非表示にする回答を非表示にするリンクを非表示にするタイトル コメントを動的に変更するリンク情報を動的に変更するナビゲート結果のリンクにステータスを表示する

More information

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版  

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版   Copyright 2013 NTT DATA INTRAMART CORPORATION 1 Top 目次 intra-mart Accel Platform イベントナビゲータ開発ガイド初版 2013-07-01 改訂情報概要イベントフローの作成 更新 削除をハンドリングするイベントフローを非表示にする回答を非表示にするリンクを非表示にするタイトル コメントを動的に変更するリンク情報を動的に変更するナビゲート結果のリンクにステータスを表示する

More information

(Microsoft PowerPoint - \223\306\217KJAVA\221\346\202R\224\ ppt)

(Microsoft PowerPoint - \223\306\217KJAVA\221\346\202R\224\ ppt) 独習 JAVA 第 3 版 8.4 例外とエラークラス 8.5 throws ステートメント 8.6 独自の例外 Throwable コンストラクタ catch ブロックには Throwable 型のパラメータが必ず 1 つなければならない Throwable コンストラクタ Throwable() Throwable( String message ) message には問題を通知する文字列のメッセージ

More information

.xml.xsl bcs.dtd 2. 提案 BCS.DTD のエレメントと属性 BCS.DTD のエレメントの属性を以下に示す 出 エレメント説明 現 属性 下位構造 数 code 適宜工事コード等を記述する 任 意 Common Docinfo Reference UkeoiKeiyakusyoHikaeSoufusyo KoujiTyakusyuTodoke SongaihokenKeiyakuHoukokusyo

More information

Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲

Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲 Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲を決定します 次の型が利用でき これらの型は特に基本型とよばれます 基本型 値の種類 値の範囲 boolean

More information

2

2 問題 1 次の設問 1~5 に答えよ 設問 1. Java のソースプログラムをコンパイルするコマンドはどれか a) java b) javac c) javadoc d) jdb 設問 2. Java のバイトコード ( コンパイル結果 ) を実行するコマンドはどれか a) java b) javac c) javadoc d) jdb 設問 3. Java のソースプログラムの拡張子はどれか a).c

More information

Web データ管理 JavaScript (1) (4 章 ) 2011/12/7( 水 ) 湘南工科大学講義資料 Web データ管理 (2011) 阿倍 1/21

Web データ管理 JavaScript (1) (4 章 ) 2011/12/7( 水 ) 湘南工科大学講義資料 Web データ管理 (2011) 阿倍 1/21 Web データ管理 JavaScript (1) (4 章 ) 2011/12/7( 水 ) 1/21 演習室の PC のハードディスクには演習で作成したデータは保管できません 各 PC の ネットワーク接続 ショートカットからメディア情報センターのサーバーにアクセスしてください (Z ドライブとして使用できます ) 演習名 使用するフォルダ 演習 1 Z: Web データ管理 20111207 演習

More information

Microsoft PowerPoint - chap10_OOP.ppt

Microsoft PowerPoint - chap10_OOP.ppt プログラミング講義 Chapter 10: オブジェクト指向プログラミング (Object-Oriented Programming=OOP) の入り口の入り口の入り口 秋山英三 F1027 1 例 : 部屋のデータを扱う // Test.java の内容 public class Test { public static void main(string[] args) { double length1,

More information

GEC-Java

GEC-Java Copyright (C) Junko Shirogane, Waseda University 2019, All rights reserved. 1 プログラミング初級 (Java) 第 14 回継承 白銀純子 第 14 回の内容 継承 オーバーライド ポリモーフィズム Copyright (C) Junko Shirogane, Waseda University 2019, All rights

More information

プログラミング入門1

プログラミング入門1 プログラミング入門 1 第 5 回 繰り返し (while ループ ) 授業開始前に ログオン後 不要なファイルを削除し て待機してください Java 1 第 5 回 2 参考書について 参考書は自分にあったものをぜひ手元において自習してください 授業の WEB 教材は勉強の入り口へみなさんを案内するのが目的でつくられている これで十分という訳ではない 第 1 回に紹介した本以外にも良書がたくさんある

More information

2

2 問題 次の設問に答えよ 設問. Java のソースコードをコンパイルするコマンドはどれか a) java b) javac c) javadoc d) javaw 設問. Java のバイトコード ( コンパイル結果 ) を実行するコマンドはどれか a) java b) javac c) javadoc d).jar 設問. Java のソースコードの拡張子はどれか a).c b).java c).class

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅱ 10 回目への出力 ストリーム ストリームとは入力または出力の流れをもつデータの連鎖ですストリームは異なる機器からのデータを統一的に扱う考え方です 文字ストリーム 文字ベースの入出力をサポートします - Unicode(Java 内部 ) とローカルコード (Java 外部 ) の変換が行われ プログラマはその違いを意識しなくてすみます バイトストリームバイナリデータの入出力をサポートします

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅰ 3 回目変数 今日の講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能です 変数は 型 ( データ型ともいいます ) と識別子をもちます 2 型 変数に記憶できる値の種類です型は 値の種類に応じて次の 8 種類があり これを基本型といいます 基本型値の種類値の範囲または例 boolean 真偽値 true または

More information

メソッドのまとめ

メソッドのまとめ メソッド (4) 擬似コードテスト技法 http://java.cis.k.hosei.ac.jp/ 授業の前に自己点検以下のことがらを友達に説明できますか? メソッドの宣言とは 起動とは何ですか メソッドの宣言はどのように書きますか メソッドの宣言はどこに置きますか メソッドの起動はどのようにしますか メソッドの仮引数 実引数 戻り値とは何ですか メソッドの起動にあたって実引数はどのようにして仮引数に渡されますか

More information

Microsoft PowerPoint - prog03.ppt

Microsoft PowerPoint - prog03.ppt プログラミング言語 3 第 03 回 (2007 年 10 月 08 日 ) 1 今日の配布物 片面の用紙 1 枚 今日の課題が書かれています 本日の出欠を兼ねています 2/33 今日やること http://www.tnlab.ice.uec.ac.jp/~s-okubo/class/java06/ にアクセスすると 教材があります 2007 年 10 月 08 日分と書いてある部分が 本日の教材です

More information

Microsoft PowerPoint ppt

Microsoft PowerPoint ppt 独習 Java ( 第 3 版 ) 6.7 変数の修飾子 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 Object クラスと Class クラス 6.7 変数の修飾子 (1/3) 変数宣言の直前に指定できる修飾子 全部で 7 種類ある キーワード final private protected public static transient volatile 意味定数として使える変数同じクラスのコードからしかアクセスできない変数サブクラスまたは同じパッケージ内のコードからしかアクセスできない変数他のクラスからアクセスできる変数インスタンス変数ではない変数クラスの永続的な状態の一部ではない変数不意に値が変更されることがある変数

More information

Prog2_9th

Prog2_9th 2013 年 11 月 21 日 ( 木 ) 実施例外処理 Java 言語では, 作成したプログラムを実行する際に, 記述した処理が想定しない事態によって実行できなくなる場合を例外と呼び, その例外への対処, 即ち例外処理が求められる これまでの教材に登場した例外の中で,IOException はコンパイラがチェックするため, 例外処理を必ず記述しなければコンパイルが出来ないものであるのに対して,ArithmeticException

More information

問題1 以下に示すプログラムは、次の処理をするプログラムである

問題1 以下に示すプログラムは、次の処理をするプログラムである 問題 1 次のプログラムの出力結果を a~d の中から選べ public class Problem1 { int i=2; int j=3; System.out.println("i"+j); a) 23,b) 5,c) i3,d) ij 問題 2 次のプログラムの出力結果を a~d の中から選べ public class Problem2 { int a=6; if((a>=2)&&(a

More information

JAVA入門

JAVA入門 JAVA 入門後期 10 情報処理試験例題解説 H14 年度秋問 8 次の Java プログラムの説明及びプログラムを読んで, 設問に答えよ プログラムの説明 ディジタル論理回路シミュレータを作成するためのクラスとテスト用クラスである (1) ゲートを表す抽象クラス Gate のサブクラスとして, NOT ゲートを表すクラス NotGate 及び AND ゲートを表すクラス AndGate を定義する

More information

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の まで処理しますどれにも一致致しない場合 default: から直後の まで処理します 式の結果 ラベル 定数 整数または文字 (byte, short, int,

More information

基礎計算機演習 実習課題No6

基礎計算機演習 実習課題No6 実習課題 No.6 課題は 3 題ある. 課題 6-1 時間内提出 次の実行例のように, 名簿を出力するプログラムをつくりたい. このプログラムでは, まず人数をたずね, 次にその人数分の名前を入力し, それを再びコンソールに出力する. なお, 空の名前が入力されても終了せずにその欄は空欄で出力するものとする. 注意とヒント この課題では,string 型の配列をまず宣言する. このとき, 配列の要素はちょうど名簿に入力する人数分だけを宣言すること

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 1 2 3 /usr/local javalib xerces-2_6_2 xalan-2_6_0 4 XERCES_HOME=/usr/local/javalib/xerces-2_6_2 CLASSPATH=$XERCES_HOME/xmlParserAPIs.jar:$CLASSPATH CLASSPATH=$XERCES_HOME/xercesImpl.jar:$CLASSPATH CLASSPATH=$XERCES_HOME/xercesSamples.jar:$CLASSPATH

More information

Prog1_6th

Prog1_6th 2019 年 10 月 31 日 ( 木 ) 実施配列同種のデータ型を有する複数のデータ ( 要素 ) を番号付けして, ひとまとまりの対象として扱うものを配列と呼ぶ 要素 point[0] point[1] point[2] point[3] point[4] 配列 配列の取り扱いに関して, 次のような特徴がある 1. プログラム中で用いる配列変数 ( 配列の本体を参照する参照型の変数 ) は必ず宣言しておく

More information

情報処理Ⅰ

情報処理Ⅰ Java フローチャート -1- フローチャート ( 流れ図 ) プログラムの処理手順 ( アルゴリズム ) を図示したもの 記号の種類は下記のとおり 端子記号 ( 開始 終了 ) 処理記号計算, 代入等 条件の判定 条件 No ループ処理 LOOP start Yes データの入力 出力 print など 定義済み処理処理名 end サンプルグログラム ( 大文字 小文字変換 ) 大文字を入力して下さい

More information

スライド 1

スライド 1 XML with SQLServer ~let's take fun when you can do it~ Presented by 夏椰 ( 今川美保 ) Agenda( その 1) XML XML XSLT XPath XML Schema XQuery Agenda( その 2) SQLServer における XML XML 型 XML Schema XQuery & XPath チェック制約

More information

PowerPoint Presentation

PowerPoint Presentation 上級プログラミング 2( 第 1 回 ) 工学部情報工学科 木村昌臣 今日のテーマ 入出力に関わるプログラムの作り方 ネットワークプログラミングの続き TCP の場合のプログラム 先週のプログラムの詳細な説明 URLクラス サーバープログラムの例 データ入出力プログラミングの復習 テキストの読み込み関係のクラス テキストからデータを読み込むときには 通常 三段構えで行う バイナリデータとして読み出し

More information

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y  小幡智裕 Java Script プログラミング入門 3-6~3-7 茨城大学工学部情報工学科 08T4018Y 小幡智裕 3-6 組み込み関数 組み込み関数とは JavaScript の内部にあらかじめ用意されている関数のこと ユーザ定義の関数と同様に 関数名のみで呼び出すことができる 3-6-1 文字列を式として評価する関数 eval() 関数 引数 : string 式として評価する文字列 戻り値 :

More information

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。 ソフトウェア基礎演習課題 文法理解度確認範囲 問題 1 データ型 ( 変数, データ型 ) 問題 2 制御構造 (switch 文 ) 問題 3 制御構造 (while 文 ) 問題 4 制御構造と配列 ( 総和 ) 問題 5 制御構造と配列 ( 総和, 平均 ) 問題 6 データ型と各種演算子 ( 文字列, 検索 ) 問題 7 クラスの定義 ( メソッドの定義, コンストラクタの定義, キャスト

More information

2

2 プログラミング応用演習 b 10 月 5 日演習課題 2016/10/05 PAb 演習課題 プログラム仕様書作成課題 課題クラスを読み 次に示すクラスの仕様書を完成させよ なお 仕様書は クラス 1 つに付き 1 つ作成す る 加えて 図 1 のようなクラス継承の模式図を作成せよ < クラス名 のプログラム仕様書 > 作成者 : 学籍番号 名前 (1) クラスクラス名 : クラス名 説明 : クラスが何を表現しているか

More information

Javaプログラムの実行手順

Javaプログラムの実行手順 戻り値のあるメソッド メソッドには 処理に使用する値を引数として渡すことができました 呼び出し 側からメソッドに値を渡すだけでなく 逆にメソッドで処理を行った結果の値を 呼び出し側で受け取ることもできます メソッドから戻してもらう値のことを もどりち戻り値といいます ( 図 5-4) 図 5-4. 戻り値を返すメソッドのイメージ 戻り値を受け取ることによって ある計算を行った結果や 処理に成功したか失

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅰ 3 回目変数 今日の講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能です 変数は 型 ( データ型ともいいます ) と識別子をもちます 2 型 変数に記憶できる値の種類です型は 値の種類に応じて次の 8 種類があり これを基本型といいます 基本型値の種類値の範囲または例 boolean 真偽値 true または

More information

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード] 第 3 回 Java 基本技術講義 クラス構造と生成 33 クラスの概念 前回の基本文法でも少し出てきたが, オブジェクト指向プログラミングは という概念をうまく活用した手法である. C 言語で言う関数に似ている オブジェクト指向プログラミングはこれら状態と振る舞いを持つオブジェクトの概念をソフトウェア開発の中に適用し 様々な機能を実現する クラス= = いろんなプログラムで使いまわせる 34 クラスの概念

More information

Prog2_10th

Prog2_10th 2013 年 11 月 28 日 ( 木 ) 実施 ファイル操作とディレクトリ操作今回の授業では,Java 言語でのファイル操作とディレクトリ操作とについて学習する ファイル操作ファイル操作は,C 言語プログラミングで学んだように, 次の順序で行う 1) ストリームを開く 2) ストリームからの入力, ストリームへの出力 3) ストリームを閉じる Java 言語では, ファイル操作に関係するクラスが複数用意されている

More information

XMLの利用(XMLとXSL)

XMLの利用(XMLとXSL) XML の利用 XML(Extensible Markup Language) とは XML の基礎知識 XML とは WC(World Wide Web Consortium) で標準化された情報記述言語で有る 情報記述言語には HTML(Hyper Text Markup Language) が有り インターネット上の文書を標準化し世界規模の文書の閲覧を可能に仕たが 固定的なタグしか使用出来ない為

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅰ 6 回目 if 文と if else 文 今日の講義で学ぶ内容 関係演算子 if 文と if~else 文 if 文の入れ子 関係演算子 関係演算子 ==,!=, >, >=,

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅰ 12 回目クラス 今日の講義で学ぶ内容 クラスとは クラスの宣言と利用 クラスの応用 クラス クラスとは 異なる複数の型の変数を内部にもつ型です 直観的に表現すると int 型や double 型は 1 1 つの値を管理できます int 型の変数 配列型は 2 5 8 6 3 7 同じ型の複数の変数を管理できます 配列型の変数 ( 配列変数 ) クラスは double

More information

Microsoft PowerPoint _2b-DOM.pptx

Microsoft PowerPoint _2b-DOM.pptx 要素ノードの参照 プロパティで参照可能な親 子 兄弟ノード 要素ノードの他に, テキストノード, ノード, コメントノードなど様々なノードが含まれる ( 処理中に判別が必要 ) 要素ノードのみ参照するプロパティ プロパティ 参照先 parentelement 親要素 firstelementchild 先頭の子要素 lastelementchild 末尾の子要素 nextelementsibng 直後の兄弟要素

More information

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name クラス ( 教科書第 8 章 p.267~p.297) 前回は処理をまとめる方法として メソッドについて学習した 今回はメソッドとその処理の対象となるデータをまとめるためのクラスについて学習する このクラスはオブジェクト指向プログラミングを実現するための最も重要で基本的な技術であり メソッドより一回り大きなプログラムの部品を構成する 今回はクラスにおけるデータの扱いとクラスの作成方法 使用方法について説明していく

More information

XMLテクノロジを使いやすくする

XMLテクノロジを使いやすくする XML 2005 9 XML... 3... 3 XML... 5 DOM XML... 5 DOM 3.0 Load and Save... 5 DOM 3.0 Validation... 8 SAX XML... 11 SAX... 11 XSL... 12... 13... 13... 14... 14 XML... 15 XML... 15 JAXB CLASS GENERATOR... 16

More information

intra-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド   初版  

intra-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド   初版   Copyright 2012 NTT DATA INTRAMART CORPORATION 1 Top 目次 1. 改訂情報 2. IM- 共通マスタの拡張について 2.1. 前提となる知識 2.1.1. Plugin Manager 2.2. 表記について 3. 汎用検索画面の拡張 3.1. 動作の概要 3.1.1. 汎用検索画面タブの動作概要 3.2. 実装の詳細 3.2.1. 汎用検索画面タブの実装

More information

intra-mart Accel Platform

intra-mart Accel Platform intra-mart Accel Platform IM- 共通マスタスマートフォン拡張プログラミングガイド 2012/10/01 初版 変更年月日 2012/10/01 初版 > 変更内容 目次 > 1 IM- 共通マスタの拡張について...2 1.1 前提となる知識...2 1.1.1 Plugin Manager...2 1.2 表記について...2 2 汎用検索画面の拡張...3

More information

プログラミング基礎I(再)

プログラミング基礎I(再) 山元進 クラスとは クラスの宣言 オブジェクトの作成 クラスのメンバー フィールド 変数 配列 メソッド メソッドとは メソッドの引数 戻り値 変数の型を拡張したもの 例えば車のデータベース 車のメーカー 車種 登録番号などのデータ データベースの操作 ( 新規データのボタンなど ) プログラムで使う部品の仕様書 そのクラスのオブジェクトを作ると初めて部品になる 継承 などの仕組みにより カスタマイズが安全

More information

Javaセキュアコーディングセミナー2013東京第1回 演習の解説

Javaセキュアコーディングセミナー2013東京第1回 演習の解説 Java セキュアコーディングセミナー東京 第 1 回オブジェクトの生成とセキュリティ 演習の解説 2012 年 9 月 9 日 ( 日 ) JPCERT コーディネーションセンター脆弱性解析チーム戸田洋三 1 演習 [1] 2 演習 [1] class Dog { public static void bark() { System.out.print("woof"); class Bulldog

More information

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の まで処理しますどれにも一致しない場合 default: から直後の まで処理します 式は byte, short, int, char 型 ( 文字または整数 ) を演算結果としますラベルには整数リテラル

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション オブジェクト指向 プログラミング演習 第 4 回継承 オーバーライド ポリモルフィズム 今日のお題 継承 オーバーライド ポリモルフィズム 継承 (inherit) あるクラス c のサブクラス s を定義する : このとき s は c を継承していると言う 何かの下位概念を表すクラスは その上位概念を表すクラスの属性や機能を ( 基本的には ) 使える 継承の例 大学生 長崎県立大学の学生 大学生を継承する概念

More information

ガイダンス

ガイダンス 情報科学 B 第 2 回変数 1 今日やること Java プログラムの書き方 変数とは何か? 2 Java プログラムの書き方 3 作業手順 Java 言語を用いてソースコードを記述する (Cpad エディタを使用 ) コンパイル (Cpad エディタを使用 ) 実行 (Cpad エディタを使用 ) エラーが出たらどうしたらよいか??? 4 書き方 これから作成する Hello.java 命令文 メソッドブロック

More information

Microsoft PowerPoint - prog09.ppt

Microsoft PowerPoint - prog09.ppt プログラミング言語 3 第 09 回 (2007 年 11 月 26 日 ) 1 今日の配布物 片面の用紙 1 枚 今日の課題が書かれています 本日の出欠を兼ねています 2/40 今日やること http://www.tnlab.ice.uec.ac.jp/~s-okubo/class/java06/ にアクセスすると 教材があります 2007 年 11 月 27 日分と書いてある部分が 本日の教材です

More information

Javaセキュアコーディングセミナー東京 第3回 入出力(File, Stream)と例外時の動作 演習解説

Javaセキュアコーディングセミナー東京 第3回 入出力(File, Stream)と例外時の動作 演習解説 Java セキュアコーディングセミナー東京第 3 回入出力と例外時の動作 演習解説 2012 年 11 月 11 日 ( 日 ) JPCERT コーディネーションセンター脆弱性解析チーム戸田洋三 1 Hands-on Exercises コンパイルエラーに対処しよう ファイルからのデータ入力を実装しよう 2 Hands-on Exercise(1) サンプルコードの コンパイルエラーに対処しよう 3

More information

ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする ) ためには 同期処理を用いるこ とが必要になる 同期処理は 予約語 synchronized で行うことができる ここでは sy

ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする ) ためには 同期処理を用いるこ とが必要になる 同期処理は 予約語 synchronized で行うことができる ここでは sy オブジェクト指向プログラミング演習 2010/10/27 演習課題 スレッド ( その 2) 同期処理 結果不正 デッドロック 前回のスレッドの演習では 複数のスレッドを実行し 一つのプログラムの中の違う処理を同時に実行し た ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする )

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション オブジェクト指向 プログラミング演習 第 4 回継承 オーバーライド ポリモルフィズム 今日のお題 継承 オーバーライド ポリモルフィズム 継承 (inherit) あるクラス c のサブクラス s を定義する : このとき s は c を継承していると言う 何かの下位概念を表すクラスは その上位概念を表すクラスの属性や機能を ( 基本的には ) 使える 継承の例 大学生 長崎県立大学の学生 大学生を継承する概念

More information

XML Week Web 2.0 Day (1) SOA2.0 KM2.0? REST API + XSLT Amazon hon. hon.jp API XML Consortium XML ( ) REST(GET)API Amazon.co.jp hon.jp REST

XML Week Web 2.0 Day (1) SOA2.0 KM2.0? REST API + XSLT Amazon hon. hon.jp API XML Consortium XML ( ) REST(GET)API Amazon.co.jp hon.jp REST XML Week Web 2.0 Day (1) SOA2.0 KM2.0? REST API + XSLT Amazon hon. hon.jp API XML Consortium 2006-05-23 XML ( ) REST(GET)API Amazon.co.jp hon.jp REST + XSLT ( ) hon.jp hon.jp + Aamazon.co.jp Exif to RDF(kanzaki.com)

More information

Microsoft PowerPoint - prog09.ppt

Microsoft PowerPoint - prog09.ppt プログラミング言語 3 第 09 回 (2007 年 11 月 26 日 ) 1 今日の配布物 片面の用紙 1 枚 今日の課題が書かれています 本日の出欠を兼ねています 2/40 1 今日やること http://www.tnlab.ice.uec.ac.jp/~s-okubo/class/java06/ にアクセスすると 教材があります 2007 年 11 月 27 日分と書いてある部分が 本日の教材です

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅰ 4 回目演算子 今日の講義で学ぶ内容 演算子とオペランド 式 様々な演算子 代表的な演算子の使用例 演算子とオペランド 演算子 演算の種類です例えば + - * / 掛け算の記号は ではなく *( アスタリスク ) を使います割り算の記号は ではなく /( スラッシュ ) を使います オペランド 演算の対象です例えば 5( 値 ) num( 変数 ) 式 演算子とオペランドの組み合わせにより構成される数式です式は演算結果をもちます

More information

Java知識テスト問題

Java知識テスト問題 Java 知識テスト SDAS プログラマ(Java 編 ) 運営事務局 このテストは J2EE プログラマとしての Java の知識を評価するものです 問題は 30 問, テスト時間は J2EE 知識テストとあわせて 90 分です 問題は全て択一式です 選択肢から 1 つだけ選択してください 資料の閲覧は禁止です テストが終わり次第 答案用紙を提出していただいてかまいません テスト終了後, 本テストの内容を他の方に話さないでください

More information

Java言語 第1回

Java言語 第1回 Java 言語 第 2 回簡単な Java プログラムの作成と実行 知的情報システム工学科 久保川淳司 kubokawa@me.it-hiroshima.ac.jp 簡単な Java プログラム Java プログラムのファイル名 Java プログラムのファイル名命名ルール ファイル名とクラス名は同じでなければならない HelloJava.java public class HelloJava { public

More information

プログラミング入門1

プログラミング入門1 プログラミング入門 1 第 6 回 Switch 文 プロジェクトの持ち運び 授業開始前に ログオン後 不要なファイルを削除し て待機してください Java 1 第 6 回 2 前回のテーマ while 文を用いた繰り返し実行 for 文との使い分け 複雑な条件判定 && かつ または を使って Java 1 第 6 回 3 復習 : while 文はfor 文から 初期化式 を外に出し ステップを進める式

More information

Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac

Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac Actual4Test http://www.actual4test.com Actual4test - actual test exam dumps-pass for IT exams Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN

More information

052-XML04/fiÁ1-part3-’ÓŠ¹

052-XML04/fiÁ1-part3-’ÓŠ¹ & XML Data Store Part 3 Feature*1 AKIMOTO, Shougo i i i i i i inter 52 XML Magazine 04 i i i i i i i i P a r t 3 i i i i i XML Magazine 04 53 & XML Data Store Feature*1 i i inter i inter i inter inter

More information

JAVA とテンプレート

JAVA とテンプレート JAVA とテンプレート 序論 : コンテナ 他のクラスのオブジェクトを保存するものをコンテナ (Container) と呼ぶ 集合 リスト 表 コンテナに求められる機能 追加 削除 参照 要素の比較 並べ替え 要素のクラスが不明では 比較できない 要素が想定しているクラスのものかの判定 テンプレート以前の対応方法 コンテナ設計時に 保存されるクラスを特定してコンテナをコードする 保存されるクラスごとに作成しなければならない

More information

Android Layout SDK プログラミング マニュアル

Android Layout SDK プログラミング マニュアル プログラミングマニュアル Version 1.3.0 用 更新履歴 年月日 バージョン 履歴 2014.09.08 1.2.0.0 新規 (Layout Utilities ユーザーズ ガイド ) 2016.08.16 1.3.0.0 モバイル端末用レイアウトで直線部品と矩形部品に対応 モバイル端末用レイアウトファイルを CLFX から XML へ変更 Layout Print Engine から

More information

JAVA入門

JAVA入門 JAVA 入門 3 配列とコレクション 配列 1. 配列とは? 簡単 JAVA 説明 11 配列 同じ型の値を複数まとめて記憶する という機能を持つもの ということですが イメージとしては 同じ型の入れ物を複数用意する というイメージです int int int 簡単 JAVA 説明 11 配列の準備 2. 配列の準備 行うことは次の 2 つです 1 配列の宣言 2 配列要素の確保 簡単 JAVA

More information

前ページからの続き // テキストボックス02 id 属性で取得 // id 属性で取得する場合は一意に決まるので 何番目かの指定は不要 var textbox02elem = document.getelementbyid("text_box02_id"); if ("001" == statee

前ページからの続き // テキストボックス02 id 属性で取得 // id 属性で取得する場合は一意に決まるので 何番目かの指定は不要 var textbox02elem = document.getelementbyid(text_box02_id); if (001 == statee 全体のヒント 1. テキストボックスの制御 1.1. 日付入力日付の入力ボックスは フォーカスが入った時にスラッショを消し フォーカスが他の項目等に移るとスラッシュが加わるようにする オンフォーカス 20100101 オフフォーカス 2010/01/01 1.1.1 オンフォーカス時にスラッシュを消す入力項目のスラッシュを消すには include/function.js ファイル内の var delslash

More information

XMLプログラミング(DOM編)

XMLプログラミング(DOM編) XML プログラミング DOM に依る XML 文書の操作 DOM と DOMDocument オブジェクト プログラミング言語から XML を扱うには DOM(Document Object Model) と呼ばれるプログラミングインターフェイスを利用するのが最も簡単で有る DOM は Internet Explorer 5.x 以降の XML パーサ (MSXML) に実装されて居る DOMDocument

More information

マークアップ言語

マークアップ言語 東北大学全学教育科目 情報基礎 B 1 セメスター金曜 2 講時工学部 15, 16 組 JAVA 言語初級プログラム (f( f or ループ ) 建築 社会環境工学科 このスライド週の内容 for 文 ( 繰り返し文 ) break 文 情報基礎 B 2 for による繰り返し 以前,1 から 10 まで足すプログラムを作った. 同じ処理を 10 回繰り返すために, 同じような命令 ( 式 )

More information

Web2.0 REST API + XSLT Amazon hon.jp API XML Consortium XML ( ) REST(GET)API hon.jp Amazon.co.jp Google Map Exif to RDF(kanzaki.com) REST +

Web2.0 REST API + XSLT Amazon hon.jp API XML Consortium XML ( ) REST(GET)API hon.jp Amazon.co.jp Google Map Exif to RDF(kanzaki.com) REST + Web2.0 REST API + XSLT Amazon hon.jp API XML Consortium 2006-04-11 XML ( ) REST(GET)API hon.jp Amazon.co.jp Google Map Exif to RDF(kanzaki.com) REST +XSLT hon.jp hon.jp + Aamazon.co.jp Exif to RDF(kanzaki.com)

More information

2016 年度 JAVA 講座第六週目 目次 パッケージ... 2 パッケージの作成... 2 パッケージの使用方法... 3 異なるパッケージ同名クラスの宣言... 4 パッケージの側面から見たアクセス修飾子... 4 ラッパークラス... 5 ラッパークラス利用法:キャスト... 5 ラッパーク

2016 年度 JAVA 講座第六週目 目次 パッケージ... 2 パッケージの作成... 2 パッケージの使用方法... 3 異なるパッケージ同名クラスの宣言... 4 パッケージの側面から見たアクセス修飾子... 4 ラッパークラス... 5 ラッパークラス利用法:キャスト... 5 ラッパーク 2016 年度 JAVA 講座第六週目 目次 パッケージ... 2 パッケージの作成... 2 パッケージの使用方法... 3 異なるパッケージ同名クラスの宣言... 4 パッケージの側面から見たアクセス修飾子... 4 ラッパークラス... 5 ラッパークラス利用法:キャスト... 5 ラッパークラス利用法:ArrayList... 5 例外:Exception... 6 ぬるぽ... 6 例外処理:try-catch-finaly...

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション オブジェクト指向 プログラミング演習 第 2 回クラス インスタンス メソッド コンストラクタ 先週の出席確認 Webブラウザはどのようなプログラムでできているかこの問に答える前に Webブラウザとは 何か? 普段使ってますよね? Webブラウザを使ってできることと Webブラウザがやっていることを区別する必要がある 何をすれば Web ブラウザ と言えるのか NHK チコちゃんに叱られる! Web

More information

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。 解答例 問題 1 変数 a が 3 以上でかつ 7 以下の場合 true と表示し そうでない場合は false と表示するプログラムである public class Prog061004_01 { int a; boolean b; a = Integer.parseInt(buf.readLine()); b = (a >= 3) && (a

More information

プログラミングA

プログラミングA プログラミング A 第 10 回 演習 2015 年 6 月 29 日 東邦大学金岡晃 本日の内容 中間テストの解説 演習 1 2015/6/29 プログラミング A 中間テスト解説 : 問 1 < 問 1> 下記の命令が実行された後の a の値を書きなさい ( 省略 ). int a=13; 答え : 13 2 中間テスト解説 : 問 2 < 問 2> 下記の命令が実行された後の a の値を書きなさい

More information

Brekeke PBX - Version 2.1 ARSプラグイン開発ガイド

Brekeke PBX - Version 2.1 ARSプラグイン開発ガイド Brekeke PBX Version 2.1 ARS プラグイン開発ガイド Brekeke Software, Inc. バージョン Brekeke PBX v2.1 ARS プラグイン開発ガイド, 2008 年 2 月 著作権本書の著作権は Brekeke Software, Inc. にあります Copyright 2003-2008 Brekeke Software, Inc. 本書の一部または全部を

More information

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド メソッド ( 教科書第 7 章 p.221~p.239) ここまでには文字列を表示する System.out.print() やキーボードから整数を入力する stdin.nextint() などを用いてプログラムを作成してきた これらはメソッドと呼ばれるプログラムを構成する部品である メソッドとは Java や C++ などのオブジェクト指向プログラミング言語で利用されている概念であり 他の言語での関数やサブルーチンに相当するが

More information

Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問

Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問 Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問のメソッドを追加する public static void main(string[] args) {

More information

JavaScript演習

JavaScript演習 JavaScript 演習 2 1 本日の内容 prompt 関数 演習 1 演習 2 document.getelementbyid 関数 演習 3 イベント処理 基本的なフォーム テキストボックスの入力値の取得 演習 4 IE における JavaScript のデバッグ方法 1. ツール インターネットオプションメニューを実行 2. 詳細設定タブの スクリプトエラーごとに通知を表示する をチェック

More information

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

コンピュータ中級B ~Javaプログラミング~  第3回 コンピュータと情報をやりとりするには? Copyright (C) Junko Shirogane, Waseda University 2016, All rights reserved. 1 プログラミング初級 (Java) 第 4 回コンピュータと情報をやりとりするには? 白銀純子 Copyright (C) Junko Shirogane, Waseda University 2016, All rights reserved.

More information

フォームとインナー HTML を使って動的にページ内の文章を変更しよう 問題 1. つぎの指示と画面を参考に HTML を組みなさい 仕様 テキストボックスに任意の文字を入力し [ コメント ] ボタンをクリックすると 下部の文章がテキストボックスの内容に置き換わる フォーム名 : f1 テキストボ

フォームとインナー HTML を使って動的にページ内の文章を変更しよう 問題 1. つぎの指示と画面を参考に HTML を組みなさい 仕様 テキストボックスに任意の文字を入力し [ コメント ] ボタンをクリックすると 下部の文章がテキストボックスの内容に置き換わる フォーム名 : f1 テキストボ フォームとインナー HTML を使って動的にページ内の文章を変更しよう 問題 1. つぎの指示と画面を参考に HTML を組みなさい 仕様 テキストボックスに任意の文字を入力し [ コメント ] ボタンをクリックすると 下部の文章がテキストボックスの内容に置き換わる フォーム名 : f1 テキストボックス名 : t1 関数名 : MM() test-a.htm function MM(){ a=document.f1.t1.value;

More information

Prog2_12th

Prog2_12th 2018 年 12 月 13 日 ( 木 ) 実施クラスの継承オブジェクト指向プログラミングの基本的な属性として, 親クラスのメンバを再利用, 拡張, または変更する子クラスを定義することが出来る メンバの再利用を継承と呼び, 継承元となるクラスを基底クラスと呼ぶ また, 基底クラスのメンバを継承するクラスを, 派生クラスと呼ぶ なお, メンバの中でコンストラクタは継承されない C# 言語では,Java

More information

解答上の注意 1 解答は 解答 紙の問題番号に対応した解答欄にマークしなさい 2 選択肢は 問ごとに 意されています 問 1の選択肢は 問 2で使 しません 3 選択肢は量が多いため 探しやすさの観点よりグループ分けされています グループ分けに合わせて解答欄が区切られていますが 横 1 列で問題 1

解答上の注意 1 解答は 解答 紙の問題番号に対応した解答欄にマークしなさい 2 選択肢は 問ごとに 意されています 問 1の選択肢は 問 2で使 しません 3 選択肢は量が多いため 探しやすさの観点よりグループ分けされています グループ分けに合わせて解答欄が区切られていますが 横 1 列で問題 1 解答上の注意 1 解答は 解答 紙の問題番号に対応した解答欄にマークしなさい 2 選択肢は 問ごとに 意されています 問 1の選択肢は 問 2で使 しません 3 選択肢は量が多いため 探しやすさの観点よりグループ分けされています グループ分けに合わせて解答欄が区切られていますが 横 1 列で問題 1つ分となっています 4 問題の 中の 1 2 などには 特に指 がないかぎり 与えられた 問選択肢群が

More information

スライド 1

スライド 1 第 4 回データの入出力 情報科学部情報メディア学科 鈴木基之 1 前回の演習の答え class CalcMean { public static void main(string[] args){ int a = 10, b = 15; double f; f = ( a + b ) / 2; System.out.println(f); f = ( a + b ) / 2.0; System.out.println(f);

More information

プログラミング入門1

プログラミング入門1 プログラミング入門 1 第 4 回 繰り返し (for ループ ) 授業開始前に ログオンして待機して ください Java 1 第 4 回 2 不要ファイルの掃除 前回デスクトップにファイルをダウンロードした場合 次のものを削除してください week03.zip デスクトップにファイルを置きすぎると コンピュータをシャットダウンできなくなります Java 1 第 4 回 3 授業を始めます 前回の課題は

More information

XSLT XSLT xsd XSLT XML xsd XPath <xsl:template ]

XSLT XSLT xsd XSLT XML xsd XPath <xsl:template ] XML Week splat XML XML Web 2005,2006 WS-Security End-to-End XSLT (xsd) XSLT MUST MAY Java class MUST,MAY XSLT XSLT xsd XSLT XML xsd XPath

More information

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~ .NET プログラマー早期育成ドリル VB 編 付録文法早見表 本資料は UUM01W:.NET プログラマー早期育成ドリル VB 編コードリーディング もしくは UUM02W:.NET プログラマー早期育成ドリル VB 編コードライティング を ご購入頂いた方にのみ提供される資料です 資料内容の転載はご遠慮下さい VB プログラミング文法早見表 < 基本文法 > 名前空間の定義 Namespace

More information

プログラミング入門1

プログラミング入門1 プログラミング入門 1 第 9 回 メソッド (3) 授業の前に自己点検 以下の質問に答えられますか? メソッドの宣言とは 起動とは何ですか メソッドの宣言はどのように書きますか メソッドの宣言はどこに置きますか メソッドの起動はどのようにしますか メソッドの仮引数 実引数 戻り値とは何ですか メソッドの起動にあたって実引数はどのようにして仮引数に渡されますか 戻り値はどのように利用しますか 変数のスコープとは何ですか

More information

プログラムの基本構成

プログラムの基本構成 Java 入門 この 2 回 ( 今回と次回 ) が勝負だ! プログラムは自転車の練習と同じだ! 今日の予定先ず プログラムの構造を学び (p.2~6) jcpad でプログラム ( 計算機実習室 ) 戻ってきてプログラムの解読手書きプログラムを TA にみてもらい OK の出た人は計算機実習室でプログラム作成し実行実行結果を TA がチェックして帰り プログラムの基本構成 Step1: 入力 Step2:

More information

医療者のための情報技術入門第 9 回プログラムがはたらくしくみを学ぶ (2) 日紫喜光良 概要 1. はじめに- 具体例から ここから Javascript のプログラミング入門 次はどうする--

医療者のための情報技術入門第 9 回プログラムがはたらくしくみを学ぶ (2) 日紫喜光良 概要 1. はじめに- 具体例から ここから Javascript のプログラミング入門 次はどうする-- 2014.6.23 医療者のための情報技術入門第 9 回プログラムがはたらくしくみを学ぶ (2) 日紫喜光良 概要 1. はじめに- 具体例から- ------------- ここから------------ 2.Javascript のプログラミング入門 ------------ 次はどうする-------- 3. 足りないものは借りてくる-Javascript のライブラリ 4. 仕事は人にやらせる-サーバーとブラウザの役割分担

More information

文字列操作と正規表現

文字列操作と正規表現 文字列操作と正規表現 オブジェクト指向プログラミング特論 2018 年度只木進一 : 工学系研究科 2 文字列と文字列クラス 0 個以上の長さの文字の列 Java では String クラス 操作 文字列を作る 連結する 文字列中に文字列を探す 文字列中の文字列を置き換える 部分文字列を得る 3 String クラス 文字列を保持するクラス 文字列は定数であることに注意 比較に注意 == : オブジェクトとしての同等性

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 基本 Java プログラミング演習 第 13 回 担当 : 植村 今後の予定 7/15 第 13 回 今回 7/22 第 14 回 小テスト ( クラス ) 7/29 第 15 回 総まとめテスト レポート提出 期末テストの時間割に Java のテストの欄がありますが無視してください 再テストはまた別途連絡いたします 2 CHAPTER 11 はじめてのクラス前回の復習 クラスクラスを構成する要素

More information