XMLとは

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 &lt;
> gt &gt;
& amp &amp;
" quot &quot;
' apos &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文書であるかどうかだけをチェックするサーバーである。

参考資料

XMLの概要と起源、関連規格

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License