Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
XML(再)入門                     国島丈生                 kunishi@acm.org... the correct full name of XML, is “Extensible MarkupLa...
例:メールFrom: kunishi@example.comTo: hatano@example.com, hijikata@example.comSubject: 講演のお誘いDate: 2008-11-01 17:01:3012/11のSI...
これをXMLで書くと<?xml version= 1.0 encoding= utf-8 ?><mail> <head>  <from><address>kunishi@example.com</address></from>  <to><ad...
用語          要素(element)属性(attribute)               内容(content)<p>12/11の<a href="http://www.ieice.org/ wi2/">SIG WI2</a>で講演...
マークアップ言語• HTML, TeX, etc.• テキスト中に埋め込むマークアップ    (目印)の記法    •文書の構造やテキストの属性(フォン     トなど)を明記    •計算機処理をしやすくする•   マークアップ言語で書かれた...
Extensible?• 要素や属性などの記法のみ規定• 具体的な用途に合わせて要素名や属性    名を自由に決められる•   特定用途向けマークアップ言語を作り    出すメタ言語    •SGMLやXML    •先のメールの例:XMLの記...
SGMLからXMLへ           機能の簡略化SGML                   XML  具体例                     具体例        XML化、モジュール化HTML                 ...
SGML, HTMLとの違い• 終了タグの省略不可: <p>→<p>...</p>• 内容のない要素(空要素)  <hr>→<hr></hr>, <hr/> (空要素タグ)• 属性    <dl compact=compact>,    <dl...
XMLの構文上の注意点                  <?xml version= 1.0• XML宣言が先頭に必            encoding= utf-8 ?>    要             <mail>    • XML...
XMLの表す構造=木                                                 mail                                        head               ...
XMLで表現できない例• 要素のオーバラップは表現できない <page><para>昔々、あるところ に、おじいさんとおばあさんが住ん でいました。</page><page>ある 朝、おじいさんは山へ柴刈りに、お ばあさんは川へ洗濯に出かけまし...
XMLの主な用途• テキスト文書の記述 • 文書の構造を表現する • テキストの属性(リンクやフォントな     ど)を表現する    •構造化文書 (structured document)•   構造を持つデータの記述    •データ構造が...
テキスト文書の記述<?xml version= 1.0 encoding= utf-8 ?><mail> <head>  <from><address>kunishi@example.com</address></from>  <to><add...
データ構造の記述<?xml version= 1.0 encoding= utf-8 ?><mail> <head>  <from><address>kunishi@example.com</address></from>  <to><addr...
半構造データ• 1997年にS. Abiteboulが提唱 • Querying Semistructured Data ,      ICDT97•   raw text(非構造データ)とRDBやオ    ブジェクト(厳密な構造データ)との ...
不規則なデータ構造<?xml version= 1.0 encoding= utf-8 ?><mail> <head>  <from><address>hatano@example.com</address></from>  <to><addr...
XML構造の正しさの基準• 整形式(well-formed) • 文書がXMLの文法に沿っているか • ルート要素を根とする木か、など• 妥当(valid) • 文書の不規則さが許容範囲内に収    まっているか•   許容範囲の定義(文書構造...
DTD(文書型定義)  • スキーマを表現する一つの方法<!ELEMENT mail (head, body?)><!-- mail要素の内容はheadが1個、続いてbodyが0個以上 --><!ELEMENT head (from, to, ...
「構造」の見方の違い• テキスト文書の場合 • テキストの構造はあいまい • スキーマを定めるのは難しい • それでも計算機で処理させるためには    スキーマはあったほうがよい•   スキーマから外れた文書があることを    前提に処理   ...
「構造」の見方の違い• データの場合 • 対象はデータモデリングが終わった    後のデータ•   構造は(多くの場合、かなり)明確•   (スキーマで定められた範囲で)不    規則であってもよい•   スキーマから外れた構造を持つデー   ...
妥当性の2つの立場• 妥当性検証しなくてもよい • 整形式であれば処理する • 必要ならスキーマで文書構造を検査 • Relax NG, XPath 1.0, XSLT 1.0 (,     DTD)など•   妥当性検証が前提    •妥当な...
XPath  • XML文書(木)からデータを取り出す      方法の一つ  •   木の経路(パス)に関する条件式  •   例:メールのヘッダに含まれるアドレ      スのうちkunishi@example.com以外//head//a...
XPathの意味   //head//address/text()[. != kunishi@example.com ]                                                 mail         ...
XPathの(省略)文法例• /mail :ルート要素mail• /mail/head:ルート要素mailの子要素    head•   //head//address:文書中のhead要素    の子孫要素address•   //a/@hr...
メールをHTMLに埋込む<?xml version= 1.0 encoding= utf-8 ?><html> <head>  <title>kunishiさんの講演</title> </head> <body>  <p>こんな案内が来ました。...
メールをHTMLに埋込む<?xml version= 1.0 encoding= utf-8 ?><html> <head>  <title>kunishiさんの講演</title> </head> <body>  <p>こんな案内が来ました。...
メールをHTMLに埋込む<?xml version= 1.0 encoding= utf-8 ?><html> <head>  <title>kunishiさんの講演</title> </head> <body>  <p>こんな案内が来ました。...
タグ名の衝突<?xml version= 1.0 encoding= utf-8 ?><html> <head>  <title>kunishiさんの講演</title> </head> <body>  <p>こんな案内が来ました。</p>  ...
接頭辞による衝突の回避<?xml version= 1.0 encoding= utf-8 ?><h:html xmlns:h= http://www.w3.org/1999/xhtml          xmlns:m= http://www...
XML名前空間                     XHTMLの名前空間                     http://www.w3.org/1999/xhtml1      html, head,                 ...
接頭辞を固定しないのは• 接頭辞をグローバルに固定すると • ドメインと同じ問題が起こる   • 短い接頭辞を確保しようと競争   • 接頭辞を高値で売り買い• URLをXML名前空間の識別子に使う • XML名前空間を定義した個人/団体   ...
本日のスライド、参考資料・論文へのリンクは下記から参照できます。http://tk.kunilab.org/xmltut200812                        2008-12-11, SIG WI2研究会
Upcoming SlideShare
Loading in …5
×

SIG WI2 XML tutorial

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

  • Be the first to comment

SIG WI2 XML tutorial

  1. 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. 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. 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. 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. 5. マークアップ言語• HTML, TeX, etc.• テキスト中に埋め込むマークアップ (目印)の記法 •文書の構造やテキストの属性(フォン トなど)を明記 •計算機処理をしやすくする• マークアップ言語で書かれた文書=構 造化文書(structured documents) 2008-12-11, SIG WI2研究会
  6. 6. Extensible?• 要素や属性などの記法のみ規定• 具体的な用途に合わせて要素名や属性 名を自由に決められる• 特定用途向けマークアップ言語を作り 出すメタ言語 •SGMLやXML •先のメールの例:XMLの記法に基づ く Mail Markup Language の文書 2008-12-11, SIG WI2研究会
  7. 7. SGMLからXMLへ 機能の簡略化SGML XML 具体例 具体例 XML化、モジュール化HTML XHTML MathML SVG RDF/XML etc. 2008-12-11, SIG WI2研究会
  8. 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. 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. 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. 11. XMLで表現できない例• 要素のオーバラップは表現できない <page><para>昔々、あるところ に、おじいさんとおばあさんが住ん でいました。</page><page>ある 朝、おじいさんは山へ柴刈りに、お ばあさんは川へ洗濯に出かけまし た。</para></page> 2008-12-11, SIG WI2研究会
  12. 12. XMLの主な用途• テキスト文書の記述 • 文書の構造を表現する • テキストの属性(リンクやフォントな ど)を表現する •構造化文書 (structured document)• 構造を持つデータの記述 •データ構造が不規則であってもよい •半構造データ(semistructured data) 2008-12-11, SIG WI2研究会
  13. 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. 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. 15. 半構造データ• 1997年にS. Abiteboulが提唱 • Querying Semistructured Data , ICDT97• raw text(非構造データ)とRDBやオ ブジェクト(厳密な構造データ)との 中間、構造が不規則• 例:Webページ、ASN.1、JSON 2008-12-11, SIG WI2研究会
  16. 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. 17. XML構造の正しさの基準• 整形式(well-formed) • 文書がXMLの文法に沿っているか • ルート要素を根とする木か、など• 妥当(valid) • 文書の不規則さが許容範囲内に収 まっているか• 許容範囲の定義(文書構造の定義) =文書スキーマ、スキーマ •XML文書とは別にあらかじめ用意 2008-12-11, SIG WI2研究会
  18. 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. 19. 「構造」の見方の違い• テキスト文書の場合 • テキストの構造はあいまい • スキーマを定めるのは難しい • それでも計算機で処理させるためには スキーマはあったほうがよい• スキーマから外れた文書があることを 前提に処理 2008-12-11, SIG WI2研究会
  20. 20. 「構造」の見方の違い• データの場合 • 対象はデータモデリングが終わった 後のデータ• 構造は(多くの場合、かなり)明確• (スキーマで定められた範囲で)不 規則であってもよい• スキーマから外れた構造を持つデー タは(多くの場合)エラー 2008-12-11, SIG WI2研究会
  21. 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. 22. XPath • XML文書(木)からデータを取り出す 方法の一つ • 木の経路(パス)に関する条件式 • 例:メールのヘッダに含まれるアドレ スのうちkunishi@example.com以外//head//address/text()[. != kunishi@example.com ] 2008-12-11, SIG WI2研究会
  23. 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. 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. 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. 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. 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. 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. 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. 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. 31. 接頭辞を固定しないのは• 接頭辞をグローバルに固定すると • ドメインと同じ問題が起こる • 短い接頭辞を確保しようと競争 • 接頭辞を高値で売り買い• URLをXML名前空間の識別子に使う • XML名前空間を定義した個人/団体 がURLを用意• URLにスキーマを置く必要はない (が説明だけでも置くとbetter) 2008-12-11, SIG WI2研究会
  32. 32. 本日のスライド、参考資料・論文へのリンクは下記から参照できます。http://tk.kunilab.org/xmltut200812 2008-12-11, SIG WI2研究会

×