XML

読み:えっくすえむえる / 英語表記:Extensible Markup Language

データをタグで囲み、要素の名前と入れ子によって構造を表現するマークアップ言語。用途に応じて要素名を定義でき、データ交換や設定ファイルなどに使われる。

イマシルちゃんの解説

箱の中に小さな箱を入れて、それぞれに「商品」「名前」「値段」と札を付けるとするよ。
中身だけを並べるより、何を表しているのかわかりやすいよね。

ただし、札の名前と意味は、渡す相手ともそろえておく必要があるんだ。
きれいに箱詰めしただけでは、届け方や保管の決まりまでは決まらないよ。

より深い解説

表すものと基本の形

XMLはW3Cが定めた言語である。タグや属性を使い、データの構造をテキストとして表す。表示の見た目や通信手順を、それだけで決めるものではない。

次は、独自に作った商品データの例である。

<product code="A7">
  <name>ノート</name>
  <price>240</price>
</product>

productの内側にnameとpriceを置くことで、商品に名前と価格が属することを表せる。codeは属性である。XML自体がpriceを必ず円として扱うわけではなく、値の意味は利用者間で取り決める。

文書として満たす規則

規則内容
全体の親文書をまとめるルート要素は一つ
対応開始と終了の名前を一致させる
入れ子要素が途中で交差しないように閉じる
名前の比較英字の大文字と小文字を区別する
特殊文字区切りと紛らわしい文字は参照表現などで表す

このような構文上の規則を満たす文書を整形式のXML文書という。構文が正しくても、必要な項目が欠けていたり、価格の欄が文字列だったりする場合がある。

データの約束を検証する

DTDやXML Schemaを使うと、要素の並びや出現回数などの制約を定められる。XML Schemaでは数値や日付などのデータ型も記述できる。

構文として読めることと、決めたデータ仕様に合うことを分けて確認する。相手が送った文字列をそのまま信頼せず、期待する項目と値を検査する必要がある。

通信仕様との違い

技術XMLとの関係
SOAPXMLでメッセージを記述する
SAMLXMLで本人確認の結果などを表す
WebSocketメッセージはテキストやバイナリを運べ、XMLは必須ではない
XMLHttpRequest名前にXMLを含むが、JSONや通常の文字列も扱える

XMLはデータの表現方法であり、双方向通信を実現するための接続方式ではない。たとえばWebSocket上でXMLの文字列を送ることはできるが、XMLを選ぶことと通信路を選ぶことは別の設計判断である。

実際の試験ではここに出る!

この用語が出てくる記事

↑