DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML基礎 >> 第8章 文檔類型定義和合法性(2)
第8章 文檔類型定義和合法性(2)
編輯:XML基礎     

XML教程

 

8.5.3 子元素列表

由於SEASON元素被聲明為可以接受任何元素作為子元素,因而可以接受各種各樣的元素。當遇到那些多多少少有些非結構化的文本,如雜志文章時,這種情況就很有用。這時段落、副欄、項目列表、序號列表、圖形、照片以及子標題可出現在文檔的任意位置。然而,有時可能想對數據的安排上多實行些規則和控制。例如,可能會要求每一個LEAGUE元素有一個LEAGUE_NAME子元素,而每個PLAYER元素要有一個GIVEN_NAME和SURNAME子元素,並且GIVEN_NAME要放在SURNAME之前。

為了聲明LEAGUE元素必須有一個名稱,只要聲明LEAGUE_NAME元素,然後在LEAGUE聲明後的括號內加入LEAGUE_NAME,如下面這樣:

<!ELEMENT LEAGUE (LEAGUE_NAME)>

<!ELEMENT LEAGUE_NAME (#PCDATA)>

每個元素只能在其<!ELEMENT>內聲明一次,即使它以其他<!ELEMENT>聲明的子元素出現也一樣。這裡,我把LEAGUE_NAME聲明放在引用它的LEAGUE聲明之後,這沒有關系。XML允許這一類提前引用。只要聲明全部包含在DTD中,元素標記出現的順序無關緊要。

可以向文檔中添加這兩項聲明,然後在SEASON元素中包括LEAGUE和LEAGUE_NAME元素。如清單8-8所示。圖8-8是顯示出來的文檔。

清單8-8:有兩個LEAGUE子元素的SEASON元素

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

<?xml-stylesheet type="text/css" href="greeting.css"?>

<!DOCTYPE SEASON [

<!ELEMENT YEAR (#PCDATA)>

<!ELEMENT LEAGUE (LEAGUE_NAME)>

<!ELEMENT LEAGUE_NAME (#PCDATA)>

<!ELEMENT SEASON ANY>

]>

<SEASON>

<YEAR>1998</YEAR>

<LEAGUE>

<LEAGUE_NAME>American League</LEAGUE_NAME>

</LEAGUE>

<LEAGUE>

<LEAGUE_NAME>National League</LEAGUE_NAME>

</LEAGUE>

</SEASON>

圖8-8 包含樣式單、YEAR元素和兩個LEAGUE子元素的合法的文檔

8.5.4 序列

讓我們限制一下SEASON元素。一個SEASON元素包含正好一個YEAR元素和其後的兩個LEAGUE子元素。不把SEASON元素聲明為可以包含ANY元素,我們在SEASON元素聲明中包括這三個子元素,用括號括起來並用逗號分隔開,如下所示:

<!ELEMENT SEASON (YEAR, LEAGUE, LEAGUE)>

用逗號隔開的一系列子元素稱為一個序列。利用這一聲明,每個合法的SEASON元素必須包含正好一個YEAR元素,後面正好是兩個LEAGUE元素,沒有別的。整個文檔類型定義現在看上去是下面的樣子:

<!DOCTYPE SEASON [

<!ELEMENT YEAR (#PCDATA)>

<!ELEMENT LEAGUE (LEAGUE_NAME)>

<!ELEMENT LEAGUE_NAME (#PCDATA)>

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved