Dtd-attributes
DTD-属性
この章では、DTD属性について説明します。 属性は、要素に関するより多くの情報を提供し、より正確には、要素のプロパティを定義します。 XML属性は常に名前と値のペアの形式です。 要素は、任意の数の一意の属性を持つことができます。
属性宣言は、1つを除く多くの点で要素宣言に非常によく似ています。要素の許容コンテンツを宣言する代わりに、各要素の許容属性のリストを宣言します。 これらのリストは、ATTLIST宣言と呼ばれます。
構文
DTD属性宣言の基本的な構文は次のとおりです-
<!ATTLIST element-name attribute-name attribute-type attribute-value>
上記の構文では-
- 要素に属性が含まれる場合、DTD属性は<!ATTLISTキーワードで始まります。
- element-name は、属性が適用される要素の名前を指定します。
- attribute-name は、element-nameに含まれる属性の名前を指定します。
- attribute-type は属性のタイプを定義します。 これについては、次のセクションで詳しく説明します。
- attribute-value は、属性で定義する必要がある固定値を取ります。 これについては、次のセクションで詳しく説明します。
例
以下は、DTDでの属性宣言の簡単な例です-
<?xml version = "1.0"?>
<!DOCTYPE address [
<!ELEMENT address ( name )>
<!ELEMENT name ( #PCDATA )>
<!ATTLIST name id CDATA #REQUIRED>
]>
<address>
<name id = "123">Tanmay Patil</name>
</address>
上記のコードを見てみましょう-
- 次の文でXML宣言で始まります-
<?xml version = "1.0"?>
- XMLヘッダーの直後には、ドキュメントタイプ宣言があります。これは、以下に示すように、通常DOCTYPEと呼ばれます- + DOCTYPEは、DTDがこのXMLドキュメントに関連付けられていることをパーサーに通知します。 DOCTYPE宣言には、要素名の先頭に感嘆符(!)があります。
<!DOCTYPE address [
- 以下はDTDの本体です。 ここで、要素と属性を宣言しました-
<!ELEMENT address ( name )>
<!ELEMENT name ( #PCDATA )>
- 要素_name_の属性_id_は以下のように定義されます- +ここで、属性タイプは_CDATA_であり、その値は_#REQUIRED_です。
<!ATTLIST name id CDATA #REQUIRED>
属性宣言のルール
- XMLドキュメントで使用されるすべての属性は、Attribute-List Declarationを使用してDocument Type Definition(DTD)で宣言する必要があります
- 属性は、開始タグまたは空のタグでのみ表示されます。
- キーワードATTLISTは大文字でなければなりません
- 特定の要素の属性リスト内で重複する属性名は許可されません。
属性タイプ
属性を宣言するとき、プロセッサが値に表示されるデータを処理する方法を指定できます。 私たちは3つの主要なカテゴリに属性タイプを分類することができます-
- 文字列型
- トークン化されたタイプ *列挙型
次の表は、さまざまな属性タイプの概要を示しています-
Sr.No. | Type & Description |
---|---|
1 |
CDATAは文字データです(マークアップではなくテキスト)。 _String Attribute Type_です。 |
2 |
ID これは属性の一意の識別子です。 複数回表示されることはありません。 これは、_Tokenized Attribute Type_です。 |
3 |
IDREF 別の要素のIDを参照するために使用されます。 要素間の接続を確立するために使用されます。 これは、_Tokenized Attribute Type_です。 |
4 |
IDREFS 複数のIDを参照するために使用されます。 これは、_Tokenized Attribute Type_です。 |
5 |
ENTITY ドキュメント内の外部エンティティを表します。 これは、_Tokenized Attribute Type_です。 |
6 |
ENTITIES ドキュメント内の外部エンティティのリストを表します。 これは、_Tokenized Attribute Type_です。 |
7 |
NMTOKEN これはCDATAに似ており、属性値は有効なXML名で構成されています。 これは、_Tokenized Attribute Type_です。 |
8 |
NMTOKENS これはCDATAに似ており、属性値は有効なXML名のリストで構成されています。 これは、_Tokenized Attribute Type_です。 |
9 |
NOTATION 要素は、DTDドキュメントで宣言された表記法を参照します。 _Enumerated Attribute Type_です。 |
10 |
Enumeration 値の1つが一致する必要がある特定の値のリストを定義できます。 _Enumerated Attribute Type_です。 |
属性値宣言
各属性宣言内で、ドキュメント内での値の表示方法を指定する必要があります。 あなたが属性かどうかを指定することができます-
- デフォルト値を持つことができます
- 固定値を持つことができます
- 必要とされている
- 暗示されている
デフォルト値
デフォルト値が含まれています。 値は、単一引用符( ')または二重引用符( ")で囲むことができます。
構文
以下は値の構文です-
<!ATTLIST element-name attribute-name attribute-type "default-value">
ここで、_default-value_は定義された属性値です。
例
以下は、デフォルト値を持つ属性宣言の簡単な例です-
<?xml version = "1.0"?>
<!DOCTYPE address [
<!ELEMENT address ( name )>
<!ELEMENT name ( #PCDATA )>
<!ATTLIST name id CDATA "0">
]>
<address>
<name id = "123">
Tanmay Patil
</name>
</address>
この例には、デフォルト値が_0_である属性_id_を持つ_name_要素があります。 デフォルト値は二重引用符で囲まれています。
固定値
属性値が定数であり、変更できないことを指定する場合は、#FIXEDキーワードの後に固定値が続きます。 固定属性の一般的な使用法は、バージョン番号の指定です。
構文
以下は、固定値の構文です-
<!ATTLIST element-name attribute-name attribute-type #FIXED "value" >
ここで、#FIXEDは定義された属性値です。
例
以下は、FIXED値を使用した属性宣言の簡単な例です-
<?xml version = "1.0"?>
<!DOCTYPE address [
<!ELEMENT address (company)*>
<!ELEMENT company (#PCDATA)>
<!ATTLIST company name NMTOKEN #FIXED "finddevguides">
]>
<address>
<company name = "finddevguides">we are a free online teaching faculty</company>
</address>
この例では、キーワード#FIXEDを使用しています。これは、値 "finddevguides"が要素<company>の属性_name_の唯一の値であることを示しています。 属性値を変更しようとすると、エラーが発生します。
以下は無効なDTDです-
<?xml version = "1.0"?>
<!DOCTYPE address [
<!ELEMENT address (company)*>
<!ELEMENT company (#PCDATA)>
<!ATTLIST company name NMTOKEN #FIXED "finddevguides">
]>
<address>
<company name = "abc">we are a free online teaching faculty</company>
</address>
必要な値
属性が必須であることを指定したいときはいつでも、#REQUIREDキーワードを使用してください。
構文
以下は#REQUIREDの構文です-
<!ATTLIST element-name attribute-name attribute-type #REQUIRED>
- REQUIREDは定義された属性タイプです。
例
以下は、#REQUIREDキーワードを使用したDTD属性宣言の簡単な例です-
<?xml version = "1.0"?>
<!DOCTYPE address [
<!ELEMENT address ( name )>
<!ELEMENT name ( #PCDATA )>
<!ATTLIST name id CDATA #REQUIRED>
]>
<address>
<name id = "123">
Tanmay Patil
</name>
</address>
この例では、#REQUIREDキーワードを使用して、要素名_name_に属性_id_を指定する必要があることを指定しています。
暗黙の値
属性を宣言するときは、常に値宣言を指定する必要があります。 宣言する属性にデフォルト値がなく、固定値がなく、必要ない場合は、属性を_implied_として宣言する必要があります。 キーワード#IMPLIEDは、_implied_として属性を指定するために使用されます。
構文
以下は、#IMPLIEDの構文です-
<!ATTLIST element-name attribute-name attribute-type #IMPLIED>
ここで、#IMPLIEDは定義された属性タイプです。
例
以下は#IMPLIEDの簡単な例です
<?xml version = "1.0"?>
<!DOCTYPE address [
<!ELEMENT address ( name )>
<!ELEMENT name ( #PCDATA )>
<!ATTLIST name id CDATA #IMPLIED>
]>
<address>
<name/>
</address>
この例では、エレメント_name_に含める属性を指定しないため、キーワード#IMPLIEDを使用しました。 オプションです。