XML ファイル形式とは?
.xml ファイルは、W3C によって開発されたプレーンテキスト標準である Extensible Markup Language 形式でデータを保存します。XML ファイルはあらゆるデータ構造をプレーンテキストで表現できるため、インターネット上のアプリケーション間でのデータの保存、共有、転送に適しています。
XML はマークアップ構造(ネストされたタグと属性)を使用し、エンコードプロセスが機械可読かつ人間可読なドキュメントを作成するために従うべきルールを定義します。これは SGML (Standard Generalized Markup Language) をより使いやすく実装したものとして設計され、ウェブ向けに簡素化されました。ファイルは通常、宣言 <?xml version="1.0" encoding="UTF-8"?> で始まり、MIME タイプは application/xml です。
XML ファイルは Unicode エンコーディング(デフォルトは UTF-8)を使用し、標準的なテキストエディタで開いて編集できます。この形式は自己記述的であり、各要素に名前が付けられ、明確な階層構造内にネストされているため、専用のソフトウェアがなくてもデータを検査できます。ただし、プログラムで処理したりクエリを実行したりするには、パーサーや XPath などのクエリ言語が必要です。
XML は多くの点で .HTML と似ており、どちらの形式もマークアップ言語を使用して構造化されたコンテンツを表現します。HTML がウェブページの表示とインタラクションに焦点を当てているのに対し、XML はデータそのものに関連してコンテンツを記述します。これら 2 つの形式は、多くのウェブアプリケーションで併用されています。また、XML は .XSD バリデーションスキーマ、 .XSL 変換スタイルシート、 .RSS シンディケーションフィードなどの関連標準の基盤としても機能します。
セキュリティと安全性
リスク: MEDIUMXML ファイルはプレーンテキストであり、実行可能コードを含まないため、読み取りは安全です。本当のリスクはファイルではなく「パーサー」にあります。XML 外部エンティティ (XXE) 攻撃は、<!DOCTYPE>/<!ENTITY> 宣言を悪用してローカルファイルを読み取ったり、ネットワークリクエストをトリガーしたりします。また、「billion laughs」エンティティ展開はメモリを枯渇させる(サービス拒否攻撃)可能性があります。これらは、外部エンティティと DTD 処理が有効な状態でソフトウェアが信頼できない XML をパースする場合にのみ問題となります。現代のパーサーはこれらをデフォルトで無効にしています。単に .xml を開いて読むだけのエンドユーザーにとって危険はありません。注意が必要なのは、信頼できない XML を処理する開発者です。また、「data.xml」のように見えて実際には別のファイル名が変更されただけのファイルにも注意してください。
形式の詳細
概要XML ファイルを開くプログラム
技術的詳細
詳細仕様| ファイルエンコーディング | Unicode のみ。宣言がない場合は UTF-8 がデフォルト。UTF-16 および UTF-32 もサポートされており、XML プロログで宣言する必要があります |
| MIME タイプ | `application/xml`(RFC 7303 によるプライマリ)。レガシー互換性のために `text/xml` も受け入れられます。特定のダイアレクトは独自のタイプ(例: `application/rss+xml`)を登録する場合があります |
| ファイルシグネチャ | 固定されたバイナリマジックナンバーはありません。ファイルは通常、オプションの XML 宣言 `<?xml`(16進数 `3C 3F 78 6D 6C`)で始まります。UTF-8 BOM (`EF BB BF`) または UTF-16 BOM (`FF FE` / `FE FF`) が先行する場合があります |
| ドキュメント構造 | 厳格な階層構造:ルート要素は正確に 1 つ。子要素のネストは無制限。開始タグには名前付きの引用符で囲まれた属性を持たせることができます。ツリー全体が「整形式」である必要があります |
| 整形式ルール | すべてのタグは閉じるか自己終了させる必要があります。要素は交差してネストしてはなりません。属性値は引用符で囲む必要があります。5 つの定義済みエンティティ (&, <, >, ", ') が予約文字を処理します |
| バリデーションメカニズム | DTD (Document Type Definition - インラインまたは外部の `.dtd` ファイル、古い標準) および XSD (XML Schema Definition - XML 自体で記述された `.xsd` ファイル、より豊かな型システムを持つ)。Schematron はルールベースのバリデーションを提供します |
| 名前空間サポート | `xmlns` および `xmlns:prefix` 宣言により、要素名と属性名を URI に結び付け、複数のソースからの語彙を組み合わせる際の衝突を防ぎます |
| CDATA セクション | `<![CDATA[...]]>` ブロックを使用すると、<、>、& を含む生のテキストをエンティティエスケープせずに記述できます。HTML 断片やスクリプトコードの埋め込みに便利です |
| 処理命令 | `<?target instruction?>` 構文は、XML データモデルの外側にアプリケーション固有のディレクティブ(例: `<?xml-stylesheet type="text/xsl" href="style.xsl"?>`)を埋め込みます |
| クエリ言語 | XPath 1.0/2.0/3.1 はドキュメント内の個々のノードを指定します。XQuery は XML データセットに対して SQL スタイルのクエリを提供します。どちらも W3C 標準です |
| XSLT 変換 | `.xml` ファイルは、ソースドキュメントと `.xsl` または `.xslt` スタイルシートをマージする XSLT プロセッサによって、実行時に HTML、プレーンテキスト、または他の XML 語彙に変換できます |
| コメント構文 | `<!-- text -->` コメントはタグの外側であればどこにでも記述できます。コメント本文内に連続したハイフンを使用することは禁止されています。コメントは XML データモデルからは除外されます |
| 改行の正規化 | 準拠したパーサーは、処理前に \r\n および単独の \r シーケンスを \n に正規化し、プラットフォーム間で一貫した改行動作を保証します |
| エンティティ宣言 | 名前付きエンティティ (&name;) および数値文字参照 (&#nnnn; 10進数または &#xHHHH; 16進数) は、任意の Unicode コードポイントを埋め込みます。カスタムエンティティは DTD で宣言できます |
| プロログ構造 | XML ドキュメントは、オプションの XML 宣言、オプションの DOCTYPE 宣言、オプションの処理命令とコメント、それに続く正確に 1 つのルート要素で構成されます |
| ダイアレクトエコシステム | XML は、XHTML, SVG, RSS, Atom, DOCX (Office Open XML), EPUB, KML、および Android, Maven, Spring, Java EE で使用される設定形式の基本構文です |
| リリース日 | 1998 (XML 1.0 W3C Recommendation, February 10, 1998) |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | www.w3.org |
XML の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。XML ファイルについて最初の質問をしてみましょう。