「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では、一部の文字は特別な意味を持つため、データとして使用する場合はエスケープが必要です。
エスケープが必要な文字
文字 | 意味 | エスケープ後 |
---|---|---|
< | タグの開始 | < |
> | タグの終了 | > |
& | エスケープ文字 | & |
" | 属性値の区切り | " |
' | 属性値の区切り | ' |
エスケープの例
<!-- 間違った例 -->
<description>5 < 10 で、A & B です</description>
<!-- 正しい例 -->
<description>5 < 10 で、A & B です</description>
属性値でのエスケープ
<message text="彼は"こんにちは"と言った" />
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 < B && C > 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エディタを活用してエラーを防ぐ
コメント