Dtd-attributes

提供:Dev Guides
移動先:案内検索

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*

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>
  1. 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を使用しました。 オプションです。