DTD 語法快速指南

2021-06-01 21:23:20 字數 3032 閱讀 7680

**:

a、b、c 和 d 是在下例中代表元素的變數。

元素必須有正好乙個a、至少乙個b(由加號表示)、零個或多個c(由星號表示)以及零個或乙個d(由問號表示):

元素可能有abc之一:

元素不包含任何內容:

元素可以包含在 dtd 中列出的任何元素:

元素可能包含經過語法分析的字元資料或另乙個元素(element2)。星號(*)表示混合內容模型 — 其中元素可以包含不同型別的屬性。

下例將文字 "entity reference" 插到文件中它出現的任何地方:

可以看到在 xml 文件中該實體引用元素如下:

&element;

下例表明其元素是乙個包含三個屬性的空標記:屬性 1(att1)是乙個可選屬性,屬性 2(att2)是帶有固定值"a"的屬性,屬性 3(att3)是必需的文字屬性。

可以看到在 xml 文件中使用的這個元素如下:

屬性cdata表示包括的資訊應該是文字。id屬性表明必須填入唯一的標識。每個元素只能有乙個id屬性。另外,cdata表示att2att3可能包含任何字串。

回頁首

工作示例

可以使用 microsoft internet explorer 5 或更高版本檢視清單 4 中顯示的 xml 文件 ― 前面示例中使用的 people.xml 檔案的擴充套件版本。如果在 ie5 中開啟 people.xml,應該看到乙個樹結構。這是因為 ie5 帶有能夠將 xml 文件語法分析成元素樹的 xml 語法分析器。

還可以在 參考資料中找到這個檔案及其 dtd。

清單 4. people.xml 的完整清單

<?xml version="1.0"?>
jane
fung
good-looking
civic
&ibm;
g.i.
jane
tough

5000]]>
she has a car

關於 xml 的幾點說明

對 xml 的深入**主要考慮的是文件頭中的幾個元素,從以下開始:

<?xml version="1.0"?>

每個 xml 文件都必須包含這樣的乙個頭,向 xml 語法分析器表示它是乙個 xml 文件。頭中的下一行告訴 xml 語法分析器該文件是使用什麼字元編碼來建立的:

在 unix 系統上建立的 xml 文件和在 windows 系統上建立的 xml 文件可能有不同的編碼。

還可以為第一行設定可選的standalone屬性。standalone 的預設值是 no。 no 值表示該 dtd 定義是在另乙個檔案中描述的。 yes值表明該 dtd 應該在 xml 文件內部定義。我沒有為示例設定這個屬性;如果想設定,它應該看起來如下:

<?xml version="1.0" standalone='yes'?>

]>

還應該注意使這個文件格式正確的方法。例如,所有空標記都用乙個右斜槓結束,如下所示:

還請注意cdata用於對所有若不進行轉義就會以 xml 語言解釋的任何資料進行轉義,例如:

5000]]>

如果適當的格式化,這一行將以文字內容顯示:

5000

可以從 xml 檔案的進一步研究中獲益,甚至可能從對您自己的檔案執行 xml 語法分析器獲益(請參閱 參考資料)。但是現在,讓我們看一下 people.xml 檔案的 dtd。

清單 5. people.dtd 的完整清單

關於 dtd 的幾點說明

使用 快速指南作為參考,通過比較 xml 檔案及其 dtd,您應該能夠方便地定義 dtd 和 xml 檔案中各元素之間的關係。不過,還有兩個剩下的元素,您可能感興趣。

清單 4 包含了對實體的引用。

&ibm;

實體引用用於代替在 dtd 文件中定義的特定字元或字串。進行了語法分析後,該實體引用將讀作:

proud to work for ibm

還應該注意,標記的內容型別是any。這表示可能包含所有以前已在 dtd 中宣告過的元素。因此,other元素可能包含carhouse元素,如下:

she has a car

DTD 語法快速指南

a b c 和 d 是在下例中代表元素的變數。元素必須有正好乙個a 至少乙個b 由加號表示 零個或多個c 由星號表示 以及零個或乙個d 由問號表示 元素可能有a或b或c之一 元素不包含任何內容 元素可以包含在 dtd 中列出的任何元素 元素可能包含經過語法分析的字元資料或另乙個元素 element2...

快速入門dtd

今天我們來學習一下dtd的使用以及約束。我們來說一下什麼是有效的xml文件?內容結構嚴謹遵守自身標記,能通過自身的語法檢查,通過dtd驗證的xml文件稱為有效的xml文件。dtdschema 兩者都可以用來約束xml文件,schema 比dtd強大同時難度也比dtd高一點,我們只要學習好dtd然後去...

DTD快速入門

1.dtd宣告型別 內部的 doctype 宣告 xml version 1.0 doctype note element note to,from,heading,body element to pcdata element from pcdata element heading pcdata e...