XMLのタグの書き方|基本ルールから注意点まで初心者向けに解説

Web

「XMLってどうやって書くの?」
「タグの閉じ方やルールがいまいちわからない…」

こんな疑問を持っている人も多いでしょう。XMLはシンプルに見えますが、実は厳格な文法があり、タグの書き方を間違えるとすぐにエラーになってしまいます。

特に、以下のような場面でXMLタグを書く必要が出てきます:

「システム設定ファイルを編集する必要がある」
「データ交換用のXMLファイルを作成しなければならない」
「WebサイトのサイトマップやRSSフィードを作りたい」
「プログラミングでXMLデータを扱う必要がある」

HTMLとは違い、XMLは「見た目」ではなく「データの構造」を表現するための言語です。そのため、より厳密なルールが求められます。

しかし、基本的な書き方を理解すれば、決して難しくありません。

この記事では、XMLのタグの基本的な書き方から、よく使うパターン、やりがちな間違いまで、初心者にもわかりやすく説明します。

スポンサーリンク

XMLのタグとは?基本概念を理解しよう

XMLの基本的な仕組み

XML(エックスエムエル)は「eXtensible Markup Language(拡張可能なマークアップ言語)」の略で、データを意味ごとにタグで囲んで表現するテキスト形式です。

基本的なタグの例

<name>田中太郎</name>

このタグは以下のような意味を持ちます:

  • <name> : 「これから名前のデータが始まる」という開始タグ
  • 田中太郎 : 実際のデータ(名前)
  • </name> : 「名前のデータがここで終わる」という終了タグ

XMLとHTMLの違い

多くの人がHTMLを知っているので、XMLとの違いを理解しておきましょう。

HTML

  • Webページの見た目を作るための言語
  • 決められたタグ(<h1>, <p>, <div> など)を使用
  • 大文字小文字を区別しない
  • 一部のタグは閉じなくてもOK

XML

  • データの構造を表現するための言語
  • 自由にタグ名を決められる
  • 大文字小文字を厳密に区別する
  • すべてのタグを正しく閉じる必要がある

XMLでデータを表現する利点

構造が明確

<person>
    <name>田中太郎</name>
    <age>30</age>
    <email>tanaka@example.com</email>
</person>

データの意味が明確

  • どこが名前で、どこが年齢かが一目でわかる
  • プログラムで自動処理しやすい

階層構造を表現可能

  • 複雑なデータ関係も整理して表現できる

XMLのタグの基本的な書き方

開始タグと終了タグ

XMLの最も基本的なルールは、開始タグと終了タグのセットでデータを囲むことです。

基本的な構造

<タグ名>データ</タグ名>

実際の例

<city>東京</city>
<price>1500</price>
<description>とても美味しいりんごです</description>

重要なポイント

  • <city> が開始タグ
  • </city> が終了タグ(スラッシュ / が入る)
  • タグ名は開始タグと終了タグで完全に一致させる

空要素タグ(自己終了タグ)

データが入らない(空の)タグは、以下のように書きます。

基本的な書き方

<br />
<image />
<separator />

実際の使用例

<document>
    <title>会議資料</title>
    <br />
    <content>今日の議題について説明します</content>
    <pagebreak />
    <footer>以上で終了です</footer>
</document>

注意点

  • HTMLでは <br> でもOKですが、XMLでは <br /> が正しい
  • 空要素タグには終了タグを書かない
  • タグの最後に / を入れるのを忘れずに

属性(アトリビュート)の書き方

タグに追加情報を付けたい場合は、属性を使います。

基本的な書き方

<タグ名 属性名="値">データ</タグ名>

実際の例

<user id="001" type="premium">
    <name>田中太郎</name>
    <email>tanaka@example.com</email>
</user>

<product category="electronics" available="true">
    <name>ワイヤレスイヤホン</name>
    <price>12800</price>
</product>

属性の特徴

  • id, type, category が属性名
  • "001", "premium" が属性値
  • 属性値は必ずダブルクォーテーション " またはシングルクォーテーション ' で囲む

複数の属性を持つ場合

<image src="photo.jpg" width="300" height="200" alt="風景写真" />

書き方のルール

  • 属性はスペースで区切る
  • 順序は自由
  • 同じ属性名は一つのタグに一回だけ

XMLタグを書くときの重要な注意点

大文字・小文字を厳密に区別する

XMLでは、タグ名の大文字小文字を厳密に区別します。これはHTMLとの大きな違いです。

正しい例

<Name>田中太郎</Name>
<name>佐藤花子</name>
<NAME>鈴木一郎</NAME>

