最終更新日:2025年3月25日

タイトル - XMLとは何か: 総合ガイド

XMLとは何か?

XML (Extensible Markup Language) はデータの保存、伝送、再構築に使用されるマークアップ言語およびファイル形式です。情報を人間にも機械にも読み取りやすい形で符号化するための構造化されたアプローチを提供します。

XMLの主な特徴

1. オープン標準によって定義

  • 1998年にWorld Wide Web Consortium (W3C) によって XML 1.0 Specification のもとで確立。
  • データが構造化され解釈しやすくなるよう厳格なルールに従う。

2. デザイン目標

  • XMLは異なるプラットフォームでのシンプルさ、汎用性、使いやすさを念頭に置いて設計されています。
  • テキストベースの形式を使用し、読みやすく編集可能です。

3. Unicodeサポート

  • XMLはUnicodeをサポートしており、複数の言語でテキストを保存および処理できます。

4. 多用途性

  • 元々は文書向けに作られましたが、XMLは現在、Webサービス、API、設定ファイル などさまざまなドメインでデータ表現に広く使用されています。

5. スキーマとAPI

  • XMLの構造はDocument Type Definition (DTD)XML Schema (XSD)、またはRelax NGで定義できます。
  • DOM (Document Object Model)SAX (Simple API for XML) などのさまざまなAPIがXML処理を可能にします。

6. XMLの一般的な用途

  • 異なるシステム間のデータ交換(例:Webサービス、API)。
  • ソフトウェアアプリケーションの設定ファイル
  • 構造化情報の保存(例:RSSフィード、SVGグラフィック、DOCXのような文書形式)。
  • Web開発(例:XHTML、SOAP、AJAXベースのアプリケーション)。

XMLの概要

1. XMLの主な目的:シリアル化

XMLにおけるシリアル化とは:

  • データを構造化フォーマットで保存すること。
  • 異なるシステム間でデータを伝送すること。
  • 使える形でデータを再構築すること。

2つのシステムが情報を交換する必要があるとき、XMLは相互運用性のための標準化されたファイル形式を提供します。これは構造化データ交換のための**「リンガフランカ」**として機能します。

2. XMLはマークアップ言語として

XMLはマークアップ言語であるため:

  • データにタグを付けて明確な構造を提供します。
  • 情報を階層的に組織化します。
  • データをメタデータで分類します。

例:

<book>
    <title>XML Basics</title>
    <author>John Doe</author>
</book>

ここで、<book><title><author>はデータ要素を定義するタグです。

3. XMLスキーマ (XSD) とバリデーション

XMLスキーマ (XSD) は、XML文書の構造ルールを定義します。

XML文書には次の要件があります:

  • 整形式 → 基本的な構文ルールに従う(正しいネスティング、適切な終了タグ)。
  • 妥当性 → スキーマルールに準拠する(必須要素、正しいデータ型)。

XSDルールの例:

<xs:element name="title" type="xs:string"/>

これにより、<title>には必ず文字列値が含まれることが保証されます。

4. XMLメディアタイプ (RFC 7303)

IETF RFC 7303 はデータ伝送のためのXMLメディアタイプを定義しています:

  • application/xml → 標準のXMLデータ。
  • application/xml-external-parsed-entity → 解析されたXMLエンティティ。
  • application/xml-dtd → XML DTD文書。

XMLベースの形式には**+xml**サフィックスが使用されます(例: SVG イメージのimage/svg+xml)。

5. ネットワークアプリケーションにおけるXML (RFC 3470 / IETF BCP 70)

IETF BCP 70 (RFC 3470) は、ネットワークベースのアプリケーションにおけるXMLの使用に関するベストプラクティスを示し、システム間でのシームレスなデータの相互運用性を保証します。


1. XMLの適用例

XMLは、インターネットを介したデータ交換に設計された柔軟なマークアップ言語です。その構文は多くの文書形式や通信プロトコルに影響を与え、多くの産業において基盤技術となっています。

一般的なXMLベースの形式:

  • Webフィード: RSS, Atom
  • オフィス文書: Office Open XML, OpenDocument
  • グラフィックと3Dモデル: SVG, COLLADA
  • Web技術: XHTML
  • データ交換プロトコル: SOAP, XMPP
  • AJAX: 非同期データ交換にXMLを使用

XMLを使用する業界標準:

  • ヘルスケア: HL7 (Health Level 7)
  • 旅行業界: OpenTravel Alliance
  • 金融: FpML (Financial products Markup Language)
  • 不動産・モーゲージ: MISMO
  • 政府データ交換: National Information Exchange Model

科学におけるXML:

