第10回 2007年6月29日 応用Java (Java/XML).

Slides:



Advertisements
Similar presentations
XML ゼミ 独習 XML ~ 第 6 章 XHTML~ 6.1 XHTML の概要 6.2 XHTML の構造 谷津 哲平.
Advertisements

応用 Java(Java/XML) 第1回 2006 年4月 14 日. 講義内容 (4/14) なぜ Java が重要なのか? なぜ XML が重要なのか? Java と XML の関係 パーサの概念 XML 関連のパッケージについて ファクトリのデザインパターン.
Web サービス II ( 第 13 回 )‏ 2008 年 1 月 9 日 植田龍男. 本日の目的 Web サービスの歴史と将来の展望 (1) WSDL 2.0 の登場 ‏ Jersey プロジェクト Ver 0.5 による開発.
応用 Java(Java/XML) 第 10 回 2006 年 7 月 14 日 植田龍男. 後半の内容の予定 XPath (6/9) 、 XSLT (6/16) 名前空間 (Namespace) (6/16) XML 文書の妥当性の検証 (6/23) DTD, W3C XML Schema SOAP.
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
メタモデル記述を用いた成果物間の依存関係追跡手法
WebサービスII (第12回)‏ 2007年12月19日 植田龍男.
2006年9月27日 植田龍男 Webサービス II (第1回) 年9月27日 植田龍男.
Webサービスに関する基本用語 Masatoshi Ohishi / NAOJ & Sokendai
第9回 2007年6月22日 応用Java (Java/XML).
記述言語XBRLで定義された財務諸表を 計算・書式変換する言語処理系の提案と実現
2006年11月15日 植田龍男 Webサービス II (第8回) 年11月15日 植田龍男.
2006年11月22日 植田龍男 Webサービス II (第9回) 年11月22日 植田龍男.
Java I 第2回 (4/18)
NC-2 情報通信基礎実験 WEBデザイン基礎実験 (2日目) 担当:清水,田代 副手:浦辺,石井.
背景 我々の研究室で開発しているJavaプログラム解析フレ ームワークでは,解析情報はメモリ上に保持される 問題点
WebサービスII (第10回) 2007年11月28日 植田龍男.
データマイニングのための柔軟なデータ取得、操作を支援するAPIの設計
アルゴリズムとデータ構造1 2007年6月12日
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
WSDL と JAX-RPC 年10月13日 Webサービス II (第3回) WSDL と JAX-RPC 年10月13日.
第5回 2007年5月25日 応用Java (Java/XML).
第4回 2007年5月11日 応用Java (Java/XML).
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
2005年11月17日 Webサービス II (第6回) 年11月17日.
XJ: XML Enhancements to Java の紹介
卒研:データベースチーム 第4回 DOMを使った処理
JavaとXML 2005年4月14日.
WebサービスII (第8回) 2007年11月14日 植田龍男.
HTTPプロトコルとJSP (1) データベース論 第3回.
WSDL と JAX-RPC 年10月20日 Webサービス II (第4回) WSDL と JAX-RPC 年10月20日.
2005年10月6日 植田龍男 Webサービス II (第2回) 年10月6日 植田龍男.
SGMLについて 2年8組  原口 文晃.
XMLゼミ 5.1 XML文書と表示 5.2 CSS 5.3 XMLとXSL 高橋 辰裕.
入出力データ型に透過な Webサービス動的実行システム 松江工業高等専門学校 情報工学科 越田高志 情報処理学会第68回全国大会
第12回 2007年7月13日 応用Java (Java/XML).
11.6 ランダムアクセスファイル 11.7 StreamTokenizerクラス
9.1 DOMの概要 9.2 DOMプログラミングの基礎 9.3 DOMのプログラミング例
Webサービス II(第3回) 2007年10月10日.
第11回 2007年7月6日 応用Java (Java/XML).
第8回 2007年6月15日 応用Java (Java/XML).
第3回 2007年4月27日 応用Java (Java/XML).
WebサービスII (第7回) 2007年11月7日 植田龍男.
XBRLで記述された財務データを扱う言語処理系の提案
第7回 2007年6月8日 応用Java (Java/XML).
第6回 2007年6月1日 応用Java (Java/XML).
第1回 2007年4月13日 応用Java (Java/XML).
インラインスクリプトに対するデータフロー 解析を用いた XHTML 文書の構文検証
アスペクト指向に基づく 拡張可能な MDAモデルコンパイラ
10-1 SAXの概要 10-2 Saxプログラミングの基礎 10-3 saxのプログラム例
第2回 2007年4月20日 応用Java (Java/XML).
電子情報通信学会 2006年総合大会 Webサービス標準化 の提案と実装 2006年3月26日 松江工業高等専門学校 越田高志.
XMLゼミ 1.3 XML文書の表示 1.4 XMLの役割 1.5 XMLとプログラミング M2 正木 裕一.
独習XML ~第3章 文書と構造~ 3.3 スキーマ 3.3 XML Schema
2006年11月8日 植田龍男 Webサービス II (第7回) 年11月8日 植田龍男.
半構造化テキストに対する 文字列照合アルゴリズム
第1章 実世界のモデル化と形式化 3.地物インスタンスの表現
第13回 2007年7月20日 応用Java (Java/XML).
クリアリングハウスと 空間データ交換システムの連携 - メタデータとXML - 平成11年2月10日 (株) NTTデータ 情報科学研究所
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.整形式文書と検証済み文書 兒玉 光太郎
拡張可能なアスペクト指向モデリングにおける織り合わせの検証
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
2006年10月18日 植田龍男 Webサービス II (第4回) 年10月18日 植田龍男.
応用Java(Java/XML) 第8回 2005年6月9日 植田龍男.
応用Java(Java/XML) 第8回 2005年6月23日 植田龍男.
Presentation transcript:

第10回 2007年6月29日 応用Java (Java/XML)

前回までやったこと 「XMLパーサ」-- Java でXMLを処理 javax.xml.stream パッケージのパーサ SAX(Simple API for XML) のパーサ DOM(Document Object Model)のパーサ パーサの応用 : テーブルの利用,フィルタ的な処理 DOMツリーの検索、視覚化 パーサの上位のサービス XPath -- XML文書内の検索 XSLT – XML文書の変換

後半の内容の予定 XPath (6/15) XSLT (6/22) 名前空間(Namespace) (6/22) XML文書の妥当性の検証(6/29) XML Schema JAXB (7/6, 7/13) SOAP, Webサービ(7/20) 試験(7/27)

本日(6/29)の講義内容 XML文書の設計と「妥当性」 W3C XML Schema とは? 妥当性の検証のAPI javax.xml.validation

復習:整形(Well Formed)文書 要素は開始タグと終了タグ <abc> This is a pen. </abc> <img src=“java.png” /> 要素は階層的な親子関係 <abc></abc><efg></efg> ○ <abc><efg></efg></abc> ○ <abc><efg></abc></efg> × 全体は単独の要素で囲まれる (Document Type )

整形ではない例(1) <World> <Japan> <China> <USA>

整形ではない例(2) <World> <Japan><Wakkanai/></Japan> <China><USA> </China></USA> </World>

整形ではない例(3) <Asia> <Japan></Japan> <China></China> </Asia> <USA> </USA>

整形だが正しいか? <Asia> <Japan></Japan> <World> <Asia> <Japan></Japan> <England></England> </Asia> <USA> <China></China></USA> </World>

整形な文書は形式的な「正しさ」 XML文書の目的に沿う「正しさ」は別 「妥当性(Valid)」の概念 「妥当」であることをどう定めるか? 要素の名前 出現順序、出現回数 親子関係のルール 属性の名前、許される値

XML文書の設計とスキーマ言語 スキーマ言語 – XML文書のルールを定める DTD (document type definition) XML Schema W3C XML Schema RELAX NG Schematron

