XMLの基本構文とは?初めてでもわかる書き方と注意点

Web

「システム開発の話でXMLって言葉をよく聞くけど、一体何なの?」
「HTMLは知ってるけど、XMLはどう違うの?」

データの受け渡しや保存をするときによく登場する「XML(エックスエムエル)」。名前は聞いたことがあっても、実際にどう書けばいいのか、どんなルールがあるのかは意外と知られていません。

この記事では、XMLの基本構文をわかりやすく解説します。読み終わるころには「XMLって意外とカンタンかも」と感じるはずです。

スポンサーリンク

XMLとは?そもそもどんなものか

XMLの意味と役割

XMLは「eXtensible Markup Language(エクステンシブル・マークアップ・ランゲージ)」の略です。日本語にすると「拡張可能なマークアップ言語」と呼ばれます。

HTML(ホームページを作る言語)と同じマークアップ言語の仲間で、データの構造を決めて、さまざまなアプリやシステム間でデータをやり取りするために使われます。

HTMLとXMLの違い

特徴HTMLXML
目的ウェブページの表示データの構造化・交換
タグ決められたタグのみ自由にタグを作れる
ルール比較的ゆるいとても厳格

どんなときに使われる?

XMLは私たちの身の回りで、実はたくさん使われています。

よくある使用例:

  • システム間でユーザー情報や商品データを受け渡す
  • ソフトウェアの設定ファイル
  • 業務用の電子文書(伝票や申請書データ)
  • RSSフィード(ニュースサイトの更新情報)
  • Microsoft Officeの文書形式(.docx、.xlsxの中身)

つまり、コンピュータ同士が「同じルールで話をするための共通言語」みたいなものです。

なぜXMLが選ばれるの?

XMLが人気の理由は以下の通りです:

  • 人間にも読みやすい: テキスト形式なので中身を確認できる
  • 階層構造: データの関係性がわかりやすい
  • プラットフォーム非依存: どんなシステムでも読み書きできる
  • 検証可能: ルールに従っているかチェックできる

XMLの基本構文をマスターしよう

XMLの最小構造

XMLは基本的に以下のように書きます。

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <item>データ</item>
</root>

それぞれの意味を詳しく解説

XML宣言(最初の行)

<?xml version="1.0" encoding="UTF-8"?>
  • これはXML宣言です
  • XMLのバージョンや文字コードを宣言します
  • 必ず最初に書く必要があります

ルート要素(一番外側のタグ)

<root>...</root>
  • これが「ルート要素」で、必ず1つだけ必要です
  • XML文書の最上位を示します
  • 名前は「root」でなくても構いません

要素(データを囲むタグ)

<item>データ</item>
  • これが「要素」で、データを囲むタグです
  • HTMLに似ていますが、好きな名前で作れるのが特徴です

XMLの重要なルール

XMLにはいくつか守るべき厳格なルールがあります。これを「整形式(Well-formed)」と呼びます。

タグは必ず閉じる

正しい例:

<data>テスト</data>

間違った例:

<data>テスト  <!-- 閉じタグがない -->

HTMLでは<br><img>のように閉じなくても良いタグがありますが、XMLでは必ず閉じる必要があります。

入れ子は正しく

間違った例:

<a><b></a></b>  <!-- タグが交差している -->

正しい例:

<a><b></b></a>  <!-- 内側から順番に閉じる -->

属性はダブルクォーテーションで囲む

正しい例:

<item type="fruit">りんご</item>

間違った例:

<item type=fruit>りんご</item>     <!-- クォーテーションなし -->
<item type='fruit'>りんご</item>   <!-- シングルクォーテーション -->

大文字・小文字を区別する

XMLでは<Name><name>は別のタグとして扱われます。

<!-- これは間違い -->
<Name>田中太郎</name>

<!-- これが正しい -->
<name>田中太郎</name>

XMLの実例で理解を深めよう

商品データの例

では、少し複雑な例を見てみましょう。オンラインショップの商品データをXMLで表現してみます。

<?xml version="1.0" encoding="UTF-8"?>
<shop name="テックストア">
  <product id="101" category="book" inStock="true">
    <name>XML入門</name>
    <price currency="JPY">1200</price>
    <description>初心者向けのXML解説書</description>
    <tags>
      <tag>プログラミング</tag>
      <tag>初心者向け</tag>
    </tags>
  </product>
  <product id="102" category="gadget" inStock="false">
    <name>USBメモリ</name>
    <price currency="JPY">800</price>
    <description>32GB の高速USBメモリ</description>
    <tags>
      <tag>ストレージ</tag>
      <tag>PC周辺機器</tag>
    </tags>
  </product>
</shop>

ポイント解説

属性(アトリビュート)の活用

  • idcategoryは「属性」です
  • 要素に追加情報を持たせられます
  • 検索やフィルタリングに便利です

階層構造の表現

  • <shop>がルート要素で、その中に複数の<product>があります
  • さらに<product>の中に<tags>があり、その中に複数の<tag>があります
  • データの種類や階層がわかりやすく整理されています

データ型の表現

  • inStock="true"のようにブール値を表現
  • currency="JPY"で通貨単位を明示
  • 数値、文字列、日付など様々なデータ型を扱えます

