XMLの意味
XMLはExtensible Markup Language(拡張可能なマークアップ言語)の略です。1998年にW3C勧告となった形式で、自分で名前を付けたタグを使ってデータを記述します。これが「拡張可能(extensible)」の意味です。HTMLと違い、XMLにはあらかじめ決められたタグがありません。商品カタログなら<product>や<price>、請求書なら<item>や<total>といったタグを使えます。
ごく小さなXML文書は次のようになります:<book id="1"><title>XML Basics</title><year>2026</year></book>。XMLはプレーンテキストなので、人が読むことができ、あらゆるプログラミング言語で処理できます。XMLはデータを保存・構造化するだけで、それ自体は何も実行しません。データが何を意味し、どう表示するかを決めるのはプログラムです。
XMLの書き方(構文ルール)
XML文書は、いくつかの厳格なルールに従う必要があります。これらのルールを満たした文書を整形式(well-formed)と呼びます:
- ほかのすべての要素を含むルート要素が、ちょうど1つあります。
- すべての要素が閉じられています:
<name>…</name>、または<br/>のような自己終了タグです。 - 要素が正しく入れ子になっています:
<b><i>…</i></b>は正しく、<b><i>…</b></i>は誤りです。 - 名前は大文字と小文字が区別されます:
<Item>と<item>は別の要素です。 - 属性値は必ず一重引用符または二重引用符で囲みます。
- テキスト中の
&と<は、&と<にエスケープします。 - 省略可能な宣言
<?xml version="1.0" encoding="UTF-8"?>を書く場合は、文書の一番先頭に置きます。
コメントは<!-- … -->と記述します。XMLの検証ツールを使えば、これらのルールを一瞬でチェックし、エラーのある行を示してくれます。
要素と属性
要素は、開始タグ、内容、終了タグで構成されます:<price>19.90</price>。要素にはテキスト、ほかの要素、またはその両方を含めることができます。属性は、開始タグの中に書く名前と値のペアです:<price currency="EUR">。
| 要素 | 属性 | |
|---|---|---|
| 例 | <color>red</color> | color="red" |
| 繰り返し | 可能 | 不可(1要素につき1回) |
| 子要素を含められる | はい | いいえ(テキストのみ) |
| 順序に意味がある | はい | いいえ |
一般的な慣習として、データそのものや、繰り返し・構造を持つ可能性のあるものには要素を使い、ID、単位、種類などのメタデータには属性を使います。
整形式のXMLと妥当なXMLの違い
整形式(well-formed)のXMLは構文ルールに従っており、パーサーはそれ以外のものを受け付けません。妥当な(valid)XMLは、整形式であることに加えて、使用できる要素や属性、その順序やデータ型を定義したスキーマにも適合しています。
- DTD(Document Type Definition、文書型定義)は、XML 1.0に組み込まれた最初のスキーマ言語です。
のようなエンティティを宣言することもできます。 - XSD(XML Schema Definition)はそれ自体がXMLで記述されており、日付や小数などのデータ型をサポートしています。CFDI、NF-e、UBLなどの電子インボイス形式は、XSDスキーマを公開しています。
XML名前空間
タグ名は誰でも自由に作れるため、2つの語彙が同じ名前を使うことがあります。たとえば、本のタイトルを表す<title>と、人の肩書きを表す<title>です。名前空間は、名前をURIに結び付けることでこれらを区別します。xmlns:cfdi="http://www.sat.gob.mx/cfd/4"はプレフィックスcfdiを宣言するため、<cfdi:Comprobante>はメキシコのCFDI 4.0の語彙に属します。プレフィックスなしのxmlns="…"で宣言するデフォルト名前空間は、その内側にあるプレフィックスのないすべての要素に適用されます。URIは単なる識別子であり、そこから何かがダウンロードされることはありません。
XML・JSON・HTMLの違い
| XML | JSON | HTML | |
|---|---|---|---|
| 用途 | 構造化データや文書の保存・交換 | データ交換(特にWeb API) | Webページの表示 |
| タグ名・キー名 | 自分で定義 | 自分で定義 | HTML標準で決められている |
| データ型 | テキスト(スキーマで型を定義しない限り) | 文字列、数値、真偽値、null、配列、オブジェクト | テキスト |
| 属性 | あり | なし | あり |
| コメント | あり | なし | あり |
| スキーマ | DTD、XSD | JSON Schema | – |
| 構文エラー | パーサーが拒否 | パーサーが拒否 | ブラウザが修復 |
JSONは記述が短く、JavaScriptのオブジェクトにそのまま対応するため、ほとんどのWeb APIはJSONに移行しました。一方XMLは、テキストとマークアップが混在する文書、名前空間が必要なデータ、スキーマによる厳密な検証が求められる場面で今も強みを発揮します。税務当局や出版社、オフィス文書の形式が今もXMLを採用しているのはそのためです。
XMLファイルとは?開き方を解説
.xmlファイルは、XML文書を含むプレーンテキストファイルで、通常はUTF-8でエンコードされています。テキストなので、Windowsのメモ帳、Macのテキストエディット、VS Codeのようなコードエディタなど、どのテキストエディタでも開けます。ChromeやFirefoxのウィンドウにXMLファイルをドラッグするとツリー形式で表示され、ExcelではXMLデータをスプレッドシートに取り込めます。
拡張子が.xmlでなくても、XMLを使っているファイルは数多くあります。.svg画像、.rssフィード、.xsdスキーマ、.xslスタイルシート、.NETの.configファイル、そしてXMLとして保存できるmacOSの.plistファイルなどです。Word、Excel、PowerPointのファイル(.docx、.xlsx、.pptx)は、多数のXMLファイルを収めたZIPアーカイブです。
XMLの主な用途
- サイトマップ:
sitemap.xmlは、Webサイトにどんなページがあるかを検索エンジンに伝えます。 - RSS・Atomフィード:ニュースサイト、ブログ、ポッドキャストは更新情報をXMLで配信しています。
- SVG:Web上のベクター画像はXML文書です。
- Officeファイル:Office Open XML(DOCX、XLSX、PPTX)とOpenDocument(ODT、ODS)は、XMLをまとめたZIPパッケージです。
- 電子インボイス:メキシコのCFDIやブラジルのNF-eは、電子署名と承認を経て初めて法的に有効になるXMLファイルです。UBLは、欧州をはじめ世界各地のPeppol電子インボイスを支えるXML形式です。
- SOAP Webサービス:銀行、決済サービス事業者、行政システムは、WSDLファイルで定義されたXMLメッセージをやり取りしています。
- Androidアプリ:レイアウト、文字列リソース、
AndroidManifest.xmlはXMLで記述されます。 - 設定ファイル:Mavenの
pom.xml、.NETのweb.configをはじめ、多くのビルド設定やサーバー設定に使われています。
よくある質問
XMLは何の略ですか?
Extensible Markup Language(拡張可能なマークアップ言語)の略です。「Extensible(拡張可能)」は独自のタグを定義できること、「Markup(マークアップ)」はデータをタグで囲んで構造を記述することを意味します。
XMLはプログラミング言語ですか?
いいえ。XMLはデータ形式であり、情報を記述・構造化することはできても、計算を行うことはできません。XMLの検索や変換には、XPathやXSLTといった関連技術が使われます。
XMLは今でも使われていますか?
はい。多くのWeb APIではJSONがXMLに取って代わりましたが、サイトマップ、RSSフィード、SVG、オフィス文書、Androidのレイアウト、SOAPサービス、そして多くの国の電子インボイスでは、今もXMLが標準です。
最終更新日: