DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML基礎 >> 第9章 實體和外部DTD子集
第9章 實體和外部DTD子集
編輯:XML基礎     

XML教程

 

一個簡單的XML文檔從許多不同的資源和文件中取得數據和聲明。實際上,有些數據直接來自數據庫、CGI腳本或其他非文件格式資源。無論采取何種形式,保存XML文檔片段的項目稱為實體。實體引用把實體載入到XML主文檔中。通用實體引用載入數據到XML文檔的基本元素中,而參數實體引用載入數據到文檔的DTD中。

本章的主要內容如下:

* 什麼是實體?

* 內部通用實體

* 外部通用實體

* 內部參數實體

* 外部參數實體

* 怎樣從局部開始創建文檔

* 結構完整文檔中的實體和DTD

9.1 什麼是實體?

從邏輯上說,一個XML文檔由一個序進程構成,序進程後有一嚴密地包含了所有其他元素的基本元素。但XML文檔的實際數據可以擴展分布在若干文檔中。例如,即使一個棒球聯盟中包含了大約900個的所有球員,每個PLAYER元素也可以以獨立的文件形式存在。包含XML文檔細節內容的存儲單元稱為實體(entities),實體可能是由一個文件、一個數據庫記錄或其他包含數據的項目組成。例如,本書中所有完整的XML文件都是實體。

包含XML聲明或文檔類型聲明的存儲單元和基本元素稱為文檔實體(document entity)。不過基本元素和它的派生元素也可包含指向即將插入文檔的附加數據的實體引用。進行正確性檢查的XML處理器在提交文檔給最終應用程序以前或顯示文件以前,將把所有不同的實體引用結合為單一邏輯結構的文檔。

不進行正確性檢查的處理器可以但不一定插入外部對象;他們必須插入內部對象。

實體的主要目的在於保存如下內容:結構完整的XML,其他形式的文本或二進制數據。序進程和文檔類型聲明是它們所屬文檔的基本元素的一部分。僅當XSL樣式單本身就是一個結構完整的XML文檔時,才能作為一個實體。組成XSL樣式單的實體並不是應用該樣式單的XML文檔的組成實體之一。CSS樣式單根本就不是一個實體。

大多數實體具有一個可以引用的名。唯一的例外是包含XML文檔的主文件與文檔實體(與數據庫記錄、CGI程序的輸出結果或其他數據相對比,文檔實體也不一定是文件)。文檔實體無論采取何種結構,都是一種存儲單元,用於儲存XML聲明、文檔類型聲明(如果有)和基本元素。因此每個XML文檔至少擁有一個實體。

有兩種類型的實體:內部實體和外部實體。完全在文檔實體內部定義的實體稱為內部實體。文檔本身就是這樣的實體,所以所有的XML文檔至少有一個內部實體。

相反,經由URL定位的資源中獲取的數據稱為外部實體。主文檔僅包含一個實際引用數據位置的URL。在HTML中,包含於<HTML>和</HTML>標記之間的文檔本身是內部實體時,而IMG元素(實際的圖像數據)代表外部實體。

實體分為兩類:可析和不可析實體。可析實體包含結構完整的XML文本。不可析實體包含二進制數據或非XML文本(類似電子郵件信息)。如果從本質上說,當前大多數XML處理器不能很好地支持(如果不是完全支持的話)不可析實體,本章所關注的是可析實體。

第11章,非XML數據和不可析對象的嵌套。

通過實體引用,可把來源於多個實體的數據合並在一起構成一個單一的文檔。通用實體引用把數據並入到文檔內容中。參數實體引用把聲明並入到文檔的DTD中。實中&lt;、&gt;、&apos;、&quote;、&amp;是預定義的體引用,分別指的是文本實體<、>、’、”、&符號。然而也可在文檔DTD中定義新的實體。

.2 內部通用實體

內部通用實體引用可看作經常使用的文本或強制格式文本的縮寫。DTD中的<!ENTITY>標記定義縮寫,並且該縮寫就代替了文本。例如,可在DTD中簡單地把頁腳定義為實體footer,然後每頁只需鍵入&footer;,而勿需在每頁底部鍵入相同的頁腳。此外,若決定更改頁腳塊(也許是因為你的電子郵件地址更改了),就僅需在DTD中作一次更改即可,勿需對共享同一頁腳的頁面逐個進行更改。

通用實體引用以“&”符號開始,以“;”結尾,兩個符號之間為實體名。例如,“&lt;"就是小於符號(<)的通用實體引用,實體名為lt,該實體的替換文本就是一個字符"<”。實體名由字母和數字的混合排列以及下劃線構成,禁止使用空格和其他標點符號字符。類似XML中的其他內容,實體引用是區分大小寫的。

盡管從技術上說,允許在對象名中使用冒號“:”,但正如第18章中所提及,此符號要保留用於命名域(namespace)。

9.2.1 定義內部通用實體引用

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