これでスッキリ理解!XMLのタグと要素の違い・意味をわかりやすく解説

Web

「XMLを触っていて、タグとか要素ってよく出てくるけど、結局何が違うの?」
「これってタグなの?要素なの?」

こんな疑問を持ったことはありませんか?

XML(エックスエムエル)はデータを構造化して表現するための言語です。HTMLに似ていますが、意味や役割は少し違います。

この記事では、XMLにおけるタグ要素の意味や違いを、初心者にもわかるように具体例を交えてやさしく説明します。これを読めば、今後XMLを読むときや書くときに、自然と理解できるようになります。

スポンサーリンク

XMLとは何か?基本を確認

XMLの基本的な役割

まず、XMLについて簡単におさらいしましょう。

XMLの特徴:

  • データを構造化して保存・交換するための言語
  • タグを使ってデータに意味を付ける
  • 人間にも機械にも読みやすい形式
  • プログラム間でのデータ交換によく使われる

HTMLとの違い

XMLとHTMLは似ていますが、目的が異なります:

項目XMLHTML
目的データの構造化・保存ウェブページの表示
タグ自由に定義可能決められたタグのみ
用途データ交換、設定ファイルウェブサイト作成
<product><name>商品名</name></product><h1>見出し</h1><p>段落</p>

XMLのタグとは?

タグの基本的な説明

「タグ」について詳しく見てみましょう。

タグは、データを囲むマークのことです。< で始まり > で終わる記号がタグです。

基本的な例

<name>田中</name>

この例では:

  • <name>開始タグ(スタートタグ)
  • </name>終了タグ(エンドタグ)

このタグがデータを囲んで、データに「これは名前ですよ」という意味を持たせています。

タグの種類

開始タグと終了タグ

<title>XMLの基本</title>
<!--  ↑開始タグ      ↑終了タグ -->

<price>1500</price>
<!--  ↑開始タグ    ↑終了タグ -->

重要なポイント:

  • 開始タグは <タグ名>
  • 終了タグは </タグ名> (スラッシュが入る)
  • 必ず開始タグと終了タグをペアで使う

空要素タグ(セルフクロージング)

中にデータを持たず、タグだけで完結する書き方もあります。

<br/>
<line/>
<empty-element/>

これを「空要素タグ」や「セルフクロージングタグ」と呼びます。

空要素タグの書き方

空要素には2つの書き方があります:

<!-- 書き方1: セルフクロージング -->
<image src="photo.jpg"/>

<!-- 書き方2: 開始タグと終了タグ -->
<image src="photo.jpg"></image>

どちらも同じ意味ですが、セルフクロージングの方が簡潔です。

タグ名のルール

XMLのタグ名には、いくつかのルールがあります:

基本的なルール

  • 英字で始める:数字や記号から始めてはいけない
  • スペースを入れない:単語を区切るときはハイフンやアンダースコア
  • 大文字小文字を区別<Name><name> は別のタグ
  • 特定の記号は使えない<>&"' は使用不可

良い例と悪い例

<!-- 良い例 -->
<customer-name>田中太郎</customer-name>
<product_id>12345</product_id>
<create-date>2024-07-04</create-date>

<!-- 悪い例 -->
<1customer>田中太郎</1customer>  <!-- 数字で始まっている -->
<product id>12345</product id>    <!-- スペースが入っている -->
<create@date>2024-07-04</create@date>  <!-- 特殊記号を使用 -->

XMLの要素とは?

要素の基本的な説明

要素はタグで囲まれたデータのかたまり全体のことを指します。

先ほどの例でいうと:

<name>田中</name>

この一式全体が「要素」です。

要素の構成要素

具体的には、要素は以下の部分から構成されます:

  • 開始タグ <name>
  • 内容(テキストノード) 田中
  • 終了タグ </name>

これら全部をまとめて「name要素」と呼びます。

より複雑な要素の例

ネスト(入れ子)構造

複雑なデータになると、こんな風にネスト(入れ子)になります:

<book>
    <title>XML入門</title>
    <author>山田太郎</author>
    <price>1200</price>
    <publisher>
        <name>サンプル出版</name>
        <location>東京</location>
    </publisher>
</book>

この場合:

  • <book> ... </book> 全体が「book要素
  • <title>XML入門</title> が「title要素
  • <author>山田太郎</author> が「author要素
  • <price>1200</price> が「price要素
  • <publisher> ... </publisher> が「publisher要素

親要素と子要素

上の例では:

  • book親要素
  • titleauthorpricepublisherbook子要素
  • namelocationpublisher子要素book孫要素

要素の種類

テキストを含む要素

<message>こんにちは</message>
<count>5</count>
<flag>true</flag>

他の要素を含む要素

<user>
    <name>田中花子</name>
    <age>25</age>
    <email>tanaka@example.com</email>
</user>

空の要素

<separator/>
<break></break>

タグと要素の違いを図で理解

視覚的な説明

以下の例で、タグと要素の違いを明確にしましょう:

<product id="001">
    <name>スマートフォン</name>
    <price>89800</price>
</product>

この例での分類:

タグの部分

  • <product id="001"> ← 開始タグ
  • </product> ← 終了タグ
  • <name> ← 開始タグ
  • </name> ← 終了タグ
  • <price> ← 開始タグ
  • </price> ← 終了タグ

要素の部分

  • <product id="001">...</product> 全体 ← product要素
  • <name>スマートフォン</name>name要素
  • <price>89800</price>price要素

要素の階層構造

product要素
├── name要素 (値: "スマートフォン")
└── price要素 (値: "89800")

よくある勘違いと注意点

「タグ = 要素」と思ってしまう

タグと要素はよく似た言葉なので、混同されがちです。

用語正確な意味
タグ<name></name> の部分開始タグ、終了タグ
要素<name>田中</name> 全体name要素、product要素

