22
XMLの基礎

XMLの基礎 - 九州大学(KYUSHU UNIVERSITY)gospel.aid.design.kyushu-u.ac.jp/~ushiama/XML/WCD(XML).pdfXMLとは Extensible Markup Language: XML 拡張可能なマーク付け言語

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

XMLの基礎

XMLとは

Extensible Markup Language: XML

拡張可能なマーク付け言語

Hypertext Markup Language : HTML

ハイパーテキストマーク付け言語

XMLは

汎用的なデータ記述言語

なぜXMLが普及したか?

標準形式による電子データの保存・交換・再利用が可能になる

データのやりとり

Web

サーバ パーソナルコンピュータ

HTML

ホームページ

iTunes iPod

楽曲

放送局 TV

番組情報

問屋 小売店

在庫情報

楽曲ML

番組ML

在庫ML

XMLを使えば、自分でマークアップ言語(ML)を

設計できる

XMLの特徴

テキスト形式での記述(マーク付け言語)

テキストエディタで作成可能

タグ(tag)を使って、データの意味を表現

自己説明型のデータ

データの構造化

木構造

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進数)

実体参照の記述

置き換えられる文字

&lt; <

&gt; >

&amp; &

&apos; '

&quot; "

文字参照(10進)

文字

&#169; ©

&#189; ½

&#247; ÷

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>

W3CとXML

XMLの規格は誰が決めるのか?

W3C(World Wide Web Consortium)

W3Cのホスト機関

マサチューセッツ工科大学計算機科学研究所

フランス国立情報処理自動化研究所

慶應大学

W3Cで標準化を決めているもの

HTML

CSS

SVG

セマンティックWeb等