顧客データの例

もう一つ、顧客管理システムで使われそうなXMLの例を見てみましょう。

<?xml version="1.0" encoding="UTF-8"?>
<customers>
  <customer id="C001" memberType="premium">
    <personalInfo>
      <name>
        <firstName>太郎</firstName>
        <lastName>田中</lastName>
      </name>
      <email>taro@example.com</email>
      <phone>090-1234-5678</phone>
    </personalInfo>
    <address>
      <zipCode>100-0001</zipCode>
      <prefecture>東京都</prefecture>
      <city>千代田区</city>
      <street>丸の内1-1-1</street>
    </address>
    <registrationDate>2024-01-15</registrationDate>
  </customer>
</customers>

この例では、より複雑な階層構造でデータを整理しています。実際のシステムでは、このようなXMLデータを使って顧客情報を管理することがよくあります。

XMLを書くときの注意点とトラブル回避

よくあるミスと対処法

タグを閉じ忘れる

エラーが起きる例:

<product>
  <name>商品名
  <price>1000</price>
</product>

対処法:

  • コードエディタの自動補完機能を使う
  • インデント(字下げ)を整えて視覚的にチェック
  • XMLバリデーターでチェック

入れ子を間違える

エラーが起きる例:

<order>
  <item>
    <name>商品A</name>
  <quantity>2</quantity>  <!-- インデントがずれている -->
  </item>
</order>

対処法:

  • 一貫したインデントルールを決める
  • エディタのXMLフォーマット機能を使う

特殊文字のエスケープ

XMLでは、一部の文字をそのまま書くことができません。これらを「エスケープ」する必要があります。

文字エスケープ後理由
<&lt;タグの開始と区別するため
>&gt;タグの終了と区別するため
&&amp;エスケープ文字と区別するため
"&quot;属性値の区切りと区別するため
'&apos;属性値の区切りと区別するため

使用例:

<message>
  <text>価格は1000円 &lt; 税込1100円です</text>
  <note>A &amp; B という会社</note>
</message>

文字エンコーディングの注意点

XMLファイルを保存するときは、宣言した文字エンコーディングと実際のファイルのエンコーディングを一致させる必要があります。

よくある問題:

  • XML宣言ではUTF-8と書いているのに、ファイルはShift_JISで保存
  • 日本語が文字化けする

対処法:

  • テキストエディタで保存時にエンコーディングを確認
  • 迷ったらUTF-8を使う(国際標準)

XMLの便利なツールとエディタ

おすすめのXMLエディタ

無料ツール

  • Visual Studio Code: プラグインでXML支援機能を追加可能
  • Notepad++: XMLの構文ハイライト対応
  • XMLSpy: 高機能なXMLエディタ(有料版もあり)

オンラインツール

  • XMLValidator: ブラウザでXMLの正当性をチェック
  • XML Formatter: XMLを見やすく整形

XMLバリデーション(検証)

XMLが正しく書けているかチェックすることを「バリデーション」と呼びます。

チェックポイント:

  • 構文エラー(タグの閉じ忘れなど)
  • スキーマ準拠(決められたルールに従っているか)
  • 文字エンコーディング

JSON vs XML:どちらを選ぶべき?

最近は「JSON」という別のデータ形式もよく使われます。XMLとJSONの使い分けを理解しておきましょう。

特徴XMLJSON
可読性高い(構造が明確)高い(シンプル)
ファイルサイズ大きめ小さめ
属性サポート非サポート
コメントサポート非サポート
用途複雑なデータ構造Web API、設定ファイル

XMLが適している場面

  • 複雑な階層構造のデータ
  • 属性を多用するデータ
  • ドキュメント型のデータ
  • 厳密なバリデーションが必要な場合

JSONが適している場面

  • シンプルなデータ構造
  • Web APIでのデータ交換
  • JavaScriptとの連携
  • ファイルサイズを小さくしたい場合

よくある質問

XMLファイルの拡張子は?

一般的に.xmlを使います。ただし、用途によって異なる拡張子を使うこともあります:

  • .rss: RSSフィード
  • .svg: ベクター画像
  • .kml: Google Earth用の地図データ

XMLにコメントは書ける?

はい、HTMLと同じように書けます:

<!-- これはコメントです -->
<product>
  <!-- 商品名のコメント -->
  <name>商品名</name>
</product>

空の要素はどう書く?

2つの方法があります:

<!-- 方法1: 開始タグと終了タグ -->
<empty></empty>

<!-- 方法2: 自己完結タグ -->
<empty />

どちらも同じ意味で、好みや規約に応じて選択できます。

まとめ:XMLをマスターして次のステップへ

XMLの基本構文は、一度理解するとパターンが決まっていてとても書きやすいです。重要なポイントをもう一度まとめてみましょう。

覚えておくべき重要ポイント

  1. XML宣言は必須: <?xml version="1.0" encoding="UTF-8"?>
  2. ルート要素は1つだけ: 全体を囲む最上位の要素
  3. タグは必ず閉じる: 開始タグと終了タグをペアにする
  4. 属性はダブルクォーテーション: <tag attr="value">
  5. 特殊文字はエスケープ: <&lt;など

コメント

タイトルとURLをコピーしました