0
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

1,637

Published on

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

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,637
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
12
Comments
0
Likes
2
Embeds 0
No embeds

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 of "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研究会
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×