DTD: 属性リスト宣言(4) NMTOKEN、NMTOKENS

2006年07月16日(日)更新


■属性のデータ型(4) NMTOKEN、NMTOKENS

たけち: 今回も属性リスト宣言について学ぶよ。NMTOKENNMTOKENSをみてみよう。

さらら: はい。でも、NMTOKENNMTOKENSなんて聞きなれない言葉ね。

ここでは属性リスト宣言を学びます。

■名前(NAME)に使える文字

たけち: そうだね。NMTOKENの前に要素や属性の「名前(NAME)に使える文字」について確認しておこう。

さらら: 名前に使える文字?

たけち: XMLでは、要素や属性の「名前(NAME)に使える文字」は次のようになっているんだ。これは、ID、IDREF、IDREFS、ENTITY、ENTITIESについても同じなんだね。

  • 先頭の文字
    • 基本文字(base character).....アルファベット、ひらがな、カタカナ等
    • 表意文字(ideographic character).....漢字等
    • アンダースコア(_)
    • コロン(:)
  • 2文字目以降の文字
    • [先頭の文字]に使える文字
    • エクステンダー(extender)......長音、々等
    • 結合文字(combining character)......アクセント記号、仮名の濁点等
    • 数字
    • ハイフン(-)
    • ピリオド(.)

■NMTOKEN、NMTOKENS

さらら: そうなんだぁ〜。

たけち: でね。NMTOKENNMTOKENSでは、名前(NAME)の場合には2文字目以降に使える文字を、先頭の文字に使えるんだ。

さらら: へぇ〜。じゃあ、NMTOKENSって、最初の文字に数字を書いていいの?。

たけち: そうなんだよ。

さらら: そっか。で、NMTOKENSは空白で区切って複数のNMTOKENを書けるのね。そうでしょ。


■属性リスト宣言とXMLインスタンスの例(NMTOKENの例)

たけち: そうそう。じゃ。そろそろ、NMTOKEN属性を使った簡単なDTDとそのDTDに従ったXMLインスタンスの例を書いてみようね。

さらら: は〜い。

NMTOKENの例

さらら: この例では、前回のIDとIDREFの時のようにpoet要素のpno属性があるけど、ここではNMTOKEN型なのね?

たけち: そう。ID型だと、最初の文字に数字が使えないから、"m0004"というように最初に英字を使っていたよね。

さらら: そっか。でも、NMTOKEN型とすると"0004"のように数字が書けるのね。

たけち: その代わり一意性の保証はできないけどね。

さらら: あっ、そうね。

たけち: 今回はここまで。次回は、属性リスト宣言のENTITY、ENTITIESのデータ型について学ぼうね。

さらら: あっ、はい。ありがと。

→ 次は、属性リスト宣言(5) の予定です。 (^ ^;