XMLとは
- XML(Extensible Markup Language) は「拡張可能なマークアップ言語」となる。
- XMLはW3Cによって1998/02に勧告されている。XMLの仕様はSGMLのサブセットとなっている。
- SGMLはメタ言語であり、そのサブセットであるXMLもまたメタ言語となる。HTMLはSGMLによって定められた言語です。
- XHTML(Extensible HyperText Markup Language)はHTMLをXMLの文法規則で再定義したものです。
W3CとXML規格
W3CのウェブサイトではXMLに関するさまざまの規格そ策定している。
HTMLとXMLの比較
タグの意味
- HTMLのタグはデータの表現方法(スタイル)を表す。
- XMLは独自でタグを定義することができ、タグがデータの内容を表す。
データの階層構造
- HTMLはデータの階層構造を示すことができない。
- XMLは階層構造のデータを扱うことができる。
データの用途
- HTMLはWEBブラウザでの表示を目的とする言語である。
- XMLはWEBブラウザに表示させるだけではなく、他のアプリケーションからも利用するという目的がある。データフォーマットとしての役割も果たす。
プログラムの処理効率
- HTMLはデータの並べ順を統一するなど、ある程度のルールを決めないと目的のデータを取り出すことが難しくなる。
- XMLは、タグを検索キーとして目的のデータを取り出すことができる。
XMLの特徴
- 属性や要素の名前を自由に決めることができ、階層構造でデータを表現できる。データの意味や構造を保持したままデータを保存できるため、データフォーマットとして使用できる。
- テキストデータで記述できる。特定のアプリやOSに依存しないため、異機種間システム連携のデータフォーマットとして使用できる。
- 転送プロトコルを定めていない。
XML文書の構造
XML宣言:バージョン、エンコーディングを指定する。
<?xml version="XML規格のバージョン番号" encoding="文字エンコーディング名" standalone="外部サブセット参照の有無{yes/no}" ?>
<?xml version="1.0" encoding="Shift_Jis" standalone="no" ?>
version(必須):XML文書を記述するために使用したXML規格のバージョンを指定する。
encoding(省略可):省略した場合は、「UTF-8」または「UTF-16」で記述されているものとみなされる。日本語関連:Shift_JIS、EUC-JP、ISO-2022-JP
standalone(省略可):外部ファイルを参照する場合は「no」を指定し、参照することがなければ「yes」を指定する。デフォルトで「no」が設定される。
※ XML宣言は小文字で記述しなくてはならず、記述する順序も決まっている。
文書型宣言(DOCTYPE宣言):DTD(Document Type Definition:文書型定義)を内部に記述したり、または参照して指定する
XMLファイル内に定義する方法
<?xml version="1.0" encoding="Shift_Jis" standalone="no" ?> <!DOCTYPE EMPLOYEES [ <!ENTITY DEPT1 "IT Education Services Dept."> ]> ......
外部ファイルとして定義し参照する方法
<?xml version="1.0" encoding="Shift_Jis" standalone="no" ?> <!DOCTYPE sales SYSTEM "sales.dtd">
XMLインスタンス:実際のXMLデータを記述するものであり、XML文書の本体となる、XMLインスタンスは省略不可。
要素
<要素名>要素内容</要素名> ※ 大文字と小文字が区別する。
<?xml version="1.0" encoding="Shift_Jis" standalone="no" ?> <book> <name>WebにおけるXML活用方法</name> <price>2000</price> </book>
属性:要素に付加することのできる情報
<要素名 属性名="属性値">要素内容</要素名> ※属性値は必ず「'」或いは「"」で囲む。
- 属性名は開始タグの中に記述する。
- 属性は1つの要素に複数記述できる。但し、同じ名前の属性を複数記述することはできない。
- 属性名も大文字、小文字を区別する。
- 属性名には要素名と同じ名前を指定できる。
空要素:子要素、或いは要素内容を持たない要素
<要素名></要素名> 或いは <要素名/> ※通常、空要素は属性を持たせて使用する。
<style page="350" size="B5"/>
XML文書で使用できる文字
名前に使用できる文字
- 名前の先頭で使える文字
- アルファベット、ひらがな、全角カタカナ、漢字
- 半角英字、アンダースコア(_)、コロン(:)
- 2文字目以降で使える文字
- 上記、先頭で使える文字
- 半角数字
- 結合文字(アクセント記号など)
- エクステンダー(「々」、「-」(長音)等)
- ピリオド(.)
- ハイフン(-)
- 半角カタカナ、全角数字「0~9」、全角英字は使用できない
- 「xml」は予約語となっているので、名前の先頭には使用できない
- 「:」は使用できるが、名前空間というXMLの規格を利用したXMLデータを記述する際に使われるので、使用しないほうがいい。
文字の置き換え:実体参照
実体参照表
置き換える文字(実体) | 実体名 | 実体参照 |
---|---|---|
< | lt | < |
> | gt | > |
& | amp | & |
" | quot | " |
' | apos | ' |
文字の置き換え:文字参照
&#文字コード; (文字コードを10進数で表した場合)
&#x文字コード; (文字コードを16進数で表した場合)
※ ISO/IEC10646の文字コードを使用する。
空白文字
- 半角スペース
- 改行文字
- 復帰文字
- タブ
ツリー構造(Tree)
- XMLでは、最上位の要素をルート要素(root element)と呼ぶ。
- XMLインスタンスには、ルート要素が必ず1つだけ存在し、2つ以上のルート要素があるとエラーになる。
- ルート要素を文書要素と呼ぶこともある。
特別なタグ
コメント
<!-- コメント内容 -->
- XML宣言の前とマークアップの中に記述することはできない
- コメント内容の中に「—」を記述することもできない
CDATAセクション
CDATAセクションは特別な文字に対して範囲を指定して「この範囲であれば通常の文字として扱うようにしなさい」とするものである。
<![CDATA[テキストデータ]]>
処理命令
<?処理命令ターゲット 処理内容?>
<?xml-stylesheet type="text/xsl" href="xsltsample.xsl">
整形式XML文書と妥当なXML文書
整形式XML文書(well-formed XML document):XMLで規定している規則に従って記述されている文書である。
妥当なXML文書(valid XML document): DTD等の文書型定義が記述されていて、その定義に従って要素や属性などが記述されているXML文書である。妥当なXML文書は必ず整形式XML文書である。
XMLサーバー
整形式XML文書なのか妥当なXML文書なのかは、XML文書を解析するソフトウエアであるXMLサーバーによって検証される。
- XML文書が整形式XML文書かどうかチェックする。
- XML文書が妥当なXML文書かどうかチェックする。
- チェックを終えたXML文書をメモリ中に展開し、他のアプリケーションに渡す
検証XMLサーバー:妥当なXML文書であるかどうかをチェックするサーバーである。
非検証XMLサーバー:整形式XML文書であるかどうかだけをチェックするサーバーである。