DTD-構文

XML DTDは、ドキュメント内で指定することも、別のドキュメントに保存してから、ドキュメントをDTDドキュメントにリンクして使用することもできます。

構文

DTDの基本的な構文は次のとおりです-

<!DOCTYPE element DTD identifier
[
   declaration1
   declaration2
   ........
]>

上記の構文では-

  • DTD <!DOCTYPE区切り文字で始まります。

  • アン element 指定されたルート要素からドキュメントを解析するようにパーサーに指示します。

  • DTD identifierはドキュメントタイプ定義の識別子であり、システム上のファイルへのパスまたはインターネット上のファイルへのURLの場合があります。DTDが外部パスを指している場合、それは呼び出されますexternal subset.

  • ザ・ square brackets [ ] と呼ばれるエンティティ宣言のオプションのリストを囲みます internal subset

内部DTD

要素がXMLファイル内で宣言されている場合、DTDは内部DTDと呼ばれます。内部DTDとして参照するには、XML宣言のスタンドアロン属性を次のように設定する必要があります。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>TutorialsPoint</company>
   <phone>(011) 123-4567</phone>
</address>

上記のコードを見てみましょう-

Start Declaration −XML宣言を次のステートメントで開始します。

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>

DTD− XMLヘッダーの直後に、一般にDOCTYPEと呼ばれる文書型宣言が続きます。

<!DOCTYPE address [

DOCTYPE宣言には、要素名の先頭に感嘆符(!)が付いています。DOCTYPEは、DTDがこのXMLドキュメントに関連付けられていることをパーサーに通知します。

DTD Body − DOCTYPE宣言の後には、DTDの本体が続きます。ここで、要素、属性、エンティティ、および表記法を宣言します。

<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone_no (#PCDATA)>

ここでは、<name>ドキュメントの語彙を構成するいくつかの要素が宣言されています。<!ELEMENT name(#PCDATA)>は、要素を「#PCDATA」タイプとして定義します。ここで、#PCDATAは解析可能なテキストデータを意味します。

End Declaration−最後に、DTDの宣言セクションは、閉じ括弧と閉じ角括弧(]>)を使用して閉じられます。これで定義が事実上終了し、その後、XMLドキュメントがすぐに続きます。

ルール

  • 文書型宣言は、文書の先頭に表示する必要があります(XMLヘッダーのみが前に付きます)。文書内の他の場所では許可されていません。

  • DOCTYPE宣言と同様に、要素宣言は感嘆符で始まる必要があります。

  • 文書型宣言の名前は、ルート要素の要素型と一致する必要があります。

外部DTD

外部DTDでは、要素はXMLファイルの外部で宣言されます。これらには、有効な.dtdファイルまたは有効なURLのいずれかであるシステム属性を指定することによってアクセスされます。外部DTDとして参照するには、XML宣言のスタンドアロン属性を次のように設定する必要があります。 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>TutorialsPoint</company>
  <phone>(011) 123-4567</phone>
</address>

DTDファイルの内容 address.dtd 示されているとおりです-

<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>

タイプ

を使用して外部DTDを参照できます。 system identifiers または public identifiers

System Identifiers

システム識別子を使用すると、DTD宣言を含む外部ファイルの場所を指定できます。構文は次のとおりです-

<!DOCTYPE name SYSTEM "address.dtd" [...]>

ご覧のとおり、キーワードSYSTEMと、ドキュメントの場所を指すURI参照が含まれています。

Public Identifiers

パブリック識別子は、DTDリソースを見つけるメカニズムを提供し、次のように記述されます。

<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">

ご覧のとおり、キーワードPUBLICで始まり、その後に特殊な識別子が続きます。パブリック識別子は、カタログ内のエントリを識別するために使用されます。公開識別子は任意の形式に従うことができますが、一般的に使用される形式は公的公開識別子(FPI)と呼ばれます