xmlの基礎 - 九州大学(kyushu...
TRANSCRIPT
XMLとは
Extensible Markup Language: XML
拡張可能なマーク付け言語
Hypertext Markup Language : HTML
ハイパーテキストマーク付け言語
XMLは
汎用的なデータ記述言語
なぜXMLが普及したか?
標準形式による電子データの保存・交換・再利用が可能になる
データのやりとり
Web
サーバ パーソナルコンピュータ
HTML
ホームページ
iTunes iPod
楽曲
放送局 TV
番組情報
問屋 小売店
在庫情報
楽曲ML
番組ML
在庫ML
XMLを使えば、自分でマークアップ言語(ML)を
設計できる
XML文書の基本構成
2つの部分から構成される
XML宣言(XML declaration)
XMLインスタンス(XML instance)
データ本体
XML要素(XML element)の集まり
XML宣言
XMLインスタンス
XML文書
<?xml version="1.0" encoding="Shift-JIS"?>
<飲食店リスト>
<飲食店 コード="001">
<店名>てん</店名>
<分類>ラーメン</分類>
</飲食店>
</飲食店リスト>
XML宣言
XML宣言の記述方法
<?xml version="バージョン番号" encoding="文字コード名" ?>
バージョン番号
1.0
XML1.1の機能が必要とされない限りXML1.0を使うことが望ましい
1.1
文字コード名 UTF-8, UTF-16 ISO/IEC 10646関連の文字コード(デフォルト)
Shift-JIS シフトJIS
EUC-JP 日本語EUC
ISO-2022-JP JIS
XML要素
XML要素の表現方法
開始タグと終了タグでデータを挟む
開始タグ
「<」と「>」で囲む
終了タグ
「</」と「>」で囲む
要素の記述方法
<要素名>要素の内容</要素名>
開始タグ 終了タグ データ
例: <店名>てん</店名>
要素の内容
要素の内容として許されるもの
テキストデータ
別の要素
テキストデータと別の要素の両方
親子関係を表す要素の記述方法
<要素a> <要素b>……</要素b> <要素c>……</要素c></要素a>
入れ子関係を保持しないとエラーになる
子要素 子要素
親要素
要素の入れ子関係の木構造による表現
<要素a> <要素b>……</要素b> <要素c>……</要素c></要素a>
要素a
要素b 要素c
<飲食店>
<店名>てん</店名>
<分類>ラーメン</分類>
</飲食店>
飲食店
店名 分類
てん ラーメン
要素名
テキスト内容
表記法
要素の属性
属性の表現方法
開始タグの中に指定する
属性値は引用符で囲む
引用符
一重引用符「'」
二重引用符「"」 <要素名 属性名="属性値">要素の内容</要素名>
複数の属性 <要素名 属性名1="属性値1" 属性名2="属性値2">要素の内容</要素名>
例:<飲食店 コード="001"><店名>てん</店名></飲食店>
例:<飲食店 コード="001" 緯度="133.xxxxx" 経度="33.xxxx">
<店名>てん</店名>
</飲食店>
図による表現
<飲食店 コード="001">
<店名>てん</店名>
<分類>ラーメン</分類>
</飲食店>
飲食店
店名 分類
てん ラーメン
要素名
テキスト内容
表記法
属性
属性値
コード 001
要素名、属性名の決まり
使える文字
先頭
アルファベット、ひらがな、カタカナ、漢字、アンダースコア(_)、コロン(:)
2文字目以降
アルファベット、ひらがな、カタカナ、漢字、数字、アクセント記号など、アンダースコア(_)、コロン(:)、ピリオド(.)、ハイフン(-)
使えない文字
半角カナ、全角英数字
大文字と小文字は区別される
ルート要素
最上位の要素
XML文書中に1つだけ(木構造になる)
<?xml version="1.0"
encoding=“UTF-8"?>
<飲食店 コード="001">
<店名>てん</店名>
<分類>ラーメン</分類>
</飲食店>
<飲食店 コード="002">
<店名>ジョリーズパスタ</店名>
<分類>パスタ</分類>
</飲食店>
<?xml version="1.0"
encoding=“UTF-8"?>
<飲食店リスト>
<飲食店 コード="001">
<店名>てん</店名>
<分類>ラーメン</分類>
</飲食店>
<飲食店 コード="002">
<店名>ジョリーズパスタ</店名>
<分類>パスタ</分類>
</飲食店>
</飲食店リスト>
練習問題①
飲食店
分類
てん ラーメン
コード
001
店名
飲食店
分類
ジョリーズパスタ
イタリア料理
コード
002
店名
飲食店
分類
ボンジュール
食堂
フランス料理
コード
003
店名
飲食店リスト
メニュー
とんこつラーメン
品名 値段
500
以下をXMLで表現せよ
品目
練習問題②
以下のXMLインスタンスを木構造で表現せよ
<施設リスト>
<施設 id="001">
<名称>福岡Yahoo!JAPANドーム</名称>
<写真 file="dome1.jpg />
<写真 file="dome2.jpg />
<分類>スポーツ施設</分類>
<イベントリスト>
<イベント >
<内容> 全国ゆるキャラフェスティバル</内容>
<期日>2012/11/29</期日>
</イベント>
<イベント>
<内容>ソフトバンクホークス開幕戦</内容>
<期日>未定</期日>
</イベント>
</イベントリスト>
</施設>
</施設リスト>
内容を含まない要素
空要素(empty element)
内容を含まない要素
空要素の記述方法
<要素名 />
<要素></要素>と表記してもよい
例:<写真 file="photo.jpg" />
例:<写真 file="photo.jpg"></写真>
実体参照と文字参照
実体参照
タグの記述に使用する文字を表現する
表現方法
&実体名;
文字参照
キーボードから入力できない文字
表現方法
&#x文字コード番号(16進数)
&#文字コード番号(10進数)
実体参照の記述
置き換えられる文字
< <
> >
& &
' '
" "
文字参照(10進)
文字
© ©
½ ½
÷ ÷
CDTAセクション
タグと見なされる文字を含むテキストデータを、タグと見なさないように指定する
CDATAセクションの記述方法
<![CDATA[タグと見なさないテキストデータ]]>
例:
<表記法>
店名は次のように記述します.
<![CDATA[<店名>てん</店名>]]>
</表記法>
要素と属性の使い分け
何を要素にして、何を属性にするか?
明確な基準はない
要素として表現する利点
下位構造を持たせることが出来る。
属性として表現する利点
データを取り出しやすい
<飲食店 コード="001">
<店名>てん</店名>
<分類>ラーメン</分類>
</飲食店>
<飲食店>
<コード>001</コード>
<店名>てん</店名>
<分類>ラーメン</分類>
</飲食店>
XHTML
XMLの企画に準拠したHTML
主な違い
要素名は小文字に統一
属性を必ず引用符で囲む
<br><hr>などは空要素として記述
必ず修了タグが必要
SGML
HTML XHTML
XML
HTML XHTML
<BODY> <body>
<font
color=red>
<font
color="red">
<br> <br />
<li>項目 <li>項目</li>