DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> XML新手入門 創建構造良好的XML
XML新手入門 創建構造良好的XML
編輯:XML詳解     

如果您是 XML 新手,本文將為您介紹 XML 文檔的基礎結構,以及創建構造良好的 XML 需要遵循的規則,包括命名約定、正確的標記嵌套、屬性規則、聲明和實體。您還可以從本文了解到 DTD 和 schema 的驗證。

XML 是可擴展標記語言(Extensible Markup Language)的縮寫,其中的 標記(markup)是關鍵部分。您可以創建內容,然後使用限定標記標記它,從而使每個單詞、短語或塊成為可識別、可分類的信息。您創建的文件,或文檔實例 由元素(標記)和內容構成。當從打印輸出讀取或以電子形式處理文檔時,元素能夠幫助更好地理解文檔。元素的描述性越強,文檔各部分越容易識別。自從出現標記至今,帶有標記的內容就有一個優勢,即在計算機系統缺失時,仍然可以通過標記理解打印出來數據。

標記語言從早期的私有公司和政府制定形式逐漸演變成標准通用標記語言(Standard Generalized Markup Language,SGML)、超文本標記語言(Hypertext Markup Language,HTML),並且最終演變成 XML。SGML 比較復雜,Html(實際上僅是一組元素集)在識別信息方面不夠強大。XML 則是一種易於使用和易於擴展的標記語言。

您可以使用 XML 創建自己的元素,從而能夠更精確地表示自己的信息。您可以在文檔內部識別每個部分,而不是將文檔看作僅由標題和段落組成。為了提高效率,您可能需要定義數量一定的元素,並統一使用它們。(您可以在文檔類型定義(Document Type Definition, DTD )或模式 (schema)中定義元素,稍後我將對此進行簡要的描述)。一旦習慣使用 XML 之後,就可以在構建文件時嘗試處理元素名稱。

構建 XML

如前所述,XML 文件由內容和標記組成。您通過以標記包圍內容的方式將大部分內容包含在元素中。例如,假設您需要創建一本 XML 烹饪書。您需要用 XML 編寫名為 Ice Cream Sundae 的食譜。為了標記食譜名,您需要將這個文本包含到元素中,即分別在文本的首末兩端添加開始和結束標記。可以將元素命名為 recipename。要標記元素的開始標記,像這樣將元素名放到尖括號中(﹤﹥):﹤recipename﹥。然後輸入文本 Ice Cream Sundae。在文本的後面輸入結束標記,即將元素名放在尖括號內,然後在元素名前面加上一個終止斜槓(/),比如:﹤/recipename﹥。這些標記構成一個元素,您可以在元素的內部添加內容或其他元素。

您可以為某個文檔或文檔集創建元素名。可以創建規則讓元素根據您的特定需求組合起來。元素名可以是比較具有針對性的,也可以是比較通用的。您還可以創建決定添加何種元素的規則。這些規則可以是嚴格的,也可以是松散的,這完全由您決定。一定要為文檔創建元素,以識別您認為重要的部分。

開始創建 XML 文件

XML 文檔的第一行可以是一個 XML 聲明。這是文件的可選部分,它將文件識別為 XML 文件,有助於工具和人類識別 XML(不會誤認為是 SGML 或其他標記)。可以將這個聲明簡單地寫成 ﹤?xml?﹥,或包含 XML 版本(﹤?xml version="1.0"?﹥),甚至包含字符編碼,比如針對 Unicode 的 ﹤?xml version="1.0" encoding="utf-8"?﹥。因為這個聲明必須出現在文件的開頭,所以如果打算將多個小的 XML 文件合並為一個大 XML 文件,則可以忽略這個可選信息。

創建根元素

根元素的開始和結束標記用於包圍 XML 文檔的內容。一個文件只能有一個根元素,並且需要使用 “包裝器” 包含它。清單 1 顯示了經過刪節的示例,其中的根元素名為 ﹤recipe﹥。(參見 下載 小節獲得完整的 XML 文件)。

清單 1. 根元素

