DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML基礎 >> 第11章 嵌入非XML數據
第11章 嵌入非XML數據
編輯:XML基礎     

XML教程

 

不是世界上的所有數據都為XML格式。實際上,可以大膽地說世界上積累下來的數據大部分都不是XML格式。大量數據按無格式文本、HTML和微軟的Word格式保存,這裡只舉出三種常用的非XML格式。在理論上說,如果有興趣且財力允許的情況下,至少這些數據的大部分可以重寫為XML格式,但也不是所有的數據都可以。例如把圖像編碼為XML格式就將導致處理效率極端低下。

XML提供三種結構:記號、不可析外部實體和處理指令,通常用於處理非XML格式數據。記號描述非XML格式數據;不可析外部實體提供與非XML格式數據實際位置的鏈接;處理指令給出如何觀看這些數據的信息。

本章敘述的具體內容尚有許多爭議。盡管我所說的每一個事情都符合XML 1.0規范,但是不是所有人都同意上述觀點。肯定可以寫出一個XML文檔,文檔中沒有使用注解和外部對象,僅有一些簡單的處理說明。可以先跳過本章內容,在後面發現有必要了解這方面內容時,再返回到這一章。

本章的主要內容如下:

* 記號

* 不可析外部實體

* 處理指令

* DTD中的條件部分

11.1 記號

在XML文檔中使用非XML格式數據將會遇到的第一個問題是識別數據格式,並通知XML應用程序如何讀出和顯示這些非XML格式數據。例如,企圖在屏幕上畫出MP3聲音文件就是不合適宜的。

在一個有限的范圍內只利用一套固定的用於特定種類的外部實體的標記,就可在單一應用程序中解決外部非XML數據的讀取和顯示問題。例如,如果全部圖片數據都通過IMAGE元素嵌入,全部聲音數據通過AVDIO元素嵌入;那麼開發一個知道如何處理這兩個元素的浏覽器並不是一件很難的事。實際上這正是HTML采用的方法,可是這樣的方法不允許文檔作者為了能更加清楚地描述它們所需的內容,而創建新的標記;例如PERSON元素碰巧就有一個PHOTO屬性,該屬性指向那人的JPEG格式圖片。

再者,沒有一個應用程序可理解所有可能的文件格式。大多數Web浏覽器可以管理和讀出GIF、JPEG、PNG圖像文件,或許還包括一些其他格式的圖像文件;但是它們在EPS、TIFF、FITS文件前都束手無策,對於是幾百種普遍和特殊的圖像格式就更加力不從心了。圖11-1的對話框或許再熟悉不過了。

圖11-1 當Netscape Navigator無法識別一種文件類型時將發生的事情

理想的情況是希望文檔會通知應用程序外部實體的格式,因此不必去依賴應用程序來識別文件類型,或是靠具有魔力的數字或者是並不可靠的文件擴展名。此外,如果應用程序自身無法處理這種格式的圖像,也可以為應用程序提供一些關於什麼程序可用來顯示圖像的線索。

記號提供了部分解決這個問題的方法(盡管不能獲得很好的支持)。記號描述非XML數據的格式。在DTD中,NOTATION聲明規定特殊的數據類型。DTD在與元素、屬性和實體同一層次上聲明記號。每個記號聲明都包含一個名字和一個外部標識符,語法結構如下:

<!NOTATION name SYSTEM "externalID">

name為文檔中使用的特殊格式的標識符;externalID就是用來標識記號的有意義的字符串。例如,實體GIF圖像的記號可以使用MIME類型:

<!NOTATION GIF SYSTEM "Image/gif">

也可以使用PUBLIC代替SYSTEM標識符,這樣做就必須提供public ID和URL。例如:

<!NOTATION GIF PUBLIC

"-//IETF// NONSGML Media Type image/gif//EN"

"http://www.isi.edu/in-notes/iana/assignments/media-types/image/gif">

對於如何准確地作出外部標識,還存在激烈的爭論。像圖像/gif、文本/HTML之類的MIME類型是一種可能性;另一個建議是選擇URL,或者其他的標准文檔定位方式--像http://www.w3.org/TR/REC-html140/。第三個選擇是使用正式的國際標准--如表示日期和時間的ISO 8601標准。某些情況下,可能ISBN或者國會圖書館為文獻文檔編目的方法更為適用。此外還有其余許多選擇。

選取何種方式,取決於對文檔生命期的期望值。例如,如果選擇不普遍的格式,就不能依賴每個月都會改變的URL方式;如果希望文檔在100年內都具有活躍的生命力,那麼就該考慮使用在100年中都具有意義的標識符,而不是使用僅具有10年生命力的技術。

也可以使用記號來描述插入到文檔中數據。例如,研究下面的DATA元素:

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