応用Java(Java/XML) 第8回 2005年6月23日 植田龍男.

Slides:



Advertisements
Similar presentations
プログラミング言語論 第3回 BNF 記法について(演習付き) 篠埜 功. 構文の記述 プログラミング言語の構文はどのように定式化できるか? 例1 : for ループの中に for ループが書ける。 for (i=0; i
Advertisements

XML ゼミ 独習 XML ~ 第 6 章 XHTML~ 6.1 XHTML の概要 6.2 XHTML の構造 谷津 哲平.
応用 Java(Java/XML) 第1回 2006 年4月 14 日. 講義内容 (4/14) なぜ Java が重要なのか? なぜ XML が重要なのか? Java と XML の関係 パーサの概念 XML 関連のパッケージについて ファクトリのデザインパターン.
応用 Java(Java/XML) 第 10 回 2006 年 7 月 14 日 植田龍男. 後半の内容の予定 XPath (6/9) 、 XSLT (6/16) 名前空間 (Namespace) (6/16) XML 文書の妥当性の検証 (6/23) DTD, W3C XML Schema SOAP.
XML と JavaScript 全 2 回 情報理工学部 情報システム工学 科 H 肥田 百合恵 監修 h 木町 拓矢.
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
Webサービスに関する基本用語 Masatoshi Ohishi / NAOJ & Sokendai
第9回 2007年6月22日 応用Java (Java/XML).
画像展示サイト“Fragments” 『閲覧しやすさ』と『デザイン性』を両立させた Webデザイン
2006年11月15日 植田龍男 Webサービス II (第8回) 年11月15日 植田龍男.
2006年11月22日 植田龍男 Webサービス II (第9回) 年11月22日 植田龍男.
東京工科大学 コンピュータサイエンス学部 亀田弘之
Java I 第2回 (4/18)
事前準備 ttsshでのログイン フォルダ名 XML ファイルコピー  cp ~hurry-go-round/Java/XML/* .
背景 我々の研究室で開発しているJavaプログラム解析フレ ームワークでは,解析情報はメモリ上に保持される 問題点
WebサービスII (第10回) 2007年11月28日 植田龍男.
数値計算及び実習 第3回 プログラミングの基礎(1).
早稲田大学大学院理工学研究科 情報科学専攻修士2年 後藤滋樹研究室 坂本義裕
第1回 HTML5入門.
WSDL と JAX-RPC 年10月13日 Webサービス II (第3回) WSDL と JAX-RPC 年10月13日.
Myoungkyu Song and Eli Tilevich 発表者: 石尾 隆(大阪大学)
XMLゼミ 2.3 XMLのプロローグ 2.4 XMLのタグ 高橋 辰裕.
第5回 2007年5月25日 応用Java (Java/XML).
第4回 2007年5月11日 応用Java (Java/XML).
XJ: XML Enhancements to Java の紹介
卒研:データベースチーム 第4回 DOMを使った処理
JavaとXML 2005年4月14日.
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 高橋 辰裕.
XSL-FO + MathML MathML表示、PDF生成、SVG生成
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).
プログラミング言語論 第3回 BNF記法について(演習付き)
第11回 2007年7月6日 応用Java (Java/XML).
第8回 2007年6月15日 応用Java (Java/XML).
第3回 2007年4月27日 応用Java (Java/XML).
XBRLで記述された財務データを扱う言語処理系の提案
第7回 2007年6月8日 応用Java (Java/XML).
文字列照合を用いた XMLデータアクセス機構の提案
独習XML 第2章 XML文書の構成要素 2.1 XMLの文字と文字列 2.2 コメント
第6回 2007年6月1日 応用Java (Java/XML).
インラインスクリプトに対するデータフロー 解析を用いた XHTML 文書の構文検証
アップデート 株式会社アプライド・マーケティング 大越 章司
10-1 SAXの概要 10-2 Saxプログラミングの基礎 10-3 saxのプログラム例
情報コミュニケーション入門e 第11回 Part2 Web入門(1)
第2回 2007年4月20日 応用Java (Java/XML).
XMLゼミ 1.3 XML文書の表示 1.4 XMLの役割 1.5 XMLとプログラミング M2 正木 裕一.
独習XML ~第3章 文書と構造~ 3.3 スキーマ 3.3 XML Schema
半構造化テキストに対する 文字列照合アルゴリズム
第1章 実世界のモデル化と形式化 3.地物インスタンスの表現
情報スキル活用 第4週 基礎技術-4 : その1(タグのまとめ).
第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.整形式文書と検証済み文書 兒玉 光太郎
プログラミング言語論 第9回 情報工学科 木村昌臣 篠埜 功.
拡張可能なアスペクト指向モデリングにおける織り合わせの検証
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
大容量XML文書のデータ更新が 可能なXML編集ライブラリ
独習XML ~第1章 XMLの基礎~ 1.1 XML文書の基礎 1.2 XMLとHTML
Webページに動きを持たせるJavascript言語について 例題のプログラムを通して体験的に理解することとします。
2006年10月18日 植田龍男 Webサービス II (第4回) 年10月18日 植田龍男.
応用Java(Java/XML) 第8回 2005年6月9日 植田龍男.
Presentation transcript:

応用Java(Java/XML) 第8回 2005年6月23日 植田龍男

後半の内容の予定 XPath (6/9) XSLT (6/16) 名前空間(Namespace) (6/16) XML文書の妥当性の検証(6/23) DTD, W3C XML Schema SOAP, RMI(7/7, 7/14, 7/21) 試験(7/28)

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

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

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

DTD と妥当性の検証 DTD( Document Type Definition) XMLのルールを記述する専用言語 SGMLからの流れ 当初のXMLはすべてDTDで書かれた XMLとは全く異なる文法 表現力の制約、名前空間の制約

DTDの例(1) <!DOCTYPE name [<!ELEMENT name (first, last)> <!ELEMENT first (#PCDATA)> <!ELEMENT last (#PCDATA)>] > <name> <first>Tatsuo</first> <last>Ueda</last> </name>

妥当ではない文書の例(1) <!DOCTYPE name [<!ELEMENT name (first, last)> <!ELEMENT first (#PCDATA)> <!ELEMENT last (#PCDATA)>] > <name> <last>Ueda</last> <first>Tatsuo</first> </name>

妥当ではない文書の例(2) <!DOCTYPE name [<!ELEMENT name (first, last)> <!ELEMENT first (#PCDATA)> <!ELEMENT last (#PCDATA)>] > <name> Tatsuo <last>Ueda</last> </name>

もう少し複雑なDTD <!ELEMENT people (name+)> <!ELEMENT name (first, middle?, last)> <!ELEMENT first (#PCDATA)> <!ELEMENT middle (#PCDATA)> <!ELEMENT last (#PCDATA)>

回数を指定する記号 + --- 1回以上の任意の回数 ? --- 1回または0回(省略可能) * --- 0回以上の任意の回数 + --- 1回以上の任意の回数 ? --- 1回または0回(省略可能) * --- 0回以上の任意の回数 記号による指定なしは1回(省略不可)

さらに複雑なDTDの例 <!ELEMENT document (title?, (text|image)*)> <!ELEMENT title (#PCDATA)> <!ELEMENT text (#PCDATA)> <!ELEMENT image EMPTY> <!ATTLIST image s NMTOKEN #REQUIRED w NMTOKEN #IMPLIED h NMTOKEN #IMPLIED>

| と * の組み合わせ | 「または」の意味 ( text | image ) いずれか一方 ( text | image )* 任意の順序で任意の回数出現

属性の定義 <!ATTLIST …. > 属性のリスト 対象の要素の指定 属性名 データ型 必須か省略化か、デフォルト値

妥当な文書の例 <!DOCTYPE document SYSTEM "sample.dtd"> <document> <title>Java and XML</title> <text> Let's begin, now! </text> <image s="java.png" w="128" h="64"/> <image s="cg.png" w="400" h="300"/> <text>Java 3D</text> </document>

名前空間の処理(復習) パーサへの通知 SAXParserFactory spf   = SAXParserFactory.newInstance(); spf.setNamespaceAware( true ); SAXParser parser = spf.newSAXParser();

DTDによる検証を実行する = SAXParserFactory.newInstance(); SAXParserFactory spf = SAXParserFactory.newInstance(); spf.setNamespaceAware( true ); spf.setValidating( true ); SAXParser parser = spf.newSAXParser(); XMLReader reader = parser.getXMLReader();

DOMのパーサの場合 = DocumentBuilderFactory .newInstance(); dbf.setNamespaceAware( true ); dbf.setValidating( true ); DocumentBuilder db = dbf.newDocumentBuilder();

ignorableWhitespace() ContentHandlerに定義 DTDでは本来入れない場所に文字! 人間の目のための区切りと解釈 (空白、タブ、改行)

無視されるべき空白文字 <!DOCTYPE name [<!ELEMENT name (first, last)> <!ELEMENT first (#PCDATA)> <!ELEMENT last (#PCDATA)>] > <name> <first>Tatsuo</first> <last>Ueda</last> </name>

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

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

XML Schema の例(1) <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>

DTD との比較(1) <!ELEMENT first (#PCDATA)> <xsd:element name="first" type="xsd:string"/>

DTD との比較(2) <!ELEMENT name … <xsd:element name="name“ type="nameType"/> <xsd:complexType name="nameType"> : (first, last) <xsd:sequence> <xsd:element name="first" type="xsd:string"/> <xsd:element name="last" type="xsd:string"/> </xsd:sequence>

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>

DTDとの比較(3) * minOccurs=“0“ maxOccurs="unbounded“ + ? minOccurs=“0“ maxOccurs=“1“ 記号なし minOccurs=“1“ maxOccurs=“1“

XML Schemaによる検証(SAX) SAXParserFactory spf = SAXParserFactory.newInstance(); spf.setNamespaceAware( true ); spf.setValidating( true ); SAXParser parser = spf.newSAXParser(); parser.setProperty( "http://java.sun.com/xml/jaxp/properties/ schemaLanguage", "http://www.w3.org/2001/XMLSchema" );

XML Schemaによる検証(DOM) DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setNamespaceAware( true ); dbf.setValidating( true ); dbf.setAttribute( "http://java.sun.com/xml/jaxp/properties/ schemaLanguage", "http://www.w3.org/2001/XMLSchema" ); DocumentBuilder db = dbf.newDocumentBuilder();

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

javax.xml.validation の例 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 ) { }

まとめ (用語とその意味) XML文書の処理とパーサ SAX (Simple API for XML) DOM (Document Object Model) XPath XSLT (eXtensible Stylesheet Language / Transformation ) 名前空間 (Namespace) DTD と W3C XML Schema

プログラミングの特徴 共通したデザインパターン (クラス、メソッドの命名規則など) SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser parser = spf.newSAXParser();