セマンティック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ページ記述の標準 – 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” ?> ← XML宣言 <!DOCTYPE event SYSTEM “event.dtd” > ← 文書型宣言 <event> <fireworks1> <name>足立の花火大会</name> <place>荒川河川敷</place> <date>2005.07.28</date> </fireworks1> </event> 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”> <complexType <sequence> name=“extendedNameType”> <element name=“name” <extension base=“nameType”> type=“string” /> <sequence> <element name=“id” type=“int” /> <element name=“id” type=“int” /> </sequence> </sequence> <attribute name=“alias” <attribute name=“developer” type=“string” type=“string” つまり use=“optional” /> use=“optional” /> <attribute name=“developer” </extension> type=“string” </complexType> use=“optional” /> </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にサポートされる
© Copyright 2024 ExpyDoc