間違った例

<Name>田中太郎</name>  <!-- NG: 開始タグと終了タグが不一致 -->
<name>佐藤花子</Name>  <!-- NG: 大文字小文字が違う -->

実際のエラー例

<user>
    <Name>田中太郎</name>  <!-- エラー発生 -->
    <age>30</age>
</user>

このようなファイルをXMLパーサーで読み込むと、「タグが正しく閉じられていない」というエラーになります。

すべてのタグを正しく閉じる

XMLでは、すべてのタグを正しく閉じる必要があります。

間違った例

<user>
    <name>田中太郎
    <age>30</age>
</user>

この例では、<name> タグが閉じられていないため、XMLパーサーでエラーになります。

正しい例

<user>
    <name>田中太郎</name>
    <age>30</age>
</user>

入れ子構造での注意点

<!-- 間違った例 -->
<user>
    <personal>
        <name>田中太郎</name>
    </personal>
    <contact>
        <email>tanaka@example.com</email>
    </contact>
</user>

<!-- 正しい例 -->
<user>
    <personal>
        <name>田中太郎</name>
    </personal>
    <contact>
        <email>tanaka@example.com</email>
    </contact>
</user>

入れ子構造では、内側のタグから順番に閉じていく必要があります。

属性値を必ずクォーテーションで囲む

XMLでは、属性値を必ずダブルクォーテーション " またはシングルクォーテーション ' で囲む必要があります。

正しい例

<user id="001" type="premium">
<user id='002' type='standard'>

間違った例

<user id=001 type=premium>  <!-- NG: クォーテーションなし -->
<user id="001" type=premium>  <!-- NG: 混在している -->

クォーテーションの使い分け

<message text="彼は'こんにちは'と言った">
<message text='彼は"Hello"と言った'>

属性値の中にクォーテーションを含む場合は、外側と内側で異なる種類を使います。

特殊文字のエスケープ

XMLでは、一部の文字は特別な意味を持つため、データとして使用する場合はエスケープが必要です。

エスケープが必要な文字

文字意味エスケープ後
<タグの開始&lt;
>タグの終了&gt;
&エスケープ文字&amp;
"属性値の区切り&quot;
'属性値の区切り&apos;

エスケープの例

<!-- 間違った例 -->
<description>5 < 10 で、A & B です</description>

<!-- 正しい例 -->
<description>5 &lt; 10 で、A &amp; B です</description>

属性値でのエスケープ

<message text="彼は&quot;こんにちは&quot;と言った" />

XMLタグの実践的な応用例

階層構造(入れ子)の活用

XMLの最大の強みは、データを階層的に表現できることです。

基本的な階層構造

<company>
    <name>ABC商事</name>
    <departments>
        <department>
            <name>営業部</name>
            <employees>
                <employee id="001">
                    <name>田中太郎</name>
                    <position>部長</position>
                </employee>
                <employee id="002">
                    <name>佐藤花子</name>
                    <position>主任</position>
                </employee>
            </employees>
        </department>
        <department>
            <name>開発部</name>
            <employees>
                <employee id="003">
                    <name>鈴木一郎</name>
                    <position>リーダー</position>
                </employee>
            </employees>
        </department>
    </departments>
</company>

このように、現実世界の構造をそのままXMLで表現できます。

ECサイトの商品データ

<products>
    <product id="P001" category="electronics">
        <name>ワイヤレスイヤホン</name>
        <price currency="JPY">12800</price>
        <description>高音質で長時間使用可能</description>
        <specifications>
            <spec name="重量">5g</spec>
            <spec name="バッテリー">8時間</spec>
            <spec name="防水">IPX4</spec>
        </specifications>
        <availability>
            <inStock>true</inStock>
            <quantity>50</quantity>
        </availability>
    </product>
    <product id="P002" category="books">
        <name>プログラミング入門</name>
        <price currency="JPY">2800</price>
        <description>初心者にもわかりやすい解説</description>
        <specifications>
            <spec name="ページ数">300</spec>
            <spec name="言語">日本語</spec>
            <spec name="発行年">2024</spec>
        </specifications>
        <availability>
            <inStock>true</inStock>
            <quantity>20</quantity>
        </availability>
    </product>
</products>

設定ファイルの例

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <database>
        <server>localhost</server>
        <port>3306</port>
        <name>myapp_db</name>
        <credentials>
            <username>dbuser</username>
            <password>secretpass</password>
        </credentials>
    </database>
    <application>
        <name>MyApplication</name>
        <version>1.0.0</version>
        <debug>false</debug>
        <features>
            <feature name="logging" enabled="true" />
            <feature name="caching" enabled="true" />
            <feature name="analytics" enabled="false" />
        </features>
    </application>
