ブログ日記を,はてなダイアリーで作成されている方も多いかと思います。はてなダイアリーには,はてなで書かれた日記を他に移行するためのエクスポート機能が備わっています。このエクスポート機能を実行すると,次のようなXMLデータが出力されます。今回は,このはてなダイアリーのエクスポート機能で出力されるXMLデータを題材にして,XMLの基本構文を学習していきたいと思います。
例1:はてなダイアリーでエクスポートされたXML文書
|
◇XML宣言
例1の最初の行に記載されている下記の一文をXML宣言と呼びます。
|
XML宣言の中では,このXML文書の文字エンコーディング方式(UTF-8,UTF-16,Shift_JISなど)やXML文書が準拠しているXML仕様のバージョン番号(現時点では"1.0"または"1.1"が指定できますが,通常は"1.0"を使用します)などを記述します。
なお,各パラメータを省略するとバージョン番号は1.0,文字エンコーディング方式はUTF-8またはUTF-16とみなされます。この例のようにすべてデフォルト値と同じ値を設定する場合は,実はXML宣言の記述自体を省略することもできます。ただし,Shift_JIS形式で格納されているXML文書の場合には,XML宣言でShift_JISの指定を行わないとエラーになりますので注意しましょう。また,versionパラメータはencodingパラメータよりも必ず先に指定しなければなりません。
では,確認問題です。
確認問題1
(a) <?xml version="1.0" encoding="UTF-16"?> |
正解は(b)です。(a)は正しい文法のXML宣言です。(b)はversionパラメータをencodingパラメータよりも後で指定しているの,誤った文法です。(c)はencodingの記述を省略していますが,正しい文法です。この場合はUTF-8またはUTF-16とみなされます。(d)も正しい文法です。すべてデフォルトの値を使う場合には,XML宣言は省略できます。
◇要素
さて上の例1では,次のように,日記の本文が<body></body>というタグで囲まれています。
|
このように,データ単位ごとにデータをタグ付けしていくことをマークアップすると言います。マークアップすることで各データの「意味」を記載しておくことができます。例えば,この例では「日記のbody」であることを指定しています。
また,データの始めに付けるタグ(この例では<body>)を開始タグ,データの最後に付けるタグ(この例では</body>)を終了タグと呼びます。開始タグから終了タグまでの単位は要素,要素に付ける名称(この例ではbody)は要素名と言います。さらに,タグで囲まれたデータ部分は要素の内容と言います。
◇XML文書の階層構造
図1●XML文書の階層構造 |
◇空要素
要素の内容(タグで囲まれたデータ部分)が「空」の要素を空要素と言います。空要素には次の2通りの記述方法があります。
|
|
では確認問題です。
確認問題2 各選択肢はそれぞれXML文書を記述しています。誤った文法のXML文書を選択してください。
|
正解は(c)です。(a)は正しい文法のXML文書です。空要素が記述されています。(b)も正しい文法のXML文書です。(c)はルート要素が2つあるので,誤った文法です。ルート要素は必ず1つである必要があります。(d)はルート要素が一つなので, 正しい文法のXML文書です。
◇属性
例1のday要素に記載されているdate,titleなどは属性と呼びます。要素に対して1対1の関係になるデータは,このように属性として指定することができます。
|
属性の指定順序は任意のため,この要素は下記のように記述しても同じ意味になります。
|
属性値は二重引用符(")で囲むのではなく,一重引用符(')で囲むこともできます。これにより「明日はいよいよ"XMLマスター受験日" です」のように日記のタイトル自身に「"」が含まれている場合にも,属性の値として正しく指定することができます。
|
なお,1つの要素に同じ名前の属性を複数指定することはできません。次は誤った例です。
|
◇コメント
XML文書内にはコメント文(<!-- コメント -->)を使って,次のようにXML文書の中にコメントを記述することもできます。
例2:例1のXML文書にコメントを記述
|
コメント文は,要素の内容の中など任意の個所に記述できますが,XML宣言より前に記述したり,タグの中に記述することはできません。 では確認問題です。
確認問題3 次の中で,正しい文法のXML文書を選択してください。(複数選択)
|
正解は(a)と(c)です。(a)は正しいXML文書。(b)は,属性の値の中の「"」という文字を「"」で囲んでいるので誤った文法です。属性の値の中に「"」という文字を含むときには、「"」ではなく「'」で値を囲みます。(c)は正しいXML文書です。(d)は,XML宣言より前にコメントを記述しているので,誤った文法です。d. XML宣言より前にコメントを記述することはできません。
|