﹤?XML version="1.0" encoding="UTF-8"?﹥
﹤recipe﹥
﹤/recipe﹥

在構建文檔時,內容和其他標記必須放在 ﹤recipe﹥ 和 ﹤/recipe﹥ 之間。

命名元素

標記的大小寫保持一致
創建 XML 時,要確保開始和結束標記的大小寫是一致的。如果大小寫不一致,在使用或查看 XML 時將出現錯誤。例如,如果大小寫不一致,Internet Explorer 將不能顯示文件的內容,但它會顯示開始和結束標記不一致的消息。
到目前為止,都使用 ﹤recipe﹥ 作為根元素。在 XML 中,先要為元素選擇名稱,然後再根據這些名稱定義相應的 DTD 或 schema。創建名稱時可以使用英文字母、數字和特殊字符,比如下劃線(_)。下面給出命名時需要注意的地方:

元素名中不能出現空格。
名稱只能以英文字母開始,不能是數字或符號。(在第一個字母之後就可以使用字母、數字或規定的符號,或它們的混合)。
對大小寫沒有限制,但前後要保持一致,以免造成混亂。
我們繼續以前面的示例為例,如果添加了名為 ﹤recipename﹥ 的元素,它將有一個開始標記 ﹤recipename﹥ 和相應的結束標記 ﹤/recipename﹥。

清單 2. 更多元素

﹤?XML version="1.0" encoding="UTF-8"?﹥
﹤recipe﹥
﹤recipename﹥Ice Cream Sundae﹤/recipename﹥
﹤preptime﹥5 minutes﹤/preptime﹥
﹤/recipe﹥

XML 文檔可以使用內部不包含任何內容的空標記,這些標記可以表示為單個標記,而不是一組開始和結束標記。以類似於 Html 的文件為例,裡面的 ﹤img src="mylogo.gif"﹥ 是一個獨立的元素。它不包含任何子元素或文本,因此它是一個空元素,您可以將它表示為 ﹤img src="mylogo.gif" /﹥(以一個空格和熟悉的終止斜槓結束)。

嵌套元素

嵌套 即把某個元素放到其他元素的內部。這些新的元素稱為子 元素,包含它們的元素稱為父 元素。﹤recipe﹥ 根元素中嵌套有幾個其他元素,如 清單 3 所示。這些嵌套的子元素包括 ﹤recipename﹥、﹤ingredlist﹥ 和 ﹤preptime﹥。﹤ingredlist﹥ 元素內部包含多個子元素 ﹤listitem﹥。XML 文檔可以使用多層嵌套。

一個常見的語法錯誤是父元素和子元素的錯誤嵌套。任何子元素都要完全包含在其父元素的開始和結束標記內部。每個同胞(Sibling)元素必須在下一個同胞元素開始之前結束。

清單 3 的代碼顯示了正確的嵌套。這些標記的開始和結束沒有與其他標記混合 在一起。

清單 3. 正確嵌套的 XML 元素

﹤?XML version="1.0" encoding="UTF-8"?﹥
﹤recipe﹥
﹤recipename﹥Ice Cream Sundae﹤/recipename﹥
﹤ingredlist﹥
﹤listitem﹥
﹤quantity﹥3﹤/quantity﹥
﹤itemdescription﹥chocolate syrup or chocolate fudge﹤/itemdescription﹥
﹤/listitem﹥
﹤listitem﹥
﹤quantity﹥1﹤/quantity﹥
﹤itemdescription﹥nuts﹤/itemdescription﹥
﹤/listitem﹥
﹤listitem﹥
﹤quantity﹥1﹤/quantity﹥
﹤itemdescription﹥cherry﹤/itemdescription﹥
﹤/listitem﹥
﹤/ingredlist﹥
﹤preptime﹥5 minutes﹤/preptime﹥
﹤/recipe﹥

添加屬性

