ゲーマーときどきエンジニア

基本ゲーム記事を書いて、ときどき考えを発信するエンジニアのブログです!

xmlを書くときに守るべき3つのルールと、私がxmlを書くときに気を付けていることをご紹介します。

こんにちは。たいら(@tairaengineer2)です。
この記事では、

  • xmlを書くときに守るべき3つのルールを解説
  • 私がxmlを書くときに気を付けていることを紹介

の2点を書いていきます。
ご参考になれば、幸いです。

 

xmlとは

xmlとはこんなファイルです。

<?xml version="1.0" encoding="utf-8" ?>
<productTable>
  <product>
    <name>幕の内弁当</name>
    <price>498</price>
  </product>
  <product>
    <name>唐揚げ弁当</name>
    <price>398</price>
  </product>
  <product>
    <name>セレブ弁当</name>
    <price>998</price>
  </product>
</productTable>

こんな感じで、HTMLのようにタグで囲まれた、データを扱うときに使われる拡張子.xmlマークアップ言語です。

Extensible Markup Language(エクステンシブル マークアップ ランゲージ)は、基本的な構文規則を共通とすることで、任意の用途向けの言語に拡張することを容易としたことが特徴のマークアップ言語の総称である。
一般的にXML(エックスエムエル)と略称で呼ばれる。
JISによる訳語は「拡張可能なマーク付け言語」。

Extensible Markup Language - Wikipediaから引用させて頂きました

xmlを書くときの3つのルール

xmlを書くときの3つのルールは

  • 最初の行にxml宣言をすること
  • データはタグで囲うこと
  • タグのネストを守ること

です。
では1つずつ解説します。

ルールその1:最初の行にxml宣言をすること

xml宣言とは、このファイルがxmlであると宣言することです。

XML宣言
XML Declaration
XML宣言とは、XML文書の先頭に付き、その文書がXML文書であることを明確に示す文字列である。以下がXML宣言の例である。

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

XML用語事典 [XML宣言]から引用させて頂きました

xml宣言をすることで、このファイルがxmlであると示すことができます。

xml宣言の

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

中身を解説します。

version="1.0"

は、xmlのバージョン情報です。
常に1.0でOKです。

encoding="UTF-8"

は、文字コードを指定しています。
例では、UTF-8を使っていますが、xmlファイルを使う環境に適した文字コードを指定します。

standalone="yes"

は、スタンドアロン文書かどうかをyesまたはnoで記述します。
スタンドアロン文書とは

スタンドアロン文書
Standalone Document
スタンドアロン文書は、外部のファイルを参照を処理しなくても、すべて正しい文書が得られるXML文書を示す。

XML用語事典 [スタンドアロン文書]から引用させて頂きました

です。 なので

  • 外部のファイルを参照しない場合:yes
  • 外部のファイルを参照する場合 :no

と書きます。

xml宣言は必ず1行目にしなければならないです。

f:id:Tairax:20190305220523p:plain

xml宣言の前にスペースとか、

f:id:Tairax:20190305220716p:plain

2行目以上に書くとか

f:id:Tairax:20190305220943p:plain

これらはNGです。
必ず1行目の先頭に書きましょう!

ルールその2:データはタグで囲うこと

xmlの要素の書き方は

f:id:Tairax:20190305222758p:plain

のように必ず開始タグ終了タグでデータを囲うようにします。
開始タグと終了タグの名前は必ず同じものにする必要があります。

例えば

<name>田中</name>

こんな感じに書きます。
開始タグと終了タグが一致していれば、タグにはどんなものを指定してもOKです。

ですが

f:id:Tairax:20190305223521p:plain

このように片方のタグだけあったり

f:id:Tairax:20190307083022p:plain

開始タグと終了タグが異なることはNGです。

ルールその3:タグのネストを守ること

ネストとは深さです。
タグのネストを守るということは、開始タグ終了タグ同じ深さで書くということです。

もっと詳しく解説します。
同じネストにあるということは

f:id:Tairax:20190307075845p:plain

このように開始タグと終了タグをまたぐタグがなく書かれていることです。
この例でいうと、elementタグは開始タグも終了タグも同じdocumentというタグの中にいます。

では、タグのネストを守っていないというと

f:id:Tairax:20190306082446p:plain

