セマンティック web ・ メタデータ勉強会 #2-1
DESCRIPTION
セマンティック 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 ページ記述の標準 - PowerPoint PPT PresentationTRANSCRIPT
セマンティック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 Multimed
ia 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
Valid
Well-Formed
The Tree Model of XML Documents
• 整形式の XML は木構造で表現できる– 要素の順番は重要– 属性の順番は重要ではない
Root
fireworks2fireworks1
event
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”> <extension base=“nameType”> <sequence> <element name=“id” type=“int” /> </sequence> <attribute name=“developer”
type=“string” use=“optional” />
</extension></complexType>
<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>
つまり
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 にサポートされる