正しい表現と間違った表現

<book>
    <title>プログラミング入門</title>
</book>
  • 正しい表現:「title要素に本のタイトルが入っています」
  • 間違った表現:「titleタグに本のタイトルが入っています」

属性(attribute)との混同

さらにXMLには属性というものもあります。

<book category="programming" language="ja">
    <title>XML入門</title>
</book>

この例では:

  • category="programming"language="ja"属性
  • 要素に付加情報を持たせるもの
  • タグの中に書かれるが、要素の内容とは別

属性と要素内容の違い

<!-- 属性として情報を記録 -->
<person age="30" gender="male">
    <!-- 要素内容として情報を記録 -->
    <name>田中太郎</name>
    <address>東京都渋谷区1-2-3</address>
</person>

使い分けの目安:

  • 属性:短い補足情報、メタデータ
  • 要素内容:主要なデータ、長い文章

XML宣言との混同

XMLファイルの最初に書かれる以下の部分は、タグでも要素でもありません:

<?xml version="1.0" encoding="UTF-8"?>

これは「XML宣言」と呼ばれる特別な記述です。

XMLタグ・要素を扱うときのポイント

タグ名(要素名)の付け方

XMLではタグ名(要素名)は基本的に自由につけられます。

良い命名例

<!-- 英語での命名 -->
<customer>
    <first-name>太郎</first-name>
    <last-name>田中</last-name>
    <email-address>taro@example.com</email-address>
</customer>

<!-- 日本語での命名(可能だが推奨されない) -->
<顧客>
    <名前>田中太郎</名前>
    <メール>taro@example.com</メール>
</顧客>

命名のベストプラクティス

  • 分かりやすい名前:データの内容が推測できる
  • 一貫性のある命名規則:ハイフン区切りかアンダースコア区切りかを統一
  • 短すぎず長すぎず:適度な長さで意味が伝わる
  • 英語の使用:国際的な互換性のため

XML文書の構造

整形の重要性

要素が多くなると見づらいので、適切にインデント(字下げ)することが重要です:

悪い例(読みにくい)

<users><user><name>田中</name><age>30</age></user><user><name>佐藤</name><age>25</age></user></users>

良い例(読みやすい)

<users>
    <user>
        <name>田中</name>
        <age>30</age>
    </user>
    <user>
        <name>佐藤</name>
        <age>25</age>
    </user>
</users>

整形ツールの活用

おすすめのツール

  • Visual Studio Code:XML拡張機能を入れると自動整形可能
  • オンラインXML整形ツール:ブラウザで手軽に使える
  • XMLlint:コマンドラインでのXML検証・整形
  • Notepad++:XMLプラグインで構文ハイライト

Visual Studio Codeでの整形

  1. XMLファイルを開く
  2. Shift + Alt + F(Windows)または Shift + Option + F(Mac)
  3. 自動的にインデントが整理される

実践的な例で理解を深める

ECサイトの商品データ

<?xml version="1.0" encoding="UTF-8"?>
<product-catalog>
    <product id="001" status="available">
        <name>ワイヤレスイヤホン</name>
        <description>
            高音質でバッテリー長持ちの
            ワイヤレスイヤホンです。
        </description>
        <price currency="JPY">12800</price>
        <specifications>
            <battery-life>8時間</battery-life>
            <bluetooth-version>5.0</bluetooth-version>
            <weight unit="g">45</weight>
        </specifications>
        <categories>
            <category>電子機器</category>
            <category>オーディオ</category>
        </categories>
    </product>
</product-catalog>

この例での要素とタグの識別:

要素の例

  • product-catalog要素:全体を包む要素
  • product要素:個別の商品情報
  • name要素:商品名
  • specifications要素:仕様情報をまとめる要素

タグの例

  • <product-catalog>:開始タグ
  • </name>:終了タグ
  • <weight unit="g">:属性付きの開始タグ

属性の例

  • id="001":商品ID
  • status="available":在庫状況
  • currency="JPY":通貨単位
  • unit="g":重量の単位

設定ファイルの例

<?xml version="1.0" encoding="UTF-8"?>
<application-config>
    <database>
        <host>localhost</host>
        <port>3306</port>
        <name>sample_db</name>
        <credentials>
            <username>admin</username>
            <password>secret123</password>
        </credentials>
    </database>
    
    <logging level="info">
        <file>logs/application.log</file>
        <max-size unit="MB">100</max-size>
        <rotation>daily</rotation>
    </logging>
    
    <features>
        <feature name="user-registration" enabled="true"/>
        <feature name="email-notifications" enabled="false"/>
    </features>
</application-config>

XMLのバリデーションと検証

整形式(Well-formed)XML

XMLが正しく書かれているかを確認する基準があります:

整形式の条件

  • すべての開始タグに対応する終了タグがある
  • タグの入れ子が正しい
  • 属性値が引用符で囲まれている
  • 一つのルート要素がある

正しい例

<root>
    <item value="test">内容</item>
</root>

間違った例

<!-- 終了タグがない -->
<root>
    <item value="test">内容
</root>

<!-- 入れ子が間違っている -->
<root>
    <item>
        <sub>内容</item>
    </sub>
</root>

<!-- 属性値が引用符で囲まれていない -->
<item value=test>内容</item>

まとめ

今回はXMLにおける「タグ」と「要素」について詳しく解説しました。

重要なポイント:

  • タグ<name></name> のような囲む記号
  • 要素はタグと中身を含めた一つのデータブロック全体
  • 属性はタグに追加で情報を載せるもの
  • 要素は入れ子(ネスト)構造で複雑なデータを表現できる
  • タグ名は自由に決められるが、一定のルールがある
  • 適切な整形により、XMLは読みやすくなる

コメント

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