このように開始タグと終了タグがちぐはぐであることです。
このような書き方はNGです。

ですが、ネストを守っていれば要素の中に要素が存在することはOKです。

f:id:Tairax:20190306083103p:plain

こんな感じで、1つのデータの中で開始タグと終了タグがあるように書けばOKです。

以上がxmlを書くべき3つのルールです。
これらを守ってxmlを書きましょう!

・・・とはいえ、xmlの書くルールは分かっても、xmlは自由に書くことが出来ます。
なので

 

自由すぎてどう書けば分からない

 

という悩みがありませんか?
次の章では、私がxmlを書くとき気を付けていることをご紹介します!

私がxmlを書くときに気を付けていること

私がxmlを書くときに気を付けていることは

  1. タグ名は分かりやすいものにする
  2. ネストの深さをインデントでそろえる
  3. ネストは深くし過ぎない

です。では、1つずつ解説します。

タグ名は分かりやすいものにする

タグは何を指定してもOKですが、タグ名何のデータを表すのかを一発で分かるものにしています。
その方が分かりやすいですし、管理もしやすいので。

例えば以下のようなxmlはどうでしょうか?

f:id:Tairax:20190308074859p:plain

xmlとしては、ルールを守っているので問題ありません
でも、タグ名の意味が分からないから、何を指定しているのか何のデータなのか分からないです。
こんなxmlを使って開発するとなると、時間がいくらあっても足りないでしょう・・・

なので、タグ名はどういうデータを扱っているのかが一発で分かるものにしています。

ネストの深さをインデントでそろえる

インデントとは、行の先頭にタブやスペースを入れてその行の開始位置をずらすことです。

f:id:Tairax:20190308075615p:plain

ネストの深さとは、要素の中の要素の中の要素の中の・・・と行けば行くほど深いです。

f:id:Tairax:20190308082858p:plain

上の画像では、矢印の方向に行けば行くほど、ネストが深いです。

ネストの深さでインデントをそろえるとはこういうことです。

f:id:Tairax:20190308080150p:plain

同じ深さのネストは、同じインデントでそろえます。
こういう風にインデントをそろえると、どのタグがどのネストにいるのかが一発で分かります。

f:id:Tairax:20190308083432p:plain

Visual Stadioでxmlを書くと、ネストが深くなると自動でインデントをそろえてくれるのでとても便利です。
私はテキストでxmlを書くときは、インデントが1つ深くなるたびに

  • 1タブずらす
  • 4つ半角スペースでずらす

のどちらかをしますが、基本1タブずらします。
どうしてもタブが使えない場合、4つ半角スペースでインデントをずらします。

逆にインデントがぐちゃぐちゃだと

f:id:Tairax:20190308084312p:plain

何の要素がどの深さにいるのか分かりません(;'∀')
このxmlの意味は

f:id:Tairax:20190309094056p:plain

こういう意味でした。
私はこんなxmlを見て、一発で理解できる自信がないですし、勘違いしそうです(;´・ω・)
こういう風にインデントがぐちゃぐちゃだと、勘違いを生みやすくなります。

インデントをきれいにそろえて書きましょう!

ネストは深くし過ぎない

ネストは深くし過ぎないように気を付けています。
深くし過ぎると分かりにくいからです。

では、深くし過ぎたxmlを見てみます。

f:id:Tairax:20190309110436p:plain

このxmlはどのような構造かというと

f:id:Tairax:20190309110740p:plain

最も深いところで7階層ものネストになっています。
ここまで深いと、管理したり、要素を追加するとき勘違いをして操作を誤りそうです。。。

なので、ネストはあまり深くし過ぎないようにしましょう!
私は、ネストは3段階までを心がけています。

まとめ:xmlを書いてみよう!

以上がxmlの書き方の解説と、私がxmlを書くときに心がけていることです。
まとめてみると

  1. xmlを書くときの3つのルール
    • 最初の行にxml宣言をすること
    • データはタグで囲うこと
    • タグのネストを守ること
  2. 私がxmlを書くときに気を付けていること
    • タグ名は分かりやすいものにする
    • ネストの深さをインデントでそろえる
    • ネストは深くし過ぎない

です。
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ

 

xmlについての記事をほかにも書いています。
こちらもご覧ください。

【Visual Stadio】xmlの作り方を解説します - エンジニアの将来って?