2010年12月14日火曜日

ホームページを作ろう - 1.17 属性リスト(DTD編)

1.17 属性リスト(DTD編)

これまでは要素を中心に勉強してきましたが,その中のいくつかの要素では属性を指定しています。例えばhtml要素では,xmlns属性,xml:lang属性,lang属性を指定しました。

<html xmlns="http://www.w3.org/1999/xhtml"
xml:lang="ja" lang="ja">
この属性の記述方法をもう一度復習しておきましょう。属性は属性名属性値を等号で結び,属性値は必ず2重引用符(あるいは単一引用符)で囲んで記述します。また,複数の属性を記述する場合は,各属性を1つ以上の空白文字で区切って記述するようにします。
属性名="属性値"
実は,この属性に関するルールもDTDに定められています。例にhtml要素のDTDを抜粋してみましょう。
<!ENTITY % LanguageCode "NMTOKEN">

<!ENTITY % URI "CDATA">
<!ENTITY % i18n
"lang %LanguageCode; #IMPLIED
xml:lang %LanguageCode; #IMPLIED
dir (ltr|rtl) #IMPLIED"

>

<!ELEMENT html (head, body)>
<!ATTLIST html
%i18n;
id ID #IMPLIED
xmlns %URI; #FIXED 'http://www.w3.org/1999/xhtml'
>
このとき「%i18n;」の部分は,パラメータ実体参照なので要素の場合と同様に置換して考えると次のように書くことができます。
<!ATTLIST html
lang NMTOKEN #IMPLIED
xml:lang NMTOKEN #IMPLIED
dir (ltr|rtl) #IMPLIED
id ID #IMPLIED
xmlns CDATA #FIXED 'http://www.w3.org/1999/xhtml'
>
この<!ATTLIST・・・>の部分が属性に関するもので属性リスト宣言と呼びます。属性リスト宣言の一般形式は,次のようになります。
<!ATTLIST 要素名 属性名 属性型 デフォルト指定>
複数の属性を宣言する場合は,「属性名,属性型,デフォルト指定」の部分を空白文字で区切り列挙します。
要素名
属性リスト宣言の対象となる要素名を記述します。上記の場合,対象はhtml要素であることが分かります。
属性名
対象の要素に対して指定することができる属性名を記述します。つまり,ここに記述されていない属性名をXHTML(HTML)で記述することはできないので注意してください。上記の場合,html要素に指定できる属性名は,lang,xml:lang,dir,id,xmlnsであることが分かります。
属性型
属性のデータ型を指定します。指定できる主な属性型を以下に示します。
CDATA
文字列型であり,空白を含む様々な文字を記述することができます。上記の例では,xmlns属性が,この型になっています。
ID
1つのページ内で同じ値が出てこない,つまり一意に識別できる値を記述します。なお,第1文字目に数字を記述することはできないので注意してください。上記の例では,id属性が,この型になります。
NMTOKEN
空白を含まない文字列,いわゆる名前(単語)を記述するデータ型です。これらの属性の多くはコメントの役割で使用され,多くは,その書式の仕様が別に示されています。上記の例では,lang属性,xml:lang属性が,この型になります。ちなみに,このlang属性,xml:lang属性で使用する文字列の仕様は注釈で「RFC3066」のものを使用することが記述されています。
列挙型
列挙型は,属性値に指定すべき文字列を列挙したものです。上記の例では,dir属性が,この型になります。つまり属性値には「ltr」,「rtl」のいずれかを指定することになります。
デフォルト指定
デフォルト指定では,属性が任意のものか必須のものか,また任意である場合の既定値に関する情報を示しています。
#IMPLIED
#IMPLIEDが指定された属性は,その指定が任意であることを意味しています。つまり,必要に応じて記述したり,省略することができる属性を意味します。
#REQUIRED
#REQUIREDが指定された属性は,その指定が必須であることを意味している。つまり,その属性は必ず記述しなければならないことを意味します。
#FIXED
#FIXEDが指定された属性は,その指定は任意であるが,指定する場合には,後続する引用符で囲まれた文字列と属性値が一致しなければならないことを意味します。
文字列
2重引用符で囲まれた文字列が記述されている場合,その属性を省略した時の既定値が,その文字列で記述された値になることを意味します。
以上のことから,先に例として取り上げたhtml要素の属性の意味は次のようになります。
lang属性,xml:lang属性
省略可能。言語コード(RFC3066)を指定します。日本語の場合,「ja」を指定します。
dir
省略可能。書字方向(左から右へ書く,右から左へ書く)を指定します。日本語の場合,左から右へ書く言語なので,「ltr」を指定します。
id属性
省略可能。ページを識別する一意な文字列を指定します。
xmlns属性
省略可能。デフォルト名前空間の指定を行います。指定する場合,必ず「http://www.w3.org/1999/xhtml」でなければなりません。

0 件のコメント:

コメントを投稿