3. XML宣言の書き方

サンプル

まずは、以下のようなサンプル(整形式XML文書)を、ファイル名「test.xml」として、テキストエディタで作成しよう。

<?xml version="1.0" encoding="utf-8"?>
<books>
    <book>
        <name>書名</name>
        <author>著者名</author>
    </book>
</books>

完成した整形式XML文書をブラウザ(ここではFirefoxを使用)で読み込み、以下のように表示されていれば、一応完成だ。

XML文書の表示画面

整形式XML文書の条件

以下の条件を満足するXML文書を整形式XML文書(Well-Formed XML Documents)という。

  • 文書生成規則に合致する。
  • 整形式制約条件に従う。
  • 文書内で参照される解析対象実体が整形式となる。

文書生成規則とは、XML構文のルールのことで、ここでは、以下のルールに従うことを言う。

[1] document ::= prolog element Misc*

XML文書は、1つのprolog、1つのelement、0個以上のMiscから構成される。Miscは0個以上なので必要なければ省略可能だ。 では、このページでは、prolog部分のうちXML宣言(サンプルの1行目)と呼ばれるものを具体的に見てみよう。

XML宣言

ラベルprologは以下のように定義されている。例によってMiscを無視し、括弧内も0回または1回なので、 無視すると残りはラベルXMLDeclのみとなる。実際には、これも記号?なのでオプショナル指定であるが、通常、省略しない。

[22] prolog      ::= XMLDecl? Misc* (doctypedecl Misc*)?
[23] XMLDecl     ::= '<?xml' VersionInfo
                             EncodingDecl? SDDecl? S? '?>'
[24] VersionInfo ::= S 'version" Eq ("'" VersionNum "'"
                                   | '"' VersionNum '"')
[25] Eq          ::= S? '=' S?
[26] VersionNum  ::= '1.0'

この定義により記述している部分が、以下の部分であり、これを「XML宣言」と呼ぶ。

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

XML宣言において、VersionInfo(version属性)は省略できない。また、指定できるバージョン番号は「1.0」のみである。 さらに記号=(ラベルEqで定義)の前後には空白を置くことができるが、空白はXML構文ルールで以下のように定義されている。

[3] S ::= (#x20 | #x9 | #xD | #xA)+

XML文書に置ける空白文字は、ブランク(間隔文字)以外に、タブ文字、改行文字、復帰文字が含まれる。 また、ラベルEncodingDecl(encoding属性)のルールは、以下のように定義されている。

[80] EncodingDecl ::= S 'encoding' Eq ('"' EncName '"'
                                     | "'" EncName "'")
[81] Encname ::= [A-Za-z] ([A-Za-z0-9._] | '-')*

以上のことを一般化すると、XML宣言の書き方は以下のようになる。

<?xml version="1.0" encoding="エンコーディング名"?>

ページの先頭に戻る


Copyright © 2006 御隠居 (滄洲). All Rights Reserved.