データベースシステム特論
XML
の概要
• XML (Extensible Markup Language)
• ISO
の
SGML (Standard Generalized Markup
Language)
をベースにインターネット上でのデー
タ交換を意識して設計された
• W3C (World Wide Web Consortium)
で
XML
1.0
として勧告
http://www.w3.org/TR/REC-xml
XML
記述の例
<?xml version="1.0" encoding="Shift_JIS"?>
<booklist>
<book id="Kobe:XML">
<title>XML
入門
</title>
<author>
神戸 太郎
</author>
<author>
兵庫 次郎
</author>
<publisher>
六甲出版
</publisher>
<price unit="yen">2000</price>
</book>
<book id="Hyogo:Java">
<title>Java
入門
</title>
<author>
兵庫 次郎
</author>
<publisher>
灘出版
</publisher>
<price unit="yen">1500</price>
<image ref="java_nymon.jpg"/>
</book>
</booklist>
XML
の特徴
•
テキスト形式で記述
–
文字コードの問題も解消されている
•
タグ
(tag)
を利用
–
タグは入れ子にできる
–
タグ名は自由に決められる
–
タグに属性
(attribute)
を付加できる
•
構文を規定できる
–
スキーマ言語
(DTD, XML Schema, Relax
NG)
XML
文書の構造
XML
文書は以下から構成される.
•
文書の前書き
(document prolog)
–
XML
宣言
<?xml version="1.0" encoding="Shift_JIS"?>
–
文書型宣言
(document type declaration,
省
略可
)
•
文書要素
(document element)
–
ルート要素
XML
宣言
<?xml version="1.0" encoding="Shift_JIS"?>
•
encoding
で
XML
文書の文字コードを指定する.
省略していれば
UTF-8
または
UTF-16
.
–
ISO-2022-JP (JIS)
–
Shift_JIS (
シフト
JIS)
–
EUC-JP (
日本語
EUC)
–
UTF-8 (Unicode
の
UTF-8 encoding)
–
UTF-16 (Unicode
の
UTF-16 encoding)
•
standalone
で外部に宣言が置かれているかどう
かを指定する.
文書型宣言
(document type declaration)
<!DOCTYPE
booklist
#
ルート要素型の指定
SYSTEM "booklist.dtd"
#
外部
DTD
の参照
[
<!ENTITY nada "
灘出版
">
#
実体宣言
]
>
• DTD
については後述.
•
実体宣言
(entity declaration)
により,
実体参照
(entity reference)
で
実体
(entity)
を文書中に挿
入することができる
(
実体参照の例
: &nada;)
.
文書要素
(document element)
• (
整形式の
)XML
文書にはちょうど一つの文書要
素があり,
ルート要素
と呼ばれる.
•
文書要素の構文
–
開始タグ
と
終了タグ
を含むコンテナ要素の構文
<
タグ名 属性
1
属性
2 ...>
内容
</
タグ名
>
内容
(content)
は,要素あるいは文字データ
(
空白や改行も含まれる
)
の並びである.
–
空要素
の構文
<
タグ名 属性
1
属性
2 .../>
文書要素
(
続き
)
•
開始タグ中に複数の属性を記述できる.
–
属性
(attribute)
の構文
属性名
="
属性値
"
–
属性名が同じものがあってはならない.
–
属性の表れる順序を区別しないのが通常の利
用方法である.
•
タグ名や属性名には漢字等を用いることができる.
–
-, _, .
以外の記号を用いることはできない.
–
:
は,名前空間
(
後述
)
の指定のために用いる
ことができる.
実体
(entity)
•
実体の種類
–
パラメータ実体
: DTD
中で利用
(
後述
)
–
一般実体
•
実体宣言
–
内部実体
:
宣言中に記述
<!ENTITY foo "<foo>bar</foo>">
–
外部実体
: XML
文書ファイルや
URL
を指定
実体
(
続き
)
•
文字参照
–
定義済み文字実体の参照
(
例
: &)
–
Unicode
による文字実体の参照
(
例
: ç)
•
実体参照
–
内部実体の場合,宣言した内容が挿入される
(
例
: &foo;)
–
外部実体の場合,その
XML
文書の内容が挿
入される
(
例
: &part1;)
–
置き換えられたテキストにさらに実体参照が
含まれている場合は,さらに置き換えが行わ
れる
その他のマークアップ
•
コメント
<!--
コメント
-->
•
CDATA
セクション
<![CDATA[&
や
<
を含むことができるテキスト
]]>
–
マークアップを含まないテキストの記述
–
パースされない
•
処理命令
<?
処理名 データ
?>
XML
の木構造
<?xml version="1.0" encoding="Shift_JIS"?>
<booklist>
<book id="Kobe:XML">
<title>XML
入門
</title>
<author>
神戸 太郎
</author>
<author>
兵庫 次郎
</author>
<publisher>
六甲出版
</publisher>
<price unit="yen">2000</price>
</book>
<book id="Hyogo:Java">
<title>Java
入門
</title>
<author>
兵庫 次郎
</author>
<publisher>
灘出版
</publisher>
<price unit="yen">1500</price>
<image ref="java_nyumon.jpg"/>
</book>
</booklist>
XML
の木構造
(
続き
1)
DOMEcho.java
による木構造の表示
(
空白テキストは省略
)
ELEM: nodeName="booklist" ELEM: nodeName="book"
ATTR: nodeName="id" nodeValue="Kobe:XML"
TEXT: nodeName="#text" nodeValue="Kobe:XML" ELEM: nodeName="title"
TEXT: nodeName="#text" nodeValue="XML 入門" ELEM: nodeName="author"
TEXT: nodeName="#text" nodeValue="神戸 太郎" ELEM: nodeName="author"
TEXT: nodeName="#text" nodeValue="兵庫 次郎" ELEM: nodeName="publisher"
TEXT: nodeName="#text" nodeValue="六甲出版" ELEM: nodeName="price"
ATTR: nodeName="unit" nodeValue="yen" TEXT: nodeName="#text" nodeValue="yen" TEXT: nodeName="#text" nodeValue="2000"
XML
の木構造
(
続き
2)
ELEM: nodeName="book"
ATTR: nodeName="id" nodeValue="Hyogo:Java"
TEXT: nodeName="#text" nodeValue="Hyogo:Java" ELEM: nodeName="title"
TEXT: nodeName="#text" nodeValue="Java 入門" ELEM: nodeName="author"
TEXT: nodeName="#text" nodeValue="兵庫 次郎" ELEM: nodeName="publisher"
TEXT: nodeName="#text" nodeValue="灘出版" ELEM: nodeName="price"
ATTR: nodeName="unit" nodeValue="yen" TEXT: nodeName="#text" nodeValue="yen" TEXT: nodeName="#text" nodeValue="1500" ELEM: nodeName="image"
ATTR: nodeName="ref" nodeValue="java_nyumon.jpg"