位置:首頁 > Web開發 > XML教學 > XML文檔類型聲明

XML文檔類型聲明

XML文檔類型聲明,俗稱DTD,是一種方式來描述XML語言準確。檢查的DTD對詞彙的適當的XML語言的語法規則的XML文檔的結構和有效性.

一個XML的DTD既可以在文檔中指定的,或者它可以被保存在一個單獨的文件中,並且可以分彆連結.

語法

一個DTD的基本語法如下所示:

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

在上麵的句法

  • DTD開始<!DOCTYPE分隔符.

  • 一個元素告訴解析器來解析從指定的根元素的文檔.

  • DTD標識符是用於文檔類型定義,它可以是路徑到互聯網上的文件係統或URL上的文件。如果DTD是指向外部路徑,它被稱為外部子集.

  • 方括號[]括起來的實體聲明稱為內部子集的可選列表.

內部DTD

一個DTD被稱為內部DTD,如果元素的XML文件中聲明。以指它作為內部DTD,XML聲明中的獨立屬性必須設置為yes。這意味著,在聲明的工作獨立於外部源.

句法

內部DTD的句法如下所示:

<!DOCTYPE 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>YiiBai</company>
   <phone>(011) 123-4567</phone>
</address>

讓我們通過上麵的代碼:

開始聲明 - 開始XML聲明與下麵的語句

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

DTD - 緊接在 XML header 文檔類型 聲明如下, 通常被稱為在DOCTYPE:

<!DOCTYPE address [

TDOCTYPE聲明有一個感歎號(!)的元素名稱的開始。在DOCTYPE通知一個DTD與此XML文檔相關聯的解析器.

DTD的內容 - DOCTYPE聲明後麵是DTD的內容,聲明的元素,屬性,實體和符號:

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

許多元素都在這裡聲明補<名稱>文檔的詞彙。 <!元素名稱(#PCDATA)>定義的元素名稱是鍵入“#PCDATA”的。這裡#PCDATA是語法分析的文本數據.

結束聲明 - 最後,DTD中的聲明部分使用的是右括號和右尖括號被關閉(]>)。這有效地結束的定義,然後,在XML文檔緊跟.

規則

  • 文檔類型聲明必須出現在文件(僅由XML頭之前)的開始 - 它不是在文檔中允許的其他地方。

  • 類似的DOCTYPE聲明,該聲明的元素必須以感歎號.

  • 在文檔類型聲明的名稱必須與根元素的元素類型相匹配.

外部DTD

在外部DTD元素的XML文件外聲明。它們是通過指定其可以是法律.dtd文件或一個有效的URL,係統的屬性進行訪問。是指它作為外部DTD,XML聲明standalone屬性必須設置為no。這意味著,聲明中包含從外部源信息.

句法

以下是句法外部DTD:

<!DOCTYPE root-element SYSTEM "file-name">

其中filename是.dtd擴展名的文件.

示例

下麵的例子顯示外部DTD用法:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE address SYSTEM "address.dtd">
<address>
  <name>Tanmay Patil</name>
  <company>YiiBai</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.

係統標識符

係統標識符可以指定包含DTD聲明一個外部文件的位置。語法如下:

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

正如你可以看到它包含的關鍵字係統和URI引用指向該文件的位置.

公共標識

公共標識符提供了一種機製來定位DTD資源和寫入如下:

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

正如你可以看到它開始與關鍵字public,然後由專門的標識。公共標識符被用來標識在一個目錄中的條目。公共標識可以按照任何格式,但是,常用的格式被稱為正式公開標識符,或符,FPI.