応用Java(Java/XML) 第7回 2006年6月16日 植田龍男.

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.
WebサービスII (第12回)‏ 2007年12月19日 植田龍男.
Webサービスに関する基本用語 Masatoshi Ohishi / NAOJ & Sokendai
第9回 2007年6月22日 応用Java (Java/XML).
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日目) 担当:清水,田代 副手:浦辺,石井.
事前準備 ttsshでのログイン フォルダ名 XML ファイルコピー  cp ~hurry-go-round/Java/XML/* .
Applet 岡部 祐典 鈴木 敬幸.
背景 我々の研究室で開発しているJavaプログラム解析フレ ームワークでは,解析情報はメモリ上に保持される 問題点
WebサービスII (第10回) 2007年11月28日 植田龍男.
JSFによるWebアプリケーション開発 第11回
Servlet J2EE I 第8回 /
WSDL と JAX-RPC 年10月13日 Webサービス II (第3回) WSDL と JAX-RPC 年10月13日.
Myoungkyu Song and Eli Tilevich 発表者: 石尾 隆(大阪大学)
第5回 2007年5月25日 応用Java (Java/XML).
第4回 2007年5月11日 応用Java (Java/XML).
卒研:データベースチーム 第4回 DOMを使った処理
WebサービスII (第8回) 2007年11月14日 植田龍男.
XSLT XML文書はそのままでは読み易い形で表示されない。 XML文書を別のXML文書に変換して、情報抽出や表示をする枠組みがXSLT。
JSFによるWebアプリケーション開発 第6回
WSDL と JAX-RPC 年10月20日 Webサービス II (第4回) WSDL と JAX-RPC 年10月20日.
2005年10月6日 植田龍男 Webサービス II (第2回) 年10月6日 植田龍男.
Javaプログラムの実行まで バイト Javaの コード 実行 ソースコード Java ファイル名 ファイル名 abc.java
アプレット プログラミング 第10回 アプレット プログラミング第10回.
XMLゼミ 5.1 XML文書と表示 5.2 CSS 5.3 XMLとXSL 高橋 辰裕.
第12回 2007年7月13日 応用Java (Java/XML).
9.1 DOMの概要 9.2 DOMプログラミングの基礎 9.3 DOMのプログラミング例
第10回 2007年6月29日 応用Java (Java/XML).
Webサービス II(第3回) 2007年10月10日.
XMLゼミ 5.4 XSLT (P118~P134)          兒玉 光太郎.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
第11回 2007年7月6日 応用Java (Java/XML).
第8回 2007年6月15日 応用Java (Java/XML).
暗黙的に型付けされる構造体の Java言語への導入
第3回 2007年4月27日 応用Java (Java/XML).
WebサービスII (第7回) 2007年11月7日 植田龍男.
第4回 javaのプログラミング 04A2029           古賀慎也.
第7回 2007年6月8日 応用Java (Java/XML).
第6回 2007年6月1日 応用Java (Java/XML).
第1回 2007年4月13日 応用Java (Java/XML).
インラインスクリプトに対するデータフロー 解析を用いた XHTML 文書の構文検証
Javaによる Webアプリケーション入門 第6回
10-1 SAXの概要 10-2 Saxプログラミングの基礎 10-3 saxのプログラム例
情報コミュニケーション入門e 第11回 Part2 Web入門(1)
Javaによる Webアプリケーション入門 第2回
第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
2006年11月8日 植田龍男 Webサービス II (第7回) 年11月8日 植田龍男.
Javaによる Webアプリケーション入門 第11回
第13回 2007年7月20日 応用Java (Java/XML).
パッケージ,アクセス修飾子 2008年4月27日 海谷 治彦.
Servlet ソフトウェア特論 第7回.
XML Schema (1) ソフトウェア特論 第3回 /
~let's take fun when you can do it~
Servlet J2EE I (データベース論) 第12回 /
Servlet データベース論 第6回.
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
独習XML ~第1章 XMLの基礎~ 1.1 XML文書の基礎 1.2 XMLとHTML
サブゼミ第7回 実装編① オブジェクト型とキャスト.
第14回放送授業.
JSPの基本 J2EE I (データベース論) 第8回 /
2006年10月18日 植田龍男 Webサービス II (第4回) 年10月18日 植田龍男.
応用Java(Java/XML) 第8回 2005年6月9日 植田龍男.
応用Java(Java/XML) 第8回 2005年6月23日 植田龍男.
Presentation transcript:

応用Java(Java/XML) 第7回 2006年6月16日 植田龍男

後半の内容の予定 XPath (6/9) XSLT (6/16) 名前空間(Namespace) (6/16) XML文書の妥当性の検証(6/23) DTD,XML Schema SOAP, RMI (7月以降)

J2SE 5.0 と XML API javax.xml javax.xml.parsers javax.xml.transform javax.xml.transform.dom javax.xml.transform.sax javax.xml.transform.stream javax.xml.xpath javax.xml.namespace javax.xml.validation javax.xml.datatype

javax.xml.transform javax.xml.transform javax.xml.transform.dom javax.xml.transform.sax javax.xml.transform.stream

XSLTとは? XSL Transform XML文書を別の形式の文書へ変換 XSL(eXtensible Stylesheet Language) 変換のルールもまたXML文書で記述 (XSLファイル) 変換前の文書、変換後の文書、変換のための文書

変換前の文書の例 <document> <title>Java and XML</title> <text> Let's begin, now! </text> <image s="java.png" w="128" h="64"/> </document>

XSLTによる変換の例(1) <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/ XSL/Transform"> <xsl:template match="/"> : </xsl:template> </xsl:stylesheet>

XSLTによる変換の例(2) <xsl:template match="text"> <p> <xsl:apply-templates /> </p> </xsl:template>

XSLTによる変換の例(3) <xsl:template match="title“ mode="inhead"> <xsl:apply-templates /> </title> </xsl:template>

XSLTによる変換の例(4) <xsl:template match="image"> <img> <xsl:attribute name="src"> <xsl:value-of select="@s"/> </xsl:attribute> </img> </xsl:template>

参照:XPath の検索パターン abc //abc abc[1] @xyz

XSLT のAPI(1) javax.xml.transform パッケージ インタフェース Source 抽象化された入力元 変換前の文書 インタフェース Result 抽象化された出力先 変換後の文書

SourceやResultの実体は? ローカルファイル Web上の資源 DOMツリー SAXで処理中の文書 *それぞれに応じて実体を提供 3つのサブパッケージの役割り 処理そのものに違いは生じない

XSLT のAPI(2) Source inputSource = new StreamSource( "sample6.xml" ); Source transSource = new StreamSource( "trans.xsl" ); Result outputResult = new StreamResult( System.out );

XSLT のAPI(3) Transofromerクラス 変換を実行する抽象クラス TransformerFactory tf = TransformerFactory.newInstance(); Transformer transformer = tf.newTransformer( transSource );

XSLT のAPI(4) 変換の実行 transformer.transform( inputSource, outputResult );

変換後の文書の例 <html> <head> <title>Java and XML</title> </head> <body> <h1>Java and XML</h1> <hr> <p> Let's begin, now! :

ところで気になることが・・・ <xsl:template match="text"> の xsl: ってどういう意味? <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/ XSL/Transform"> のURIは何の働きをしているの?

名前空間とは? 名前の衝突の回避(一意性の保証) ローカル名の前に「場所」を指定 XML以外でも利用

XMLの名前空間の例(1) Prefix <wakhok:image source="java.png“ width="512" height="400"/> : <tatsuo:image src="elephant.png“ w="64“ h="64"/>

XMLの名前空間の例(2) URI <wakhok:document xmlns:wakhok ="http://www.wakhok.ac.jp/public" xmlns:tatsuo ="http://www.wakhok.ac.jp/tatsuo"> <wakhok:title> Java and XML</wakhok:title> : </wakhok:document>

名前空間の例(3) 有効範囲 <tatsuo:image src="elephant.png“ w="64" h="64" xmlns:tatsuo ="http://www.wakhok.ac.jp/tatsuo"/>

名前空間の例(4) Prefixの省略 Prefixの名称を省略(URIのみ指定) この場合でも立派な名前空間 <document xmlns="http://www.wakhok.ac.jp/"> <title>Java and XML</title> <image s="java.png" w="128" h="64"/> </document>

名前空間の例(5) 特別なPrefix xmlns: はなぜURIなしでもいいのか? xml で始まるプレフィックスは特別 <xml:image source="elephant.png" xmlns:xml="http://www.wakhok.ac.jp"/> この表記はエラーとなる

名前空間の処理(1) パーサへの通知(Factoryクラスに) SAXParserFactory spf   = SAXParserFactory.newInstance(); spf.setNamespaceAware( true ); SAXParser parser = spf.newSAXParser();

名前空間の処理(2) PrefixとURIの処理がポイント void startElement( String uri, String localName, Stirng qName, Attributes attr )

SAX処理での名前空間の検知 ある名前空間の有効範囲に入った時 startPrefixMapping( String p, String u) ある名前空間の有効範囲が終わった時 endPrefixMapping( String p )

javax.xml.namespace たった1つのインタフェース NamespaceContext たった1つのクラス QName

NamespaceContext 3個のメソッドの実装を要求 プレフィックスとURIの変換の手段 getNamespaceURI( String prefix) getPrefix( String uri ) getPrefixes( String uri ) URI : Prefix は1対他の可能性もある

QName (Qualified Name ) URI, Prefix, ローカル名の情報を格納 QName(String local) QName(String uri, String local) QName(String uri, String local, String prefix) getLocalPart(), getPrefix() getNamespaceURI() equals() – URIとローカル名のみで判定 toString() – { URI }localName の形式

Quorified Name Qnameクラスの利用例 public void startElement( String nameSpace, String localName, String qName, Attributes attrs ) { System.out.println( new QName( nameSpace, localName ) );