</configuration>

よくある間違いと対処法

間違い1:タグの閉じ忘れ

問題のあるコード

<users>
    <user>
        <name>田中太郎</name>
        <age>30
    </user>
</users>

修正後

<users>
    <user>
        <name>田中太郎</name>
        <age>30</age>
    </user>
</users>

対処法

  • XMLエディタ(VS Code など)を使用すると、タグの対応関係が色分けされる
  • 自動補完機能で閉じタグを自動挿入

間違い2:属性値のクォーテーション忘れ

問題のあるコード

<user id=001 type=premium>
    <name>田中太郎</name>
</user>

修正後

<user id="001" type="premium">
    <name>田中太郎</name>
</user>

間違い3:特殊文字のエスケープ忘れ

問題のあるコード

<message>A < B && C > D</message>

修正後

<message>A &lt; B &amp;&amp; C &gt; D</message>

間違い4:ルート要素の重複

問題のあるコード

<user>
    <name>田中太郎</name>
</user>
<user>
    <name>佐藤花子</name>
</user>

修正後

<users>
    <user>
        <name>田中太郎</name>
    </user>
    <user>
        <name>佐藤花子</name>
    </user>
</users>

XMLファイルには、必ず一つのルート要素が必要です。

XMLタグの命名規則とベストプラクティス

推奨される命名規則

わかりやすいタグ名を付ける

<!-- 良い例 -->
<customerInfo>
    <firstName>太郎</firstName>
    <lastName>田中</lastName>
    <emailAddress>tanaka@example.com</emailAddress>
</customerInfo>

<!-- 悪い例 -->
<ci>
    <fn>太郎</fn>
    <ln>田中</ln>
    <ea>tanaka@example.com</ea>
</ci>

一貫した命名スタイル

<!-- キャメルケース -->
<userInfo>
    <firstName>太郎</firstName>
    <lastName>田中</lastName>
</userInfo>

<!-- スネークケース -->
<user_info>
    <first_name>太郎</first_name>
    <last_name>田中</last_name>
</user_info>

どちらでも構いませんが、プロジェクト全体で統一することが重要です。

構造設計のコツ

適切な階層レベル

<!-- 深すぎる階層(推奨しない) -->
<data>
    <section>
        <group>
            <category>
                <item>
                    <name>商品名</name>
                </item>
            </category>
        </group>
    </section>
</data>

<!-- 適切な階層 -->
<products>
    <product category="electronics">
        <name>商品名</name>
    </product>
</products>

属性とテキストの使い分け

<!-- 属性を活用 -->
<product id="P001" category="electronics" available="true">
    <name>ワイヤレスイヤホン</name>
    <price currency="JPY">12800</price>
</product>

<!-- すべてタグで表現(冗長) -->
<product>
    <id>P001</id>
    <category>electronics</category>
    <available>true</available>
    <name>ワイヤレスイヤホン</name>
    <price>
        <currency>JPY</currency>
        <amount>12800</amount>
    </price>
</product>

判断基準

  • ID や分類などの簡単な情報は属性
  • 複雑な内容や長いテキストはタグ内容

XMLファイルの作成と検証

基本的なXMLファイルの構造

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <!-- ここに実際のデータ -->
</root>

XMLファイルの基本要素

  • XML宣言<?xml version="1.0" encoding="UTF-8"?>
  • ルート要素:すべてのタグを含む最上位の要素
  • コメント<!-- コメント内容 -->

XMLファイルの検証方法

オンラインツールを使用

  • XMLValidation.com
  • W3C Markup Validator
  • FreeFormatter.com

エディタでの検証

Visual Studio Code

  • XML拡張機能をインストール
  • 構文エラーが赤い波線で表示される
  • 自動的に構文チェックが実行される

その他のエディタ

  • Sublime Text
  • Atom
  • Notepad++(XMLプラグイン)

まとめ

今回は「XMLのタグの書き方」について、基本的な書き方から実践的な応用例まで詳しく解説しました。

重要なポイント

  • 開始タグと終了タグを正しく対応させる
  • 大文字小文字を厳密に区別する
  • 属性値は必ずクォーテーションで囲む
  • 特殊文字は適切にエスケープする
  • 階層構造を活用してデータを整理する

実践的なコツ

  • わかりやすいタグ名を付ける
  • 一貫した命名規則を使用する
  • 適切な階層レベルを保つ
  • XMLエディタを活用してエラーを防ぐ

コメント

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