5. まとめと例題(1)

ここでは、これまで説明した生成規則のまとめと簡単な例題のXML文書の作成を行います。

まとめ

まずは、生成規則をそのまま列挙します。

[1]  document     ::= prolog element Misc*

[3]  S            ::= (#x20 | #x9 | #xD | #xA)+
[4]  NameChar     ::= Letter | Digit | '.' | '-' | '_' | ':'
                      | CombiningChar | Extender
[5]  Name         ::= (Letter | '_' | ':') (NameChar)*

[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'

[39] element      ::= EmptyElemTag
                      | STag content ETag  [WFC: Element Type Match]
                                           [VC: Element Valid]
[40] STag         ::= '<' Name (S Attribute)* S? '>'  [WFC: Unique Att Spec]

[42] ETag         ::= '</' Name S? '>'
[43] content      ::= CharData? ((element | Reference
                      | CDSect | PI | Comment) CharData?)*
[44] EmptyElemTag ::= '<' Name (S Attribute)* S? '/>'  [WFC: Unique Att Spec]

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

次に生成規則を日本語訳(ただし、私訳)で表現してみます。

[1]  文書       ::= 前書き 要素 その他*

[3]  空白       ::= (#x20 | #x9 | #xD | #xA)+
[4]  名前文字   ::= 字 | 数字 | '.' | '-' | '_' | ':' | 結語文字 | 拡張文字
[5]  名前       ::= (字 | '_' | ':') (名前文字)*

[22] 前書き     ::= XML宣言? その他* (文書型宣言 その他*)?
[23] XML宣言    ::= '<?xml' 版情報 符号化宣言? 非依存宣言? 空白? '?>'
[24] 版情報     ::= 空白 'version" 等号 ("'" 版番号 '"
                                       | '"' 版番号 '"')
[25] 等号       ::= 空白? '=' 空白?
[26] 版番号     ::= '1.0'

[39] 要素       ::= 空要素タグ
                    | 開始タグ 要素内容 終了タグ  [整形式制約: 要素型適合]
                                                  [妥当性制約: 妥当な要素]
[40] 開始タグ   ::= '<' 名前 (空白 属性)* 空白? '>'  [整形式制約: 一意な属性指定]

[42] 終了タグ   ::= '</' 名前 空白? '>'
[43] 要素内容   ::= 文字データ? ((要素 | 参照
                      | CDATA節 | 処理命令 | コメント) 文字データ?)*
[44] 空要素タグ ::= '<' 名前 (空白 属性)* 空白? '/>'  [整形式制約: 一意な属性指定]

[80] 符号化宣言 ::= 空白 'encoding' 等号 ('"' 符号化名 '"'
                                     | "'" 符号化名 "'")
[81] 符号化名   ::= [A-Za-z] ([A-Za-z0-9._] | '-')*

例題

次のような個人情報を扱うアドレス帳のXML文書を作成します。

  • 氏名(姓名を分けない)
  • 住所情報
    • 郵便番号
    • 都道府県名
    • その他住所
  • 電話番号
    • 自宅電話番号
    • 携帯番号
    • E-mailアドレス

最初にこのような情報の階層構造を考え、次に各情報を表現する要素名を決めます。

  • 氏名(name)
  • 住所情報(adrInfo)
    • 郵便番号(zip)
    • 都道府県名(division)
    • その他住所(address)
  • 電話番号(tel)
    • 自宅電話番号(homeTel)
    • 携帯番号(portableTel)
    • E-mailアドレス(email)

各要素名を決めたので、最後にルート要素の名前と一人分の情報を表現する要素名、 そしてエンコーディング形式を決めます。

  • ルート要素(adrBooks)
  • 一人分の要素(adrData)
  • エンコーディング形式(UTF-8)

それでは、以上の取り決めに従ってサンプルを作成してみます。 ファイル名は「adr.xml」として作成します。

<?xml version="1.0" encoding="utf-8"?>
<adrBooks>
  <adrData>
    <name>XML一郎</name>
    <adrInfo>
      <zip>999-9999</zip>
      <division>東京都</division>
      <address>XML区1丁目1番1号</address>
    </adrInfo>
    <tel>
      <homeTel>999-999-9999</homeTel>
      <portableTel>000-000-0000</portableTel>
      <email>xml@xml.com</email>
    </tel>
  </adrData>
  <adrData>
    <name>XML二郎</name>
    <adrInfo>
      <zip>999-9999</zip>
      <division>東京都</division>
      <address>XML区1丁目1番2号</address>
    </adrInfo>
    <tel>
      <homeTel>999-999-8888</homeTel>
      <portableTel>000-000-9999</portableTel>
      <email>xml2@xml.com</email>
    </tel>
  </adrData>
</adrBooks>

ページの先頭に戻る


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