有時候要為元素添加屬性。屬性由一個名稱-值對構成,值包含在雙引號中("),比如:type="dessert"。屬性是在使用元素時存儲額外信息的一種方式。在同一個文檔中,可以根據需要對每個元素的不同實例采用不同的屬性值。

您可以在元素的開始標記內部輸入一個或多個屬性,比如:﹤recipe type="dessert"﹥。如果要添加多個屬性,各個屬性之間使用空格分開,比如:﹤recipename cuisine="american" servings="1"﹥。清單 4 顯示了當前的 XML 文件。

清單 4. 帶有元素和屬性的 XML 文件

﹤?XML version="1.0" encoding="UTF-8"?﹥
﹤recipe type="dessert"﹥
﹤recipename cuisine="american" servings="1"﹥Ice Cream Sundae﹤/recipename﹥
﹤preptime﹥5 minutes﹤/preptime﹥
﹤/recipe﹥

您可以根據需要使用任意數量的屬性。要考慮需要添加到文檔的細節。如果要對文檔分類,屬性尤其有用,比如按照菜譜的 type 進行分類。屬性名可以包含在元素名中使用的字符,規則也是類似的,即字符之間不能帶有空格,名稱只能以字母開始。

構造良好並且有效的 XML

如果您根據結構規則創建 XML,就很容易實現構造良好的 XML。構造良好的 XML 即遵循所有 XML 規則創建的 XML:正確的元素命名,嵌套,屬性命名等等。

要實現構造良好的 XML 取決於如何處理 XML。但考慮一下前面提到的示例,它要求根據菜譜類型進行分類。您需要確保每個 ﹤recipe﹥ 元素都包含 type 屬性,以對菜譜進行分類。能夠正確驗證並確保存在屬性值是非常重要的(避免出現雙關語)。

驗證 就是根據元素規則檢查文檔的結構,以及如何為每個父元素定義子元素。這些規則是在 文檔類型定義(Document Type Definition,DTD)或模式(schema )中定義的。驗證要求您創建自己的 DTD 或 schema ,然後在 XML 文件中引用 DTD 或 schema 文件。

為了實現驗證,必須在 XML 文檔的頂部附近包含文檔類型(DOCTYPE)。這行代碼將引用用於驗證文檔的 DTD 或 schema (元素和規則列表)。例如,DOCTYPE 可能類似於 清單 5。


清單 5. DOCTYPE

﹤!DOCTYPE MyDocs SYSTEM "filename.dtd"﹥

這個例子假設元素列表文件的名稱是 filename.dtd,並且位於您的計算機上(如果指向公共文件位置,則 SYSTEM 和 PUBLIC 是相對的)。

使用實體

實體 可以是文本短語或特殊字符。它們可以指向內部或外部。必須正確地聲明和表示實體,以避免錯誤和確保正確顯示。

您不能直接在內容中輸入特殊字符。如果要在文本中使用符號,必須使用它的字符代碼將它設置為實體。您可以將短語(比如公司名)設置為實體,然後就可以在內容中使用該實體。為了設置實體,必須先為它創建一個名稱,然後將它輸入到內容中,以 and 符號(&)開始,並以分號(;)結束 — 例如,&coname;。然後在 DOCTYPE 的方括號([])內部輸入代碼,如 清單 6 所示。這個代碼識別表示實體的文本。

清單 6. ENTITY

﹤!DOCTYPE MyDocs SYSTEM "filename.dtd" [ ﹤!ENTITY coname "Rabid Turtle
IndustrIEs"
]﹥

使用實體可以避免反復輸入相同的短語和信息。在很多情況下它還使得調整文本更加容易(變更公司名時),只需對實體定義進行簡單調整。

避免錯誤

在學習創建 XML 文件時,在 XML 編輯器中打開它,以檢查它的結構是否良好,並且確保您遵循 XML 規則。例如,如果您使用 Windows® Internet Explorer®,就可以在浏覽器中打開 XML。如果它能夠顯示 XML 元素、屬性和內容,則表明 XML 是構造良好的。相反,如果顯示錯誤,則很可能是出現語法錯誤,您需要小心檢查文檔,看看是不是丟失標記和標點符號或輸入錯誤。

如在 嵌套元素 小節中提到的一樣,包含其他元素的元素就是被包含元素的父元素。在下面的示例中,﹤recipe﹥ 是根元素,並且包含文件的完整內容。父元素 ﹤recipe﹥ 包含的子元素有 ﹤recipename﹥、﹤ingredlist﹥、﹤directions﹥ 等等。在這種結構中,﹤recipename﹥、﹤ingredlist﹥ 和 ﹤directions﹥ 成了同胞元素。此外,還要正確嵌套同胞 元素。清單 7 給出了構造良好並且正確嵌套的 XML。

清單 7. 構造良好的 XML

﹤?XML version="1.0" encoding="UTF-8"?﹥
﹤recipe type="dessert"﹥
﹤recipename cuisine="american" servings="1"﹥Ice Cream Sundae﹤/recipename﹥
﹤ingredlist﹥
﹤listitem﹥﹤quantity units="cups"﹥0.5﹤/quantity﹥
﹤itemdescription﹥vanilla ice cream﹤/itemdescription﹥﹤/listitem﹥
﹤listitem﹥﹤quantity units="tablespoons"﹥3﹤/quantity﹥
﹤itemdescription﹥chocolate syrup or chocolate fudge﹤/itemdescription﹥﹤/listitem﹥
﹤listitem﹥﹤quantity units="tablespoons"﹥1﹤/quantity﹥
﹤itemdescription﹥nuts﹤/itemdescription﹥﹤/listitem﹥
﹤listitem﹥﹤quantity units="each"﹥1﹤/quantity﹥
﹤itemdescription﹥cherry﹤/itemdescription﹥﹤/listitem﹥
﹤/ingredlist﹥
﹤utensils﹥
﹤listitem﹥﹤quantity units="each"﹥1﹤/quantity﹥
﹤utensilname﹥bowl﹤/utensilname﹥﹤/listitem﹥
﹤listitem﹥﹤quantity units="each"﹥1﹤/quantity﹥
﹤utensilname﹥spoons﹤/utensilname﹥﹤/listitem﹥
﹤listitem﹥﹤quantity units="each"﹥1﹤/quantity﹥
﹤utensilname﹥ice cream scoop﹤/utensilname﹥﹤/listitem﹥
﹤/utensils﹥
﹤directions﹥
﹤step﹥Using ice cream scoop, place vanilla ice cream into bowl.﹤/step﹥
﹤step﹥Drizzle chocolate syrup or chocolate fudge over the ice cream.﹤/step﹥
﹤step﹥Sprinkle nuts over the mound of chocolate and ice cream.﹤/step﹥
﹤step﹥Place cherry on top of mound with stem pointing upward.﹤/step﹥
﹤step﹥Serve.﹤/step﹥
﹤/directions﹥
﹤variations﹥
﹤option﹥Replace nuts with raisins.﹤/option﹥
﹤option﹥Use chocolate ice cream instead of vanilla ice cream.﹤/option﹥
﹤/variations﹥
﹤preptime﹥5 minutes﹤/preptime﹥
﹤/recipe﹥

注意:換行符方便您閱讀代碼,它不會影響 XML。

您可以在測試文件上進行實踐,去掉開始和結束標記,熟悉因此顯示的錯誤消息。

查看 XML

在 圖 1 中,Internet Explorer 清晰顯示了所有元素。內容包含在開始和結束標記之間。父元素旁邊有小加號(+)和小減號(-),它們允許您展開或收縮嵌套在內部的所有元素(它們的後代)。


圖 1. 收縮了一些同胞元素的示例 XML 實例(文件)

結束語

除了一些簡單的規則之外,您可以隨意設計 XML 元素和屬性。XML 的規則並不難。真正困難的是 根據可分類性和可搜索性找出文檔中有價值的內容,然後根據您的需要設計元素和屬性。

當您有了明確的目標,並知道如何標記內容的時候,您可以構建高效的元素和屬性了。從這個角度看,小心進行標記是創建構造良好並且有效的 XML 的根本條件。

 

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