気象学では、XMLはIWXXM規格に基づき運用気象データの表現に使用されています。同様に、Darwin Information Typing Architecture (DITA) は出版で広く使用されているXML標準です。


2. XMLの主要用語

XML文書を効果的に操作するためには、コア用語を理解することが重要です。

文字

XML文書はUnicode文字のシーケンスです。XML 1.1では、Null文字 (U+0000) を除くほぼすべてのUnicode文字が許可されています。

プロセッサとアプリケーション

  • **XMLプロセッサ(またはパーサー)**がXMLのマークアップを読み込み、分析します。
  • アプリケーションはプロセッサから構造化データを受け取り、処理を行います。

マークアップとコンテンツ

XMLは文字をマークアップとコンテンツに分けます:

  • マークアップ: 要素、属性、エンティティを含む(例:<tag>&amp;)。
  • コンテンツ: 要素内の実際のデータ。
  • CDATAセクション: マークアップとして解析されるべきでないテキストを <![CDATA[ ... ]]> で囲んで記述する。

タグと要素

  • タグ< > で囲まれたマークアップ構造。
    • <section> (開始タグ)
    • </section> (終了タグ)
    • <line-break /> (空要素タグ)
  • 要素: タグで定義された論理コンポーネント。
    • 例: <greeting>Hello, world!</greeting>

属性

属性は名前と値のペアを用いて要素にメタデータを提供します。例:

<img src="image.jpg" alt="Description" />
  • src="image.jpg"alt="Description"<img> 要素の属性です。

3. XMLにおける文字とエスケープ

XMLで有効なUnicode文字

XML文書は特定のUnicode文字のみを許可し、適切な解析を保証します。

XML 1.0で許可される文字:

  • 制御文字:
    • U+0009 (タブ)
    • U+000A (改行)
    • U+000D (復帰)
  • テキスト文字:
    • U+0020–U+D7FF
    • U+E000–U+FFFD
    • U+10000–U+10FFFF

XML 1.1の拡張:

  • 全てのU+0001–U+001F制御文字を許可するが、エスケープする必要がある。
  • U+0000 (Null文字) は禁止のまま。

4. XMLにおけるエンコーディング

一般的なXMLエンコーディング:

XMLはUnicodeベースのエンコーディングをサポートします。

  • UTF-8 (推奨デフォルト)
  • UTF-16 (すべてのXMLパーサがサポートする必要がある)
  • ASCII, ISO-8859-X (レガシーエンコーディング)

XMLにおけるエンコーディング宣言:

XMLヘッダーでエンコーディングを指定できます:

<?xml version="1.0" encoding="UTF-8"?>
  • エンコーディングが指定されていない場合、UTF-8が仮定されます
  • UTF-16 は正しい検出のために BOM (バイト順マーク) を必要とします。

5. XMLの特殊文字のエスケープ

XMLの構文は特定の文字を予約しているため、競合を避けるためにエスケープする必要があります。

事前定義されたXMLエンティティ:

文字エスケープ形
< (小なり)&lt;I &lt;3 XMLI <3 XML
> (大なり)&gt;x &gt; yx > y
& (アンパサンド)&amp;AT&amp;TAT&T
' (シングルクォート)&apos;"O&apos;Reilly"O’Reilly
" (ダブルクォート)&quot;She said &quot;hello&quot;She said “hello”

数値文字参照:

入力できない特殊文字には数値参照を使用します:

  • 10進数:
    &#20013;  <!-- 漢字「中」 -->
    
  • 16進数:
    &#x4E2D;  <!-- 漢字「中」 -->
    
  • 例:
    <message>I &lt;3 J&#xF6;rg</message>
    
    表示されるもの: I <3 Jörg

バイナリデータの取り扱い:

XMLは生のバイナリデータをサポートしていません。代わりに、Base64エンコーディングを使用します。


6. XMLのコメント

XMLコメントの構文:

<!-- This is a valid XML comment -->

XMLコメントのルール:

  • コメントはXML宣言の前に出現不可。
  • コメント内に--(ダブルハイフン)を含めることはできません。
  • コメント内のエンティティ参照は無視されます。

例:

<!-- This is a comment with < and & symbols -->

結論

XMLは構造化データ交換のための不可欠な技術であり、Webフィード、オフィス文書、科学データ、業界標準を支えます。主要なXML用語、エンコーディングルール、およびエスケープメカニズムを理解することで、異なるシステムで正常に機能する整形式のXML文書を保証します。

文字エンコーディングとエスケープのベストプラクティスを遵守することで、パースエラーを回避し、XMLベースのアプリケーションの互換性を保証できます。