XML
XML
概要(サマリー)
XML(Extensible Markup Language / 拡張可能なマークアップ言語)は、データの構造をタグを使って自由に定義できるマークアップ言語である。
HTMLのようにあらかじめ決められたタグを使うのではなく、自分たちの目的に応じて「<name>」や「<price>」といったタグを新しく作れるのが最大の特徴である。主に異なるシステム間でデータをやり取りする(データ交換)や、設定情報を保存するために広く使われている。
詳細解説
XMLとは何か
XMLは、人間にもコンピュータにも読みやすい形式でデータを整理・保存するためのルールである。
マークアップ言語と呼ばれる通り、テキストデータを特定のタグ(< >で囲まれた記号)で囲むことで、データの意味や構造を表現する。例えば、書籍の情報を管理する際に、どの部分が「タイトル」で、どの部分が「著者」なのかをタグによって明確に区別できる。
タグを自由に作成できる「拡張性」
XMLの最大の特徴は「拡張性(Extensible)」である。
同じマークアップ言語であるHTMLでは、<h1>は「見出し」、<p>は「段落」というように、使えるタグとその意味が世界共通の規格で決まっている。一方、XMLにはそうした決まったタグが存在しない。開発者が「このデータには <isbn> というタグが必要だ」と考えれば、その場で新しいタグを自由に定義して使うことができる。
XMLの基本構文ルール
XMLを記述する際には、コンピュータが正しくデータを解析(パース)できるように、HTMLよりも遥かに厳格なルールを守る必要がある。主なルールは以下の通りである。
- ルート要素は必ず1つにする:全体を囲む最外層のタグ(ルート要素)が必ず1つだけでなければならない。
- 閉じタグの省略禁止:開始タグ(例:
<title>)には、必ず対応する閉じタグ(例:</title>)が必要である。 - 大文字・小文字の区別:
<Book>と<book>は全く別のタグとして扱われる。 - タグのネスト(入れ子)を正しく行う:
<a><b></a></b>のような交差した記述は認められず、必ず<a><b></b></a>のように入れ子を完結させる必要がある。
XMLの記述例
以下は、書店で扱う書籍のデータをXML形式で表現した具体的なコード例である。
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="programming">
<title lang="ja">ゼロから始めるJavaScript</title>
<author>山田太郎</author>
<price>2500</price>
</book>
<book category="design">
<title lang="ja">Webデザインの基本ルール</title>
<author>佐藤花子</author>
<price>3000</price>
</book>
</bookstore>
このコードでは、最外層の <bookstore> がルート要素であり、その中に複数の <book> 要素が入れ子になっている。書籍ごとにタイトル・著者・価格といった属性やテキストデータが整理されていることが一目でわかる。
XMLとHTMLの目的の違い
XMLはSGMLをもとに設計された言語であり、歴史的なHTMLもSGMLとの関係を持つ。ただし、現在のHTMLとXMLは構文規則や目的が異なる。
- HTMLの目的:Webページの見出し、段落、ナビゲーションなど、文書の意味と構造をブラウザへ伝える。
- XMLの目的:データが「何を意味しているか(構造や意味)」を保持し、システム間で受け渡す。
そのため、XML自体にはデータを画面に綺麗にレイアウトして表示する機能はない。
XMLが使われる主な場面
現在、データ交換の形式としてはJSONが主流になっているが、XMLも以下のような多くの重要な技術で現役で使用されている。
- RSS / Atomフィード:ブログやニュースサイトの更新情報を配信する仕組み。
- SVG(Scalable Vector Graphics):拡大しても画質が荒くならないベクター画像形式。実体はXML形式のテキストデータである。
- Officeソフトのファイル形式:Microsoft Officeの拡張子(
.docxや.xlsx)のファイルの中身は、複数のXMLファイルをZIPで圧縮したものである。
AIコーディングとの関係
AIはXMLやXSDの雛形作成を支援できるが、出力がスキーマや業務仕様に適合するとは限らない。
AIはXMLの厳格なスキーマやルールを理解しているため、指定した仕様に沿ったXMLデータのモック(仮データ)を作成したり、XMLのスキーマ定義(XSD)を作成したりする作業を瞬時に行うことができる。
また、JavaScriptやPythonを使ってXMLデータを解析(パース)し、特定の情報だけを取り出すプログラム(スクレイピングプログラムやAPI連携部分など)を書かせる場合にも、以下のような具体的な指示を出すことで、すぐに動作する正確なコードを生成してくれる。
指示例:
提供するXMLデータから、各bookの「title」と「price」だけを抽出して、コンソールに出力するJavaScriptの関数を作成してください。XMLデータのパースにはDOMParserを使用してください。
XMLはタグの閉じ忘れや入れ子の誤りがあると整形式文書として解析できない。パーサーはエラーを返すため、入力検証とエラーハンドリングが必要である。外部から受け取るXMLでは、外部実体参照を悪用するXXEなどにも注意する。
よくある勘違い
XMLはHTMLの古いバージョン?
これは間違いである。XMLはHTMLの旧バージョンではなく、全く異なる目的のために作られた独立した規格である。HTMLは「画面表示用」、XMLは「データ保管・交換用」として、現在も並行して使われている。
XMLはウェブページを表示するための言語?
これも誤解である。ブラウザにXMLファイルを読み込ませても、基本的にはタグ付きのプレーンテキストがそのまま表示されるだけである。ウェブページとして画面にデザインを施して表示するためには、HTMLを使用する(もしくはXMLをスタイルシートで変換する)必要がある。
XMLはもう完全に使われていない古い技術?
近年、軽量なJSONに主役を奪われたイメージがあるが、決して過去の遺物ではない。先に挙げたSVGやOfficeドキュメント、RSSフィードのほか、企業のレガシーシステム間での連携やAPI通信など、安全かつ厳格な構造定義が必要なシステムでは、今なお主要な技術として稼働している。
まとめ
- XMLは、ユーザーがタグの名前や構造を自由に定義できるマークアップ言語である。
- データの「見た目」ではなく、データの「意味と構造」を保存・交換することを目的とする。
- HTMLと異なり、閉じタグの省略不可やルート要素が1つであることなど、構文ルールが非常に厳格である。
- RSSフィード、SVG形式の画像、Officeファイルの構造データなど、現代でも幅広く活用されている。
- AIコーディングの際は、厳密なパース処理とエラーハンドリングの記述をAIに指示すると効果的である。
情報ソース
- W3C: Extensible Markup Language (XML)
- W3C Recommendation: Extensible Markup Language (XML) 1.0
- MDN Web Docs: XML introduction
より詳しくAIに聞いてみよう
- XMLとJSONの構造的な違いと、それぞれのメリット・デメリットを初心者向けに教えてください。
- SVGファイルがXMLで書かれているとはどういうことですか?具体的な中身の例を挙げて説明してください。
- JavaScriptでXMLデータを解析(パース)する代表的な方法と、実装時の注意点を教えてください。
- AIを使って、Excelファイル(.xlsx)の内部にあるXMLデータをPythonで読み解く方法を教えてください。
- AIに「XML形式で都道府県リストのデータを作って」と指示する際、より実用的なスキーマにしてもらうためのプロンプトのコツは何ですか?