270 likes | 392 Views
セマンティック Web ・ メタデータ勉強会 #2-1. 電気通信大学大学院 電気通信学研究科 情報工学専攻 M2 間瀬哲也. 2. Structured Web Documents in XML. Contents. Introduction The XML Language Structuring Namespaces Addressing and Querying XML Documents Processing Summary. HTML & XML. HTML (HyperText Markup Language) Web ページ記述の標準
E N D
セマンティックWeb・メタデータ勉強会#2-1 電気通信大学大学院 電気通信学研究科 情報工学専攻 M2 間瀬哲也
Contents • Introduction • The XML Language • Structuring • Namespaces • Addressing and Querying XML Documents • Processing • Summary
HTML & XML • HTML (HyperText Markup Language) • Webページ記述の標準 • SGML(Standard generalized ML)から派生 • デバイスやシステムに非依存 • XML (eXtensible Markup Language) • HTMLの欠点を克服するために開発
HTML vs XML • 共通点 • タグを使用 • 人間は理解しやすい • 相違点 • 終了タグ • 計算機可読性 • 拡張性 • 表示能力
XML applications • MathXML (mathmatics) • BSML (bioinformatics) • HRML (human resources) • AML (astronomy) • NewsML (news) • IRML (investment) • その他 • SVG (Scalable Vector Graphics),SMIL (Synchronized Multimedia Integration Language),RDF (Resource Description Framework)
Prolog • XML宣言 • 文書型宣言 <?xml version=“1.0” encoding=“UTF-8” ?> <!DOCTYPE event SYSTEM “event.dtd” > <event> <fireworks1> <name>足立の花火大会</name> <place>荒川河川敷</place> <date>2005.07.28</date> </fireworks1> </event> ← XML宣言 ← 文書型宣言
Elements • 要素 ::= 開始タグ 内容 終了タグ | 空要素 • 内容 ::= テキスト | 要素 • 空要素 ::= <name></name> | <name /> <?xml version=“1.0” encoding=“UTF-8” ?> <!DOCTYPE event SYSTEM “event.dtd” > <event> <fireworks1> <name>足立の花火大会</name> <place>荒川河川敷</place> <date>2005.07.28</date> </fireworks1> </event> ← 要素
Attributes • 要素に情報を付加 • 一意に識別可能にする • 空要素に意味を持たせる • 名前と値の対 <?xml version=“1.0” encoding=“UTF-8” ?> <!DOCTYPE event SYSTEM “event.dtd” > <event> <fireworks name=“足立の花火大会” place=“荒川河川敷” date=“2005.07.28” /> </event> ← 属性
Comments • パーサに無視してくれと頼む例)<!-- コメントだから無視してちょーだい --> • タグの中に記述してはいけない • コメント中に「 -- 」は使えない
Processing Instructions (PIs) • アプリケーションに対して処理をさせる<?ターゲット 処理命令?>のように記述 例)<?stylesheet type=“text/css” href=“sample.css”?>
Well-Formed XML Documents • 整形式XML文書 • 構文的に正しければよい • 構文的に正しいとは? • ルート要素はひとつだけ • 開始タグとそれに対応する終了タグがある • タグがオーバーラップしていない<creature><animal>Dog</creature></animal> • 属性名が一意である • DTDに則しているかどうかは関係ない
Valid XML Documents • 妥当なXML文書 • 整形式であり,かつ文書型定義に則している • DTD, XML Schema Well-Formed Valid
The Tree Model of XML Documents • 整形式のXMLは木構造で表現できる • 要素の順番は重要 • 属性の順番は重要ではない Root event fireworks1 fireworks2 name place date 足立の花火大会 荒川河川敷 2005.07.28
DTD • 要素名や階層構造などを定義 • 内部DTD • XML文書内に直接記述 • 外部DTD • XML文書とは別のファイルに作成 • XML文書には参照情報を記述
The Structure of DTD • 要素型宣言 (element type declaration) • 属性リスト宣言 (attribute list declaration) • 実体宣言 (entity declaration) • 記法宣言 (notation declaration) <!DOCTYPE menu [ <!ELEMENT menu (name, price, explanation)> <!ELEMENT name (#PCDATA)> <!ELEMENT price (#PCDATA)> <!ELEMENT explanation (#PCDATA)> <!ATTLIST name alias CDATA #REQUIRED> <!ENTITY …> <!NOTATION …> ]> 文書型宣言 要素型宣言 属性リスト宣言 実体宣言 記法宣言
Keywords of DTD • #PCDATA • その要素はテキストしか持たない(子要素なし)cf. 子要素を持つときには子要素名にする • <!ELEMENT parent (child1+, child2*)> • #REQUIRED • その属性は省略不可能 cf. #IMPLIED (省略可) • CDATA • その属性値は文字データ cf. ID (一意識別子),IDREF (IDへの参照)
XML Schema • DTDはXMLの文法に完全に従っていないからダメだ!!継承機能もないし… • 新たなスキーマ言語が必要だ • そこで登場,本命“XML Schema” • 以下を定義 • 要素の階層構造 • 要素名 • 属性名,属性値 • 要素・属性のデータ型
The Structure of XML Schema <?xml version=“1.0” encode=“UTF-8” ?> <xsd:schema xmlns:xsd=“http://www.w3.org/2001/XMLSchema”> <xsd:element name=“NewMenu” type=“menu”> <xsd:complexType name=“menu”> <xsd:sequence> <xsd:element name=“Name” type=“nameType” /> <xsd:element name=“Price” type=“xsd:int” /> <xsd:element name=“Explanation” type=“xsd:string” /> </xsd:sequence> </xsd:complexType> <xsd:complexType name=“nameType”> <xsd:element name=“name” type=“xsd:string” /> <xsd:attribute name=“alias” type=“xsd:string” use=“optional” /> </xsd:complexType> </xsd:element> </xsd:schema> スキーマ宣言 要素宣言 複合型宣言 出現順指定 属性宣言
etc of XML Schema • name • 要素・データ型・属性の名前を指定 • type • 要素・属性のデータ型を指定 • 名前空間に依存(組み込みデータ型) • complexType や simpleType によって定義も可能 • use • 属性が省略可能か明記
Data Type Extension • あるデータ型をもとにして拡張することも可能 • さっきの例を使うと… <complexType name=“extendedNameType”> <sequence> <element name=“name” type=“string” /> <element name=“id” type=“int” /> </sequence> <attribute name=“alias” type=“string” use=“optional” /> <attribute name=“developer” type=“string” use=“optional” /> </complexType> <complexType name=“extendedNameType”> <extension base=“nameType”> <sequence> <element name=“id” type=“int” /> </sequence> <attribute name=“developer” type=“string” use=“optional” /> </extension> </complexType> つまり
Data Type Restriction • あるデータ型に制約をつける • さっきの例を使うと <complexType name=“restrictedNameType”> <restriction base=“nameType”> <sequence> <element name=“name” type=“string” maxOccurs=“2” /> </sequence> <attribute name=“alias” type=“string” use=“required” /> </restriction> </complexType>
about Namespace • 複数のスキーマを使ったときに名前の衝突が起こるのを避ける • 接頭辞をつけることで,どのスキーマの名前空間を使うかを指定prefix:name • 名前空間の宣言xmlns:prefix=“location” (locationはURI) • 接頭辞を省略するとデフォルトの名前空間となる(接頭辞の無い要素名はデフォルトNSを参照)
XPath • XML文書中のノードの位置を指定 • 軸・ノードテスト・述語で構成 • /a/b • aという要素の下にあるbという要素 • //b • 全要素のなかでbという要素ノードすべて • /a/@attribute • aという要素のattributeという属性ノード • //c/@attr=“XXX” • cという要素で属性attrがXXXな属性ノード
XPath(2) • //c[@attr=“XXX”] • 属性attrがXXXなcという要素 • //d[1] • XML文書中で最初に出てくるdという要素 • //d[1]/e[last()] • 最初のdという要素の中で最後のeという要素 • //e[not @attr] • 属性attrを持たないすべてのeという要素
the Role of Stylesheet • XMLには書式化の情報は含まれていない!→ スタイルシートで出力形式を決める→ 一度で何度もおいしい • スタイルシート • CSS2 (Cascading Style Sheet level 2) • XSL (eXtensible Stylesheet Language) • 変換(XSLT)と書式化(XSL-FO) • XSLT (XSL Transformation) • 異なるスキーマをもつXML文書とのやりとりにも役立つ
Summary • XMLはメタ言語 • 文書の構造はスキーマによって強化 • XMLは内容や構造を出力書式から分離 • XMLは構造化情報のデファクトスタンダード • XMLは異アプリ間の情報変換をサポート • XMLはQLにサポートされる