Dtd-syntax
DTD-構文
XML DTDは、ドキュメント内で指定するか、別のドキュメントに保持してから、そのドキュメントをDTDドキュメントにリンクして使用できます。
構文
DTDの基本的な構文は次のとおりです-
<!DOCTYPE element DTD identifier
[
declaration1
declaration2
........
]>
上記の構文では-
- DTD は<!DOCTYPE区切り文字で始まります。
- element は、指定されたルート要素からドキュメントを解析するようにパーサーに指示します。
- * DTD識別子*は、ドキュメントタイプ定義の識別子です。これは、システム上のファイルへのパスまたはインターネット上のファイルへのURLです。 DTDが外部パスを指している場合、* externalサブセット*と呼ばれます。
- *角括弧[] *は、*内部サブセット*と呼ばれるエンティティ宣言のオプションリストを囲みます。
内部DTD
要素がXMLファイル内で宣言されている場合、DTDは内部DTDと呼ばれます。 内部DTDとして参照するには、XML宣言の_standalone_属性を yes に設定する必要があります。 つまり、宣言は外部ソースとは無関係に機能します。
構文
内部DTDの構文は次のとおりです-
<!DOCTYPE root-element [element-declarations]>
ここで、_root-element_はルート要素の名前であり、_element-declarations_は要素を宣言する場所です。
例
以下は、内部DTDの簡単な例です-
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
<!DOCTYPE address [
<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
]>
<address>
<name>Tanmay Patil</name>
<company>finddevguides</company>
<phone>(011) 123-4567</phone>
</address>
上記のコードを見てみましょう-
宣言の開始-次のステートメントでXML宣言を開始します。
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
*DTD* -XMLヘッダーの直後に、通常DOCTYPEと呼ばれる_document type declare_が続きます-
<!DOCTYPE address [
DOCTYPE宣言には、要素名の先頭に感嘆符(!)があります。 DOCTYPEは、DTDがこのXMLドキュメントに関連付けられていることをパーサーに通知します。
- DTD本体*-DOCTYPE宣言の後にDTDの本体が続きます。ここでは、要素、属性、エンティティ、および表記法を宣言します-
<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone_no (#PCDATA)>
ここでは、<name>ドキュメントの語彙を構成するいくつかの要素が宣言されています。 <!ELEMENT name(#PCDATA)>は、エレメント_name_をタイプ「#PCDATA」に定義します。 ここで、#PCDATAは解析可能なテキストデータを意味します。
宣言の終了-最後に、DTDの宣言セクションは、閉じ括弧と閉じ山括弧(]>)を使用して閉じられます。 これにより効果的に定義が終了し、その後、XMLドキュメントがすぐに続きます。
規則
- 文書タイプ宣言は、文書の先頭に表示する必要があります(XMLヘッダーのみが先行します)-文書内の他の場所では許可されません。
- DOCTYPE宣言と同様に、要素宣言は感嘆符で始まる必要があります。
- 文書型宣言の名前は、ルート要素の要素型と一致する必要があります。
外部DTD
外部DTD要素では、XMLファイルの外部で宣言されます。 これらは、有効な_.dtd_ファイルまたは有効なURLのいずれかであるシステム属性を指定することによりアクセスされます。 外部DTDとして参照するには、XML宣言の_standalone_属性を no に設定する必要があります。 つまり、宣言には外部ソースからの情報が含まれます。
構文
以下は外部DTDの構文です-
<!DOCTYPE root-element SYSTEM "file-name">
ここで、file-name_は、。dtd_拡張子を持つファイルです。
例
次の例は、外部DTDの使用法を示しています-
<?xml version = "1.0" encoding = "UTF-8" standalone = "no" ?>
<!DOCTYPE address SYSTEM "address.dtd">
<address>
<name>Tanmay Patil</name>
<company>finddevguides</company>
<phone>(011) 123-4567</phone>
</address>
DTDファイル address.dtd の内容は次のとおりです-
<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
タイプ
*system identifiers* または *public identifiers* を使用して、外部DTDを参照できます。
システム識別子
システム識別子を使用すると、DTD宣言を含む外部ファイルの場所を指定できます。 構文は次のとおりです-
<!DOCTYPE name SYSTEM "address.dtd" [...]>
ご覧のとおり、キーワードSYSTEMと、ドキュメントの場所を指すURI参照が含まれています。
公開識別子
パブリック識別子はDTDリソースを見つけるためのメカニズムを提供し、以下のように書かれています-
<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">
ご覧のとおり、キーワードPUBLICで始まり、その後に特殊な識別子が続きます。 パブリック識別子は、カタログ内のエントリを識別するために使用されます。 公開識別子は任意の形式に従うことができますが、一般的に使用される形式は_Formal Public Identifiers、またはFPIと呼ばれます。