事前準備 ttsshでのログイン フォルダ名 XML ファイルコピー  cp ~hurry-go-round/Java/XML/* .

Slides:



Advertisements
Similar presentations
山元進.  for 文  while 文  do ~ while 文  文のネスト  break 文  continue 文.
Advertisements

プログラミング言語論 第3回 BNF 記法について(演習付き) 篠埜 功. 構文の記述 プログラミング言語の構文はどのように定式化できるか? 例1 : for ループの中に for ループが書ける。 for (i=0; i
XML ゼミ 独習 XML ~ 第 6 章 XHTML~ 6.1 XHTML の概要 6.2 XHTML の構造 谷津 哲平.
プログラミング実習 1 ・ 2 ク ラス 第 2 週目 担当教員 : 渡邊 直樹. 課題 2 ● 2 × 2型行列の固有値, 固有ベクトルを求め る EigMatrix.java というプログラムを作成せ よ。 ● 行列の各要素はコマンド・プロンプトから入力 ● 計算した結果もコマンド・プロンプトに表示.
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
Webサービスに関する基本用語 Masatoshi Ohishi / NAOJ & Sokendai
第9回 2007年6月22日 応用Java (Java/XML).
画像展示サイト“Fragments” 『閲覧しやすさ』と『デザイン性』を両立させた Webデザイン
プログラミング基礎I(再) 山元進.
NC-2 情報通信基礎実験 WEBデザイン基礎実験 (2日目) 担当:清水,田代 副手:浦辺,石井.
Applet 岡部 祐典 鈴木 敬幸.
背景 我々の研究室で開発しているJavaプログラム解析フレ ームワークでは,解析情報はメモリ上に保持される 問題点
クラスその2∽(アドバンス)∽ 福岡工業大学  梶原 大慈       .
JavaによるCAI学習ソフトウェアの開発
HTMLの記述と WWWにおける情報公開 遠藤
JSFによるWebアプリケーション開発 第11回
早稲田大学大学院理工学研究科 情報科学専攻修士2年 後藤滋樹研究室 坂本義裕
ホームページの作り方.
プログラミング基礎I(再) 山元進.
JAVA.
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
String - 文字列 2009年10月9日 7ADD2116 佐藤洋輔.
第1回 JavaScriptゼミ ・ scriptエレメント ・ 記述における諸注意 ・ 古いブラウザへの対応方法
卒研:データベースチーム 第4回 DOMを使った処理
プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.
XSLT XML文書はそのままでは読み易い形で表示されない。 XML文書を別のXML文書に変換して、情報抽出や表示をする枠組みがXSLT。
SGMLについて 2年8組  原口 文晃.
XMLゼミ 5.1 XML文書と表示 5.2 CSS 5.3 XMLとXSL 高橋 辰裕.
HTTPとHTML 技術領域専攻 3回 中川 晃.
第12回 2007年7月13日 応用Java (Java/XML).
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
9.1 DOMの概要 9.2 DOMプログラミングの基礎 9.3 DOMのプログラミング例
第10回 2007年6月29日 応用Java (Java/XML).
XMLゼミ 5.4 XSLT (P118~P134)          兒玉 光太郎.
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
第11回 2007年7月6日 応用Java (Java/XML).
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
第8回 2007年6月15日 応用Java (Java/XML).
第3回 2007年4月27日 応用Java (Java/XML).
第7回 2007年6月8日 応用Java (Java/XML).
独習XML 第2章 XML文書の構成要素 2.1 XMLの文字と文字列 2.2 コメント
第6回 2007年6月1日 応用Java (Java/XML).
10-1 SAXの概要 10-2 Saxプログラミングの基礎 10-3 saxのプログラム例
XMLゼミ 1.3 XML文書の表示 1.4 XMLの役割 1.5 XMLとプログラミング M2 正木 裕一.
独習XML ~第3章 文書と構造~ 3.3 スキーマ 3.3 XML Schema
情報スキル活用 第2週 基礎技術ー2 : Webページの基本形.
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
第1章 実世界のモデル化と形式化 3.地物インスタンスの表現
第13回 2007年7月20日 応用Java (Java/XML).
Htmlの基本.
コンピュータ プレゼンテーション.
ウェッブページ書法の復習 ネットワーク論以前のお話.
XML Schema (1) ソフトウェア特論 第3回 /
~let's take fun when you can do it~
応用Java(Java/XML) 第7回 2006年6月16日 植田龍男.
XMLゼミ 3.5 DTD M2 正木 裕一.
3-1.文書と構造 3-2.整形式文書と検証済み文書 兒玉 光太郎
オブジェクト プログラミング 第2回 プログラムの基本.
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
アルゴリズムとプログラミング (Algorithms and Programming)
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
独習XML ~第1章 XMLの基礎~ 1.1 XML文書の基礎 1.2 XMLとHTML
JSPの基本 J2EE I (データベース論) 第8回 /
JAVA入門⑥ クラスとインスタンス.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
例題のプログラムを通して JavaScriptの仕組みを理解することとします。
応用Java(Java/XML) 第8回 2005年6月9日 植田龍男.
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
応用Java(Java/XML) 第8回 2005年6月23日 植田龍男.
Presentation transcript:

事前準備 ttsshでのログイン フォルダ名 XML ファイルコピー  cp ~hurry-go-round/Java/XML/* .

第11回 Javaゼミ 「XML」 2006/12/18 富永 祐樹 田中 雄 岡島 敬

XMLってなんだ? eXtensible :伸張性のある Markup :記し付け Language :言語 一言でくくるならば、 すなわち、「拡張可能なテキストへの印付けのためのコンピュータ用言語」のこと。  もともとは、SGMLというコンピュータ用の言語があったのだが、 複雑で扱いにくいため、XMLやHTMLが考え出された。

XMLの基本 XMLの基本はタグ付けと構造化の2つ。 タグ付け  タグ付けにより情報を付加することを、Markupという。これにより、ただのテキストファイルがそれ以上の表現力をもつことになる。 例: <DATA>・・・・・・</DATA>  ←これを、タグ付けという。    HTMLの場合はタグが決められていたのに対して、    XMLではタグが定義されていないので、タグは自由に設定できる。だが、その反面チェックが厳しくなっている。   

XMLでのタグ <TAG>要素内容</TAG> ・主なタグの名称 タグの制約 ・空要素は認められない。その場合は必ず、<IMG/>のような形をとること。これを、空要素タグという。 ・大文字と小文字を区別するので、<A>・・・・</a>のような形は認識されない。 要素 要素型

構造化 タイトル 項目 本文 項目 本文 ・このように、ページデザインに頼らなくても 構造が理解できるようにする。 ・コンピュータが「論理的に構造」が理解できるタグ付きテキストを目指す。 タイトル  ・このように、ページデザインに頼らなくても 構造が理解できるようにする。 * HTML文では、h1~pまでの要素型の宣言を変えることで視覚的にわかりやすくしていた。 項目 本文 項目 本文

XMLとHTMLとの比較 HTML XML ・markupの意味づけとして 既定のものが存在 ・markupの意味づけに 関する定義がない →既定のものを利用して簡単に表現ができる。   拡張が制限。 XML ・markupの意味づけに 関する定義がない →自分で意味づけをすることになり、その設計を自分で行う。 拡張可能。

XMLの作成 XMLはメモ帳で作成可能。 1.基本はタグを利用した入れ子構造 例: <Try> ・・・・</Try> ダメな例: <I>・・・・<you>・・・・・</I>・・・・</you> 2.属性値は必ず、“”か‘’で囲む  例: <img src=“/my_picture.gif” /> ダメな例: <img src=/my_picture.gif />

・・・・・・・・・ World 文書要素 例: Country1 Country2 Country3 Name Capital ここで構造化に戻って、考えてみよう。   タグの入れ子構造を表現するのに、木構造を思い浮かべながら考えて、以下のような構造を作ってみる。 World 文書要素 例: Country1 Country2 Country3 Name Capital ・・・・・・・・・

Point1:要素を含むほうが親で、含まれるほうが子供。 <考え方のコツ>   文書要素はHTML文における<body>~</body>だと思って使えばよい。

文書要素 <World> <Country ID="1"> <Name>日本</Name> <Capital>東京</Capital> </Country> <Country ID="2"> <Name>アメリカ合衆国</Name> <Capital>ワシントン D.C</Capital> <Country ID="3"> <Name>イギリス</Name> <Capital>ロンドン</Capital> </World> 文書要素

それ以外にも、XML宣言が必要であり、 例:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> というような、HTMLの時にも行ったものと同様に行う。 ので、以下の文をXMLファイルの1行目に加える。 <?xml version="1.0" encoding="Shift_JIS"?> ・XMLのバージョンが1.0である ・文字コードがシフトJISである という情報が定義されたことになる。   これによるメリットは、XMLはネット上での情報をやりとりする際に、 OSやアプリケーションに関係なく表示できるようになることである。

エンティティ XMLでは使用できない文字について別の表記を用意してある文字の代替方法をエンティティ参照という。 文字 エンティティ参照による表記 < (右大なり) < > (左大なり) > & (アンパーサント) & " (ダブルクォーテーション) " '  (シングルクォーテーション) &apos;

ここまでのまとめ ちゃんとはさむ(開始と終了を必ず記述) 大文字と小文字は別文字として認識される HTMLよりXMLの方が面倒くさいけど、自由度が高い。 属性値 は“”か‘’で必ず囲む 構造は木構造で、一番大きいものを文書要素という。 “”内に“”を使う際は、エンティティ参照による表記で行う。

やってみよう! 次の木構造のデータTree.xmlを作ってください。 ・・・ Country University Name Place 自分の名前 自分の住所 東海大学 日本

ヒント <?xml version="1.0" encoding="Shift_JIS"?> <> <> </> </>

DTD(Document Type Definition) ルール通りのタグ形式 (整形式文書の規則+DTD)       ↓     妥当な文書 (valid XML document)という。 チェック 整形式文書 妥当な文書

Well-fomedとvalid XMLプロセッサがチェックする際well-formedであるかvalidであるかをチェックする場合があります。 Well-formed:整形式文書のみ Valid:整形式文書+データ構造チェック(DTD)

サブセットの種類 サブセット   DOCTYPE宣言でDTD(DocumentTypeDifinition)を指定することにより、表示方法を表すスタイルシートを宣言できる。表示方法は下記の2つ 外部サブセット→別ファイル(DTD)で宣言して呼び出す。  <!DOCTYPE 文書要素名 外部DTDサブセットの呼び出し> 内部サブセット→XMLファイル内で宣言する。  <!DOCTYPE 文書要素名 [ 内部DTDサブセット ]>

要素型宣言(Element Type Declaration) 文字データを含まず要素のみ 文字データと要素が混ざっている 例1:World1.xml 例2:World2.xml <World> <Country> <Name></Name> <Capital></Capital>    </Country> </World> <World>世界 <Country>国 <Name>日本</Name>       <Capital>東京</Capital>      </Country> </World>

WorldCountry.xml <?xml version="1.0" encoding="Shift_JIS"?> <Country ID="1"> <Name>日本</Name> <Capital>東京</Capital> </Country> <Country ID="2"> <Name>アメリカ合衆国</Name> <Capital>ワシントン D.C</Capital> <Country ID="3"> <Name>イギリス</Name> <Capital>ロンドン</Capital> </World>

サブセットの書き方 文書要素 【イメージ】 サブセットの例を示すと、 <!ELEMENT World (Country*)> <!ELEMENT Country (Name, Capital)> <!ATTLIST Country ID CDATA #REQUIRED>  #REQUIREDは必須の意。IDの数のこと。 <!ELEMENT Name (#PCDATA)>  #PCDATAは要素内容があることを示す。 <!ELEMENT Capital (#PCDATA)> 【イメージ】

外部サブセット 内部サブセット 例:<!DOCTYPE World SYSTEM “World.dtd"> サブセットをXMLに加えてみよう 外部サブセット 例:<!DOCTYPE World SYSTEM “World.dtd">  外部サブセットをXML内で呼び出すファイルの指定は <!DOCTYPE ・・・ SYSTEM “DTDファイル名”>で行う。 内部サブセット 例:<!DOCTYPE World [<!ELEMENT World (Country*)>・・・]>で行う

内容モデル:DTD内で可能な組合せや並び方を示すことをいいます。 例1:<!ELEMENT World (Country)> Worldという名の要素はその内容として 要素Countryをちょうど一つ持つ 例2: <!ELEMENT World (Country*)> Worldという名の要素はその内容として 要素Countryをちょうど0回以上の繰り返し持つ 例1 例2

内容モデルで使う記号 | --- 選択リスト , --- 順序リスト + --- 1回以上の繰り返し * --- 0回以上の繰り返し ? --- 0回または1回 例1:<!ELEMENT A(a|b)> :    a | b の場合は要素aか要素bのどちらかという意味 例2:<!ELEMENT A(a,b)> a , b の場合は要素aの次に要素b、 という意味になります。

↓ ↓ <World> <Country> <Name></Name> 文字データを含まず要素のみ 文字データと要素が混ざっている 例1:World1.xml 例2:World2.xml <World> <Country> <Name></Name> <Capital></Capital>    </Country> </World> <World>世界 <Country>国 <Name>日本</Name>       <Capital>東京</Capital>      </Country> </World> ↓ ↓        World1.dtdを作成 <!ELEMENT World(Country)> <!ELEMENT Country(Name,Capital)> <!ELEMENT Name EMPTY)> <!ELEMENT Capital EMPTY)>             World2.dtdを作成 <!ELEMENT World(#PCDATA|Country)*> <!ELEMENT Country(#PCDATA|Name|Capital)*> <!ELEMENT Name(#PCDATA)> <!ELEMENT Capital(#PCDATA)>

やってみよう!Ver.2 最初に作ったTree.xmlのDTDファイルTree.dtdを作って、Tree.xmlに外部サブセットの宣言文を加えたTree2.xmlを作ってください。 ・・・ Country University Name Place 自分の名前 自分の住所 東海大学 日本

ヒント 【Tree.dtdの内容のヒント】 <!ELEMENT ()> の4行の空欄を埋めてください。 【外部サブセットの宣言文のヒント】 <!DOCTYPE ・・・ SYSTEM “DTDファイル名”>           ↑ ここにTree.xmlの文書要素を入れる。

パーサAPI DOM(DocumentObjectModel) XMLファイルをチェックするアプリケーションのこと、 DOM(DocumentObjectModel)   XMLドキュメント全体を読み込み、メモリ上に要素のオブジェクトツリーを作成する。 SAX(Simple API for XML)   ドキュメントを読み込みながら、ドキュメントの開始・終了や、要素の開始・終了・エラーなどのイベント検出、プログラムに通知する。

Dom3.java XML文書を読み込んでドキュメントの妥当性を検査するプログラムである。 import org.w3c.dom.*; import org.apache.xerces.parsers.*; import javax.xml.parsers.*; class Dom3{ public static void main(String argv[]){ try{ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(true); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(argv[0]); }catch(Exception e){ System.out.println(e); } XML文書を読み込んでドキュメントの妥当性を検査するプログラムである。

DomDisp.java import org.w3c.dom.*; import org.apache.xerces.parsers.*; import javax.xml.parsers.*; class DomDisp{ public static void main(String argv[]){ try{ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(true); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(argv[0]); System.out.println(doc.getNodeName()); int n = doc.getChildNodes().getLength(); Disp(doc); }catch(Exception e){ System.out.println(e); }

DomDisp.javaの続き public static void Disp(org.w3c.dom.Node node){ int n = node.getChildNodes().getLength(); System.out.println("name = "+node.getNodeName()); System.out.println("value = "+node.getNodeValue()); for(int i = 0; i < n; ++i){ Disp(node.getChildNodes().item(i)); } ノードを名前とその値を順番に表示するプログラムである。 ノードの名前と値の返り値については、 http://www.ep.u-tokai.ac.jp/~nakazato/API/1.4.0/docs/ja/api/を参照

SAX.java Dom3.javaと同様の処理をSAXで行っている。 import javax.xml.parsers.*; import org.xml.sax.*; import org.xml.sax.helpers.*; class SAX{ public static void main(String argv[]){ try{ XMLReader parser = XMLReaderFactory.createXMLReader("org.apache.xerces.par sers.SAXParser"); parser.setFeature("http://xml.org/sax/features/validation", true); DefaultHandler handler = new MySAXHandler(); parser.setContentHandler(handler); parser.parse(argv[0]); } catch(Exception e){ System.out.println(e); } Dom3.javaと同様の処理をSAXで行っている。

SAX.javaの続き1 class MySAXHandler extends DefaultHandler{ public void startDocument() throws SAXException { System.out.println("startDocument()"); } public void endDocument() throws SAXException System.out.println("endDocument()"); ドキュメントの開始と終了の通知を受け取り出力している。

SAX.javaの続き2 public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException{ System.out.println("startElement()"); System.out.println("localName = " + localName); for(int i = 0; i < atts.getLength(); ++i){ System.out.println(atts.getLocalName(i)); System.out.println("val = " + atts.getValue(i)); } public void characters(char[] ch, int start, int len) throwsSAXException{ System.out.println(new String(ch, start, len)); エレメント開始の通知を受け取り、内容を出力している。 文字データの通知を受け取り、内容を出力している。

XSL XMLファイルをWeb上でどのように表示するかを指定することができる。   XMLファイルはこのXSLを指定しないと、タグのみの表記になってしまうので、つまらないと感じたならば使ってみよう。 XSLTスタイルシートにしたがってXMLデータをXSLTプロセッサがHTML表示に変換してくれる。    必要なもの:    ・XSLファイル    ・XMLファイルに以下の表記を追記したもの  <?xml-stylesheet type=“text/xsl” href=“XSLファイル名"?>

WorldCountry.xsl <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h1>World Countrys</h1> <p><xsl:value-of select="World" /></p> </body> </html> </xsl:template> </xsl:stylesheet> 要素Worldの子にあたる要素を表示。 HTML文を記述。

やってみよう!Ver.3 最初に作成したTree.xmlにXSLを使えるように変更したTree3.xmlを作成し、XSLファイルTree.xslを作成して、表示させよ。 XMLファイルを開くと下図のようになるように作成してください。 Tree 日本 東海大学 自分の名前 自分の住所

宿題1 Isono.xml サザエさんの家族構成を下記のように規定したIsono.xmlを作成せよ。 波平 舟 サザエ カツオ ワカメ タラオ

宿題2 Isono.dtd Isono2.xml 宿題1で作ったIsono.xmlを見てIsono.dtdを作成せよ。同時にIsono.xmlをdtdを外部サブセットとして読み込む宣言文を加えたIsono2.xmlを作ってください。 ※完成したxmlをDom3.javaを使ってチェックしてエラーが出ないか確認してください。

宿題3 Isono.xsl Isono3.xml 磯野家 宿題1で作ったIsono.xmlを基にxsl文書を扱えるように変更したIsono3.xmlとIsono.xsl文書を作成せよ。 実行結果は下図のようになるようにしてください。 磯野家 親 波平 舟 子 サザエ カツオ ワカメ 孫 タラオ