メインコンテンツへスキップ

← ブログ一覧へ

XML とは?構造・well-formed と valid の違い・XML と JSON の使い分け

XML(拡張可能マークアップ言語)は JSON より古く、API の世界では JSON が主流になりましたが、決して廃れてはいません:SVG、RSS/Atom、Office 文書(.docx)、Android のレイアウト、Maven の pom.xml、SOAP はすべて XML です。読んで整える技術は今も役立ちます。

XML の構造

XML はタグで包まれた入れ子の要素でデータを表し、要素は属性を持てます:

<book id="42" lang="ja">
  <title>ホビット</title>
  <author>トールキン</author>
</book>

すべての開きタグには対応する閉じタグ(または自己終了 <br/>)が必要で、タグは正しく入れ子にし、属性値は引用符で囲みます。どれか一つでも誤ると文書は解析できません。

well-formed と valid ——重要な違い

似ていますが別物です:

  • **整形式(well-formed)**は、上記の構文規則に従っていること——タグ・入れ子・引用符が正しいこと。どの XML パーサーでも確認できます。
  • 妥当(valid)は、さらに特定のスキーマ(DTD や XSD)に一致すること。どの要素・属性が許されるかを定義するもので、確認にはスキーマが要ります。

多くのオンラインツール——当ツールも含め——は XML が「整形式」かを確認します。これで日常のエラー(閉じ忘れタグ、余分な &)を捕らえられ、それが実際に解析を壊す原因です。

XML と JSON:どちらを使うか

  • JSON は軽量で、Web API やプログラムが読む設定の既定です。
  • XML は、属性・混在内容(テキストと要素の共存)・名前空間・コメントが必要な場合や、あるエコシステムが既に標準化している場合(SVG・RSS・Office 形式)に向きます。

競合というより、目的の違うツールです。

XML・JSON・HTML の比較

観点XMLJSONHTML
目的データの保存/転送データの保存/転送文書の表示
タグ自由に命名タグなし(波かっこ)固定セット(<p><div>)
属性ありなし(キーのみ)あり
厳密さ整形式が必須厳密寛容、ブラウザが誤りを許容
コメント<!-- -->なし<!-- -->

XML と HTML が似ているのは、どちらも SGML を祖先に持つからです。ただし XML は独自のタグを作れて構文が厳格、HTML は語彙が固定でブラウザが雑なマークアップを許します。XHTML は HTML に XML の規則を守らせようとした試みでした。

実例:RSS

RSS フィードは、取り決めたタグ名を使った XML にすぎません:

<rss version="2.0">
  <channel>
    <title>私のブログ</title>
    <item>
      <title>最初の投稿</title>
      <link>https://example.com/first</link>
    </item>
  </channel>
</rss>

SVG 画像も同じ仕組みで、<svg> 文書はテキストエディタで開いて手で編集できる XML です。

よくある落とし穴

  • 特殊文字はエスケープを。 テキスト内で実体参照が必要な文字は 5 つ:&lt;(<)、&gt;(>)、&amp;(&)、&quot;(")、&apos;(')。エスケープしない & は、フィードが壊れる最も多い原因です。
  • XML は大文字小文字を区別する。 <Title><title> は別要素で、閉じタグは完全に一致させます。
  • ルート要素は 1 つだけ。 整形式の文書は、最上位に全体を包む要素がちょうど 1 つだけあります。

SVG は XML なので、ベクター画像を手で編集するときも同じ整え方が使えます——PNG から SVG の解説もどうぞ。

ブラウザ内で整形・検証

XML 整形ツールは乱れた XML を読みやすいインデント構造に整形し、1 行に圧縮し直し、構文エラーを示します——すべて端末上なので、機微な設定ファイルも外に出ません。

関連ツール