XML > XML > 属性リスト宣言(attribute-list declaration)
属性リスト宣言
要素に含まれる属性名、属性の型、デフォルト値を宣言する。
(書式) 以下の2種類の書式がある <!ATTLIST 要素名 属性名 属性型 デフォルト値> <!ATTLIST 要素名 属性名 属性型 デフォルト値 属性名 属性型 デフォルト値 ・・・ 属性名 属性型 デフォルト値> ・属性型 属性の型の種類 ・デフォルト値 属性指定を省略した場合に使用されるデフォルト値 |
(注意)
・DTD 内で重複して同じ属性リスト宣言を行った場合は先に宣言されているものが使用される。
属性型
属性型には以下のものがある。
分類 | 種類 | 内容 |
---|---|---|
文字列型 | CDATA | 文字データ |
トークン型 | ENTITY | 実体参照 |
ENTITIES | 複数の実体参照(空白区切り) | |
ID | XML文書中で一意の値 デフォルト値は #REQUIRED か #IMPLIED である必要がある |
|
IDREF | ID型の属性値を参照 | |
IDREFS | 複数のID型の属性値を参照(空白区切り) | |
NMTOKEN | NMTOKEN 型文字列(一文字目に数字・ハイフン・ピリオドが使用出来る) | |
NMTOKENS | 複数の NMTOKEN 型文字列(空白区切り) | |
列挙型 | 属性の型にとりうる候補値(文字列)を | 区切りで列挙し、括弧で括る (文字列はダブルクォーテーション等で囲まないこと) |
(注意)
・1つの要素に複数の ID 型属性を定義することは出来ない
・列挙型の属性型のデータ型は NMTOKEN 型なので、NMTOKEN 型に合わない文字列は指定出来ない
デフォルト値
デフォルト値の指定には以下のものがある。
種類 | 内容 |
---|---|
"文字列" | デフォルト値を文字列で指定する |
#IMPLIED | 属性が省略可能であることを示す |
#REQUIRED | 属性が必須であることを示す |
#FIXED "文字列" | 指定文字列以外の属性値が指定できないことを示す |
(注意)
・ID 型の属性のデフォルトには #REQUIRED と #IMPLIED しか指定出来ない
属性リスト宣言の例
(例1) 宣言 <!ATTLIST 社員 氏名 CDATA #REQUIRED> XML・・・氏名属性が文字列かつ必須 <社員 氏名="山田太郎"/> (例2) 宣言 <!ATTLIST 社員 雇用形態 (正社員 | 派遣社員 | パート) "正社員"> XML・・・雇用形態属性が"正社員","派遣社員","パート"のいずれかで、省略時は"正社員" <社員 雇用形態="正社員"/> (例3) 宣言 <!ATTLIST 社員 学歴 CDATA #IMPLIED> XML・・・学歴属性は省略可能 <社員/> (例4) 宣言 <!ATTLIST 社員 氏名 CDATA #REQUIRED> <!ATTLIST 社員 年齢 CDATA #REQUIRED> <!ATTLIST 社員 学歴 CDATA #IMPLIED> 上記は以下のようにも記述可能 <!ATTLIST 社員 氏名 CDATA #REQUIRED 年齢 CDATA #REQUIRED 学歴 CDATA #IMPLIED> XML <社員 氏名="山田太郎" 年齢="20"/> (例5) 宣言 <!ELEMENT 社員 #PCDATA> <!ATTLIST 社員 氏名 CDATA #REQUIRED> <!ATTLIST 社員 所属部署 IDREF #REQUIRED> <!ELEMENT 部署 #PCDATA> <!ATTLIST 部署 部署コード ID #REQUIRED> XML <社員 氏名="山田太郎" 所属部署="D1"/> <社員 氏名="鈴木花子" 所属部署="D2"/> <社員 氏名="斉藤一郎" 所属部署="D3"/> <部署 部署コード="D1">管理部</部署> <部署 部署コード="D2">営業部</部署> <部署 部署コード="D3">開発部</部署> (例6) 宣言 <!ELEMENT 社員 #PCDATA> <!ATTLIST 社員 氏名 CDATA #REQUIRED> <!ATTLIST 社員 保有資格 IDREFS #REQUIRED> <!ELEMENT 資格 #PCDATA> <!ATTLIST 資格 資格コード ID #REQUIRED> XML <社員 氏名="山田太郎" 保有資格="S1 S2"/> <社員 氏名="鈴木花子" 保有資格="S1"/> <社員 氏名="斉藤一郎" 保有資格="S2 S3"/> <資格 資格コード="S1">XMLマスター</資格> <資格 資格コード="S2">基本情報処理技術者</資格> <資格 資格コード="S3">Oracle Master</資格> |