SIG WI2 XML tutorial
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

SIG WI2 XML tutorial

  • 2,503 views
Uploaded on

2008-12-11, 神奈川近代文学館

2008-12-11, 神奈川近代文学館

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,503
On Slideshare
2,425
From Embeds
78
Number of Embeds
5

Actions

Shares
Downloads
10
Comments
0
Likes
2

Embeds 78

http://kunishi.blogspot.com 64
http://knsm.net 9
http://kunishi.blogspot.jp 3
http://localhost 1
http://www.linkedin.com 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Transcript

  • 1. XML(再)入門 国島丈生 kunishi@acm.org... the correct full name of XML, is “Extensible MarkupLanguage”. “eXtensible Markup Language” is just aspelling error. -- Tim Bray 2008-12-11, SIG WI2研究会
  • 2. 例:メールFrom: kunishi@example.comTo: hatano@example.com, hijikata@example.comSubject: 講演のお誘いDate: 2008-11-01 17:01:3012/11のSIG WI2研究会で講演します。ぜひ見に来てください!国島丈生 (kunishi@example.com) 2008-12-11, SIG WI2研究会
  • 3. これをXMLで書くと<?xml version= 1.0 encoding= utf-8 ?><mail> <head> <from><address>kunishi@example.com</address></from> <to><address>hatano@example.com</address> <address>hijikata@example.com</address></to> <subject>講演のお誘い</subject> <date>2008-11-01 17:01:30</date> </head> <body> <p>12/11の<a href= http://www.ieice.org/ wi2/ >SIG WI2研究会</a>で講演します。<b>ぜひ見に来てください!</b></p> <address>国島丈生 (kunishi@example.com)</address> </body></mail> 2008-12-11, SIG WI2研究会
  • 4. 用語 要素(element)属性(attribute) 内容(content)<p>12/11の<a href="http://www.ieice.org/ wi2/">SIG WI2</a>で講演をします。<b>ぜひ見に来てください!</b></p>開始タグ(start tag) 終了タグ(end tag) タグ(tag) 2008-12-11, SIG WI2研究会
  • 5. マークアップ言語• HTML, TeX, etc.• テキスト中に埋め込むマークアップ (目印)の記法 •文書の構造やテキストの属性(フォン トなど)を明記 •計算機処理をしやすくする• マークアップ言語で書かれた文書=構 造化文書(structured documents) 2008-12-11, SIG WI2研究会
  • 6. Extensible?• 要素や属性などの記法のみ規定• 具体的な用途に合わせて要素名や属性 名を自由に決められる• 特定用途向けマークアップ言語を作り 出すメタ言語 •SGMLやXML •先のメールの例:XMLの記法に基づ く Mail Markup Language の文書 2008-12-11, SIG WI2研究会
  • 7. SGMLからXMLへ 機能の簡略化SGML XML 具体例 具体例 XML化、モジュール化HTML XHTML MathML SVG RDF/XML etc. 2008-12-11, SIG WI2研究会
  • 8. SGML, HTMLとの違い• 終了タグの省略不可: <p>→<p>...</p>• 内容のない要素(空要素) <hr>→<hr></hr>, <hr/> (空要素タグ)• 属性 <dl compact=compact>, <dl compact> → <dl compact= compact >, <dl compact= compact >• cf. W3C NOTE-sgml-xml-971215, W3C REC-xhtml1 4章 2008-12-11, SIG WI2研究会
  • 9. XMLの構文上の注意点 <?xml version= 1.0• XML宣言が先頭に必 encoding= utf-8 ?> 要 <mail> • XMLのバージョン <head> <from>...</from> 番号、ファイルの符 <to>...</to> 号化方式などを指定 ...• どの要素にも含まれな </head> い要素は文書中で一つ <body> だけ(ルート要素) <p>...</p> </body> </mail> 2008-12-11, SIG WI2研究会
  • 10. XMLの表す構造=木 mail head body from to subject date p address で講演し address address address 12/11に a b ます。kunishi@ex hatano@ex hijikata@ex 講演の 2008-11-01 SIG WI2 href ぜひ見に来てample.com ample.com ample.com お誘い 17:01:30 研究会 ください! 国島丈生 http://www.ieice.org/~wi2/ (kunishi@example.com) 2008-12-11, SIG WI2研究会
  • 11. XMLで表現できない例• 要素のオーバラップは表現できない <page><para>昔々、あるところ に、おじいさんとおばあさんが住ん でいました。</page><page>ある 朝、おじいさんは山へ柴刈りに、お ばあさんは川へ洗濯に出かけまし た。</para></page> 2008-12-11, SIG WI2研究会
  • 12. XMLの主な用途• テキスト文書の記述 • 文書の構造を表現する • テキストの属性(リンクやフォントな ど)を表現する •構造化文書 (structured document)• 構造を持つデータの記述 •データ構造が不規則であってもよい •半構造データ(semistructured data) 2008-12-11, SIG WI2研究会
  • 13. テキスト文書の記述<?xml version= 1.0 encoding= utf-8 ?><mail> <head> <from><address>kunishi@example.com</address></from> <to><address>hatano@example.com</address> <address>hijikata@example.com</address></to> <subject>講演のお誘い</subject> <date>2008-11-01 17:01:30</date> </head> <body> <p>12/11の<a href= http://www.ieice.org/ wi2/ >SIG WI2研究会</a>で講演します。<b>ぜひ見に来てください!</b></p> <address>国島丈生 (kunishi@example.com)</address> </body></mail> 2008-12-11, SIG WI2研究会
  • 14. データ構造の記述<?xml version= 1.0 encoding= utf-8 ?><mail> <head> <from><address>kunishi@example.com</address></from> <to><address>hatano@example.com</address> <address>hijikata@example.com</address></to> <subject>講演のお誘い</subject> <date>2008-11-01 17:01:30</date> </head> <body> <p>12/11の<a href= http://www.ieice.org/ wi2/ >SIG WI2研究会</a>で講演します。<b>ぜひ見に来てください!</b></p> <address>国島丈生 (kunishi@example.com)</address> </body></mail> 2008-12-11, SIG WI2研究会
  • 15. 半構造データ• 1997年にS. Abiteboulが提唱 • Querying Semistructured Data , ICDT97• raw text(非構造データ)とRDBやオ ブジェクト(厳密な構造データ)との 中間、構造が不規則• 例:Webページ、ASN.1、JSON 2008-12-11, SIG WI2研究会
  • 16. 不規則なデータ構造<?xml version= 1.0 encoding= utf-8 ?><mail> <head> <from><address>hatano@example.com</address></from> <to><address>kunishi@example.com</address></to> <cc><address>hijikata@example.com</address></cc> <subject>了解です</subject> <date> <year>2008</year><month>11</month><day>1</day> </date> </head> <!-- 本文がないのでbody要素がない --></mail> 2008-12-11, SIG WI2研究会
  • 17. XML構造の正しさの基準• 整形式(well-formed) • 文書がXMLの文法に沿っているか • ルート要素を根とする木か、など• 妥当(valid) • 文書の不規則さが許容範囲内に収 まっているか• 許容範囲の定義(文書構造の定義) =文書スキーマ、スキーマ •XML文書とは別にあらかじめ用意 2008-12-11, SIG WI2研究会
  • 18. DTD(文書型定義) • スキーマを表現する一つの方法<!ELEMENT mail (head, body?)><!-- mail要素の内容はheadが1個、続いてbodyが0個以上 --><!ELEMENT head (from, to, cc?, subject, date)><!ELEMENT from (address)><!ELEMENT to (address+)><!ELEMENT date (#PCDATA¦(year, month, day))><!ELEMENT body (#PCDATA¦p¦address)*><!ELEMENT p (#PCDATA¦a¦b)*><!-- p要素の内容は文字列、a要素、b要素の0個以上の並び --><!ELEMENT a (#PCDATA)><!ATTLIST a href CDATA #REQUIRED> 2008-12-11, SIG WI2研究会
  • 19. 「構造」の見方の違い• テキスト文書の場合 • テキストの構造はあいまい • スキーマを定めるのは難しい • それでも計算機で処理させるためには スキーマはあったほうがよい• スキーマから外れた文書があることを 前提に処理 2008-12-11, SIG WI2研究会
  • 20. 「構造」の見方の違い• データの場合 • 対象はデータモデリングが終わった 後のデータ• 構造は(多くの場合、かなり)明確• (スキーマで定められた範囲で)不 規則であってもよい• スキーマから外れた構造を持つデー タは(多くの場合)エラー 2008-12-11, SIG WI2研究会
  • 21. 妥当性の2つの立場• 妥当性検証しなくてもよい • 整形式であれば処理する • 必要ならスキーマで文書構造を検査 • Relax NG, XPath 1.0, XSLT 1.0 (, DTD)など• 妥当性検証が前提 •妥当な文書のみ処理する •XML Schema, XPath 2.0, XQuery 1.0, XSLT 2.0(, DTD)など 2008-12-11, SIG WI2研究会
  • 22. XPath • XML文書(木)からデータを取り出す 方法の一つ • 木の経路(パス)に関する条件式 • 例:メールのヘッダに含まれるアドレ スのうちkunishi@example.com以外//head//address/text()[. != kunishi@example.com ] 2008-12-11, SIG WI2研究会
  • 23. XPathの意味 //head//address/text()[. != kunishi@example.com ] mail head body from to subject date p address で講演し address address address 12/11に a b ます。kunishi@ex hatano@ex hijikata@ex 講演の 2008-11-01 SIG WI2 href ぜひ見に来てample.com ample.com ample.com お誘い 17:01:30 研究会 ください! 国島丈生 http://www.ieice.org/~wi2/ (kunishi@example.com) 2008-12-11, SIG WI2研究会
  • 24. XPathの(省略)文法例• /mail :ルート要素mail• /mail/head:ルート要素mailの子要素 head• //head//address:文書中のhead要素 の子孫要素address• //a/@href:文書中のa要素のhref属性• //para[@lang= ja ]:属性langが ja で あるようなpara要素 2008-12-11, SIG WI2研究会
  • 25. メールをHTMLに埋込む<?xml version= 1.0 encoding= utf-8 ?><html> <head> <title>kunishiさんの講演</title> </head> <body> <p>こんな案内が来ました。</p> <mail> <head> <from><address>kunishi@example.com</address></from> <to><address>hatano@example.com</address></to> <subject>講演します</subject> <date>2008-11-01 17:01:30</date> </head> <body> <p>12/11のSIG WI2研究会で講演します。ぜひ見に来て下さい!</p> </body> </mail> </body></html> 2008-12-11, SIG WI2研究会
  • 26. メールをHTMLに埋込む<?xml version= 1.0 encoding= utf-8 ?><html> <head> <title>kunishiさんの講演</title> </head> <body> <p>こんな案内が来ました。</p> <mail> <head> <from><address>kunishi@example.com</address></from> <to><address>hatano@example.com</address></to> <subject>講演します</subject> <date>2008-11-01 17:01:30</date> </head> <body> <p>12/11のSIG WI2研究会で講演します。ぜひ見に来て下さい!</p> </body> </mail> </body></html> 2008-12-11, SIG WI2研究会
  • 27. メールをHTMLに埋込む<?xml version= 1.0 encoding= utf-8 ?><html> <head> <title>kunishiさんの講演</title> </head> <body> <p>こんな案内が来ました。</p> <mail> <head> <from><address>kunishi@example.com</address></from> <to><address>hatano@example.com</address></to> <subject>講演します</subject> <date>2008-11-01 17:01:30</date> </head> <body> <p>12/11のSIG WI2研究会で講演します。ぜひ見に来て下さい!</p> </body> </mail> </body></html> 2008-12-11, SIG WI2研究会
  • 28. タグ名の衝突<?xml version= 1.0 encoding= utf-8 ?><html> <head> <title>kunishiさんの講演</title> </head> <body> <p>こんな案内が来ました。</p> <mail> <head> <from><address>kunishi@example.com</address></from> <to><address>hatano@example.com</address></to> <subject>講演します</subject> <date>2008-11-01 17:01:30</date> </head> <body> <p>12/11のSIG WI2研究会で講演します。ぜひ見に来て下さい!</p> </body> </mail> </body></html> 2008-12-11, SIG WI2研究会
  • 29. 接頭辞による衝突の回避<?xml version= 1.0 encoding= utf-8 ?><h:html xmlns:h= http://www.w3.org/1999/xhtml xmlns:m= http://www.example.com/mail > <h:head> <h:title>kunishiさんの講演</h:title> </h:head> <h:body> <h:p>こんな案内が来ました。</h:p> <m:mail> <m:head> <m:from><m:address>kunishi@example.com</m:address></m:from> <m:to><m:address>hatano@example.com</m:address></m:to> <m:subject>講演します</m:subject> <m:date>2008-11-01 17:01:30</m:date> </m:head> <m:body> <h:p>12/11のSIG WI2研究会で講演します。ぜひ見に来て下さい!</h:p> </m:body> </m:mail> </h:body></h:html> 2008-12-11, SIG WI2研究会
  • 30. XML名前空間 XHTMLの名前空間 http://www.w3.org/1999/xhtml1 html, head, h: body, p, title, ... メールを埋め込んだ XHTML文書 m: mail, head, body, from, to, cc, subject, ...Mail MLの名前空間http://www.example.com/mail 2008-12-11, SIG WI2研究会
  • 31. 接頭辞を固定しないのは• 接頭辞をグローバルに固定すると • ドメインと同じ問題が起こる • 短い接頭辞を確保しようと競争 • 接頭辞を高値で売り買い• URLをXML名前空間の識別子に使う • XML名前空間を定義した個人/団体 がURLを用意• URLにスキーマを置く必要はない (が説明だけでも置くとbetter) 2008-12-11, SIG WI2研究会
  • 32. 本日のスライド、参考資料・論文へのリンクは下記から参照できます。http://tk.kunilab.org/xmltut200812 2008-12-11, SIG WI2研究会