2 1 用XML文件的形式來描述Email

2021-05-22 01:49:15 字數 1563 閱讀 6005

1 元素宣告

dtd 中所用的第一種宣告是元素宣告。其形式如下:

其中,name是乙個標準的xml標記的名字。

content由以下三種之一組成:

關鍵字empty;

關鍵字any;

描述包含在本元素中的子元素的順序和重複次數的內容模型。

可以看出,文件中的每一元素在dtd中都有乙個相應的宣告。只有在dtd中定義

的元素才能出現在文件中。定義元素的順序是任意的。一般來說,先定義高層次的元素會更好些

在dtd中宣告元素時應注意:

(1)宣告以關鍵字element開頭,後面是元素名和包含於元素中的子元素列表

(2)資料型別不是dtd的乙個特徵。

(3)上述dtd中所定義的每個元素,在對應的xml文件中有且僅有乙個。若要指

定某個元素出現的次數,則需使用元素出現的次數,則需使用元素出現次數指示符

(4)xml是區分大小寫的,所以,element和上面其他大寫形式的關鍵字必須用大寫字母

2   元素內容型別(eelement content model)

元素內容通常有5種情況:empty,any,#pcdata,子元素和混合型.

1)empty型別

empty用於定義空元素,該元素只可能有屬性而不會有字元資料或子元素,如

元素.其形式為或者

宣告空元素的語法是

2)any型別

這種型別的元素宣告是:

這表明該元素可包含dtd中定義的其他任何元素或已編譯的字元資料.

any的使用應加以限制.dtd的出發點是設定規則來清晰地定義各種元素.而使用any就意味元素可以包含dtd中定義的所有其他元素,實質上沒有什麼規則限制.這與使用dtd的目的背道而馳,所以不鼓勵使用

3)#pcdata型別

不包含其他元素而包含字元資料的元素(如),用關鍵字#pcdata進行定義,它代表"已編譯的字元資料"

如pcdata可以包含除標記以外的一切字元,包括數字,字母和符號等. 被定義包含pcdata的元素不能包含任何其他子元素.

4)子元素型別

元素可以包含一系列的子元素,子元素內容模型用於指定某個元素可以包含哪些子元素,

如說明message元素包含4個元素,依次是header,body,signature和footer元素。

根據子元素間的關係,子元素內容模型可以有兩種可能的結構:序列和選擇。

(1)序列

對message元素的宣告,其所有子元素必須出且有僅出現一次,而且要依次出,這種結果稱為序列。

如,若與其對應的xml文件中,body子元素出現在header子元素之前而不是這後,則該文件即使是結構良好,但由於它未遵循該dtd,從而也是無效的。

使用序列時應注意兩點:

首先,序列中不能出#pcdata。

其次,子元素自身還可以包含其他子元素

(2)選擇

元素間的選擇可以進行如下宣告

將子元素用「|」進行分隔,表明elem元素的子元素為subelem1,subelem2,subelem3三者之一

5)混合型別

若某元素既包含子元素又包含已編譯的字元資料,則該元素具有混合內容

其宣告的語法如下:

形式良好的 XML 文件

乙個 形式良好 的 xml 文件擁有正確的語法。乙個 形式良好 的 xml 文件會遵守前幾章介紹過的 xml 語法規則 george john reminder don t forget the meeting 乙個合法的 xml 文件是 形式良好 的 xml 文件,同樣遵守文件型別定義 dtd 的...

XML學習 形式良好的文件 有效的文件

形式良好的文件 符合基本的語法規範 有效的文件 不僅符合基本的語法規範,還符合dtd或者schema定義 xml 資料 dtd schema 定義資料 xsl css 資料島 資料如何顯示 schema規範中 1.所有標籤和屬性都需要有schema檔案來定義 2.在根標籤引入schema約束檔案 通...

用dom4j來修改xml文件

用dom4j來修改xml文件 建立文件document document document documenthelper.createdocument 建立元素 element element document.addelement 元素名稱 建立屬性 element.addattribute 屬性...