Top Banner
10 2007 第 6 第 29 第
27

応用 Java (Java/XML)

Jan 30, 2016

Download

Documents

Quentin Baire

第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 文書内の検索 - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 応用 Java (Java/XML)

第10回  2007 年 6 月 29 日

Page 2: 応用 Java (Java/XML)

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

Page 3: 応用 Java (Java/XML)

XPath (6/15)XSLT (6/22)名前空間 (Namespace) (6/22)XML 文書の妥当性の検証 (6/29) XML SchemaJAXB (7/6, 7/13)SOAP, Web サービ (7/20)試験 (7/27)

Page 4: 応用 Java (Java/XML)

XML 文書の設計と「妥当性」 W3C XML Schema とは?妥当性の検証の API javax.xml.validation

Page 5: 応用 Java (Java/XML)

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

Page 6: 応用 Java (Java/XML)

<World> <Japan> <China> <USA></World>

Page 7: 応用 Java (Java/XML)

<World> <Japan><Wakkanai/></Japan> <China><USA> </China></USA></World>

Page 8: 応用 Java (Java/XML)

<Asia> <Japan></Japan> <China></China></Asia><USA></USA>

Page 9: 応用 Java (Java/XML)

<World> <Asia> <Japan></Japan> <England></England> </Asia> <USA>

<China></China></USA></World>

Page 10: 応用 Java (Java/XML)

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

Page 11: 応用 Java (Java/XML)

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

Page 12: 応用 Java (Java/XML)

DTD( Document Type Definition)XML のルールを記述する専用言語XML 誕生当時の「スキーマ言語」表現力の制約、名前空間の制約XML とは全く異なる文法 <!DOCTYPE name [ <!ELEMENT name (first, last)> <!ELEMENT first (#PCDATA)> <!ELEMENT last (#PCDATA)> ] >

Page 13: 応用 Java (Java/XML)

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

Page 14: 応用 Java (Java/XML)

<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>

Page 15: 応用 Java (Java/XML)

<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”, 型は文字列

Page 16: 応用 Java (Java/XML)

<xsd:element name="name“ type="nameType"/>

要素を定義 , 名前は” name” , 型は” nameType”

<xsd:complexType name="nameType"> : : </xsd:complexType>複雑な型の内容を定義、名前は “ nameType”

Page 17: 応用 Java (Java/XML)

<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

Page 18: 応用 Java (Java/XML)

<xsd:complexType name="peopleType">

<xsd:sequence> <xsd:element name="name" type="nameType"

minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType>

Page 19: 応用 Java (Java/XML)

<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>

Page 20: 応用 Java (Java/XML)

何回でも自由(省略も可) minOccurs=“0“ maxOccurs="unbounded“何回でも自由(省略は不可=最低1回) minOccurs=“1“ maxOccurs="unbounded“1回か省略(最大1回) minOccurs=“0“ maxOccurs=“1“1回のみ(省略は不可) -- デフォルト値 minOccurs=“1“ maxOccurs=“1“

* min, max とも省略されると値1と解釈

Page 21: 応用 Java (Java/XML)

<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>

Page 22: 応用 Java (Java/XML)

Schema 一般的なルール記述 ただし実装は W3C XML

Scheman にのみ対応Validator 妥当性の検証を実行 validate()

Page 23: 応用 Java (Java/XML)

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

Page 24: 応用 Java (Java/XML)

SchemaFactory sf = SchemaFactory.newInstance(

"http://www.w3.org/2001/XMLSchema" );

Schema schema = sf.newSchema( new

StreamSource( args[0] ) );

Page 25: 応用 Java (Java/XML)

try { Validator validator = schema.newValidator(); validator.validate( new StreamSource( args[1] )

); } catch( Exception e ) { }

*妥当でない場合には例外が発生

Page 26: 応用 Java (Java/XML)

例外を直接処理 (catch ブロック内で )エラーハンドラに処理を渡す MyErrorHandler ehandler = new MyErrorHandler(); validator.setErrorHandler( ehandler

);

*妥当でない – error() メソッドを呼ぶ ( 整形でない場合は fatalError() )

Page 27: 応用 Java (Java/XML)

XPath (6/15)XSLT (6/22)名前空間 (Namespace) (6/22)XML 文書の妥当性の検証 (6/29) XML SchemaJAXB (7/6, 7/13)SOAP, Web サービ (7/20)試験 (7/27)