DTD について DTD( Document Type Definition) XMLのルールを記述する専用言語 表現力の制約、名前空間の制約 XMLとは全く異なる文法 <!DOCTYPE name [ <!ELEMENT name (first, last)> <!ELEMENT first (#PCDATA)> <!ELEMENT last (#PCDATA)> ] >

W3C XML Schema の特徴 優れた表現力 厳密な定義 豊富なデータ型 名前空間の利用 それ自身がXMLである! 事実上の標準規格

XML Schema の例 <xsd:schema xmlns:xsd ="http://www.w3.org/2001/XMLSchema"> <xsd:element name="name" type="nameType"/> <xsd:complexType name="nameType"> <xsd:sequence> <xsd:element name="first" type="xsd:string"/> <xsd:element name="last" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:schema>

Schema の解説(1) <xsd:schema xmlns:xsd ="http://www.w3.org/2001/XMLSchema"> W3C XML Schema であることを示すURI 以下、プレフィックス xsd: で表現 : <xsd:element name="first" type="xsd:string"/> <xsd:element name=“last" type="xsd:string"/> 要素を定義,名前は”first”, 型は文字列 要素を定義,名前は “last”, 型は文字列

Schemaの解説(2) <xsd:element name="name“ type="nameType"/> <xsd:complexType name="nameType"> : </xsd:complexType> 複雑な型の内容を定義、名前は “nameType”

Schemaの解説(3) <xsd:element name="first" type="xsd:string"/> <xsd:complexType name=“nameType”> <xsd:sequence> <xsd:element name="first" type="xsd:string"/> <xsd:element name="last" type="xsd:string"/> </xsd:sequence> </xsd:complexType> 複雑な型 “nameType” の内容 以下のものが順に出現(sequence) 要素 first 要素 last

XML Schema の例(2) <xsd:complexType name="peopleType"> <xsd:sequence> <xsd:element name="name" type="nameType" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType>

XML Schema の例(3) <xsd:complexType name="nameType"> <xsd:sequence> <xsd:element name="first" type="xsd:string"/> <xsd:element name="middle" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType>

出現回数のルールのまとめ 何回でも自由(省略も可) minOccurs=“0“ maxOccurs="unbounded“ 何回でも自由(省略は不可=最低1回) minOccurs=“1“ maxOccurs="unbounded“ 1回か省略(最大1回) minOccurs=“0“ maxOccurs=“1“ 1回のみ(省略は不可)-- デフォルト値 minOccurs=“1“ maxOccurs=“1“ *min, max とも省略されると値1と解釈

少し複雑な schema の表現 <xsd:sequence> <xsd:element name="title" type="xsd:string" minOccurs="0"/> <xsd:choice minOccurs="0“ maxOccurs="unbounded"> <xsd:element name="text" type="xsd:string" /> <xsd:element name="image" type="imageType" /> </xsd:choice> </xsd:sequence>

javax.xml.validation Schema 一般的なルール記述 ただし実装は W3C XML Scheman にのみ対応 Validator 妥当性の検証を実行 validate()

妥当性検証の処理の流れ 1) Factory クラスのインスタンスの取得 SchemaFactory sf = SchemaFactory .newInstance( スキーマの種類の指定); 2) Schemaのインスタンスの取得 Schema schema = sf.newSchema(スキーマ定義入力元); 3) Validator のインスタンスの取得 4) validate( 検証対象のXML ); の呼び出し

javax.xml.validation の例(1) SchemaFactory sf = SchemaFactory.newInstance( "http://www.w3.org/2001/XMLSchema" ); Schema schema = sf.newSchema( new StreamSource( args[0] ) );

javax.xml.validation の例(2) try { Validator validator = schema.newValidator(); validator.validate( new StreamSource( args[1] ) ); } catch( Exception e ) { } *妥当でない場合には例外が発生

妥当でない場合の処理 例外を直接処理 (catch ブロック内で) エラーハンドラに処理を渡す MyErrorHandler ehandler = new MyErrorHandler(); validator.setErrorHandler( ehandler ); *妥当でない – error() メソッドを呼ぶ (整形でない場合は fatalError() )

後半の内容の予定 XPath (6/15) XSLT (6/22) 名前空間(Namespace) (6/22) XML文書の妥当性の検証(6/29) XML Schema JAXB (7/6, 7/13) SOAP, Webサービ(7/20) 試験(7/27)