跳轉到內容

XML - 資料交換管理/XML 簡介

來自 Wikibooks,開放世界中的開放書籍



上一章 下一章
前言 單個實體



學習目標
  • 定義 SGML、HTML 和 XML 的目的


資料管理存在四個核心問題:資料的捕獲、儲存、檢索和交換。本書旨在討論 **XML**, *一種用於管理資料交換的技術*。本書中的基礎 XML 章節採用“資料模型”方法進行構建。第一章向讀者介紹了 XML 文件、XML 模式和 XML 樣式表,並以單個實體示例進行說明。後續章節將透過多個實體示例以及一對一關係、一對多關係或多對多關係來擴充套件 XML 基礎知識。

XML 是一種用於資料交換的工具。資料交換長期以來一直是資訊科技中的一個問題,但網際網路提升了其重要性。電子資料交換 (EDI) 是大型組織傳統的資料交換標準,正在逐漸被 XML 取代,XML 可能會成為所有組織(無論規模大小)的資料交換標準。

EDI 支援標準商業文件的電子交換,目前是電子商務的主要資料格式。結構化格式用於在貿易伙伴之間交換常見的商業文件(例如,發票和發貨單)。與電子郵件的自由格式相反,EDI 支援重複的、例行的業務交易的交換。標準意味著例行的電子交易可以簡潔明瞭。美國和加拿大使用的一種主要標準稱為 X.12,主要的國際標準是 UN/EDIFACT。遵守同一標準的公司可以以電子方式共享資料。

網際網路是一個全球網路,幾乎每家公司都可以訪問,通訊成本通常低於傳統 EDI。因此,網際網路已成為貿易伙伴之間首選的電子傳輸途徑。最簡單的方法是使用網際網路作為傳輸 EDI 文件的方式。但由於 EDI 是在 20 世紀 60 年代開發的,另一種方法是重新審視資料交換技術。這種重新思考的結果是 XML,但在考慮 XML 之前,我們需要了解 XML 的母體 SGML。

據估計,對於典型的美國公司而言,文件管理會消耗其高達 15% 的收入、近 25% 的勞動力成本以及辦公人員 10% 到 60% 的時間。**標準通用標記語言 (SGML)**旨在降低文件管理成本並提高效率。

**標記語言**將有關文件的資訊嵌入到文件的文字中。在以下示例中,標記標籤指示文字包含城市詳細資訊。還要注意,城市的名稱、州和人口由特定的標籤標識。因此,讀者(人或計算機)對 *雅典*、*佐治亞州* 或 *100,000* 的含義毫無疑問。還要注意,城市的緯度和位置也用相應的標籤明確標識。SGML 的實用性基於記錄文字及其含義。

圖 1:標記語言

<city> 
       <cityname>Athens</cityname> 
       <state>GA</state>
       <description> Home of the University of Georgia</description>
       <population>100,000</population>
       <location>Located about 60 miles Northeast of Atlanta</location>
       <latitude>33 57' 39" N</latitude>
       <longitude>83 22' 42" W</longitude>
</city>

SGML 是一種與供應商無關的 國際標準ISO 8879),它定義了文件的結構。SGML 於 1986 年作為 元語言 開發,是 HTMLXML 的母體。由於 SGML 文件是標準文字檔案,因此 SGML 提供了跨系統可移植性。當技術快速發展時,SGML 為管理資料交換提供了穩定的平臺。此外,SGML 檔案可以轉換為各種媒體以供釋出。使用 SGML 可以保留文字資訊,而與呈現方式和時間無關。組織可以透過將文件儲存在一個獨立的標準中並將其轉換為任何所需的媒體進行顯示,從而獲得長期利益。

SGML 在資料管理方面具有三大優勢

  • **重用**:資訊可以建立一次並重復使用多次。
  • **靈活**:SGML 文件可以以任何格式釋出。相同的內容可以列印、在 Web 上呈現或使用文字合成進行傳遞。由於 SGML 以內容為中心,因此可以延遲呈現決策,直到確定輸出格式。
  • **修訂**:SGML 支援修訂和版本控制。使用內容版本控制,公司可以輕鬆跟蹤文件的變化。

SGML 的一小段程式碼清楚地展示了 SGML 的特性和優勢(見圖 2)。圍繞文字塊的標籤描述了其含義,從而支援呈現和檢索。例如,圍繞“達美”的標籤對 <airline> 和 </airline> 標識了執行航班的航空公司。

圖 2:SGML 示例

   <flight>
       <airline>Delta</airline>
       <flightno>22</flightno>
       <origin>Atlanta</origin>
       <destination>Paris</destination>
       <departure>5:40pm</departure>
       <arrival>8:10am</arrival>
   </flight>

透過將 樣式表 應用於檔案,上述 SGML 程式碼可以以多種方式呈現。例如,它可能顯示為

達美航空 22 號航班從亞特蘭大飛往巴黎,下午 5:40 出發,上午 8:10 到達

航空公司 航班 出發地 目的地 出發時間 到達時間
達美 22 亞特蘭大 巴黎 下午 5:40 上午 8:10


如果資料以 HTML 格式儲存並在網站上呈現(如 圖 3 所示),則讀者必須推斷資料的含義。對於人類來說,這通常非常容易,但對於機器來說是不可能的。此外,呈現格式是固定的,只能透過重寫 HTML 來更改。如果您不熟悉 HTML,則應在閱讀下一章之前閱讀 WikiBooks 中關於 XHTML(HTML 的擴充套件)的章節。

圖 3:HTML 渲染示例

    Delta flight 22 flies from Atlanta to Paris leaving 5:40pm and arriving 8:10am

**含義和呈現應相互獨立**,這是 SGML 比 HTML 更強大的重要原因。

SGML 是一種定義文件結構的標記語言,因為它可以轉換為各種媒體,因此比 HTML 更受歡迎。

許多計算機系統以不相容的格式儲存資料。在這些系統之間交換資料是一項耗時的挑戰。XML 是一種通用的資料儲存格式,附帶許多工具和技術,這些工具和技術應該使在不相容的系統之間交換特定的 XML “應用程式”變得更容易。由於 XML 是開放且通用的,因此預計隨著時間的推移,越來越多的組織和個人將加入 XML 的行列,包括開發人員和資料使用者。這應該使 XML 成為某些型別資料交換的最終可行技術。

XML 不僅用於交換資訊,還用於釋出網頁。XML 非常嚴格的語法允許使用更小、更快的 Web 瀏覽器,因此非常適合與 個人數字助理 (PDA) 和 手機 一起使用。另一方面,解釋 HTML 文件的 Web 瀏覽器 充斥著程式設計程式碼,以彌補 HTML 不那麼嚴格的編碼。

通常適合編碼為 XML 的資料型別是那些欄位長度未知且不可預測,並且欄位內容主要為文字的資料型別。

XML 模式 允許以標準化的結構交換資訊。模式定義了自定義標記標籤,這些標籤可以包含屬性來描述這些標籤所包含的內容。可以使用稱為“解析器”的應用程式提取 XML 文件中標記資料的的資訊,並且可以使用 XML 樣式表將資料格式化為網頁。

XML 的強大功能在於自定義標記標籤和定義的 XML 文件中的內容的組合。可擴充套件標記語言 (XML) 的目的是使資訊具有自描述性。XML 基於 SGML,旨在支援電子商務。XML 的定義於 1998 年初由 全球資訊網聯盟 (W3C) 完成,將其描述為一種元語言——一種生成語言的語言。XML 由於具有一些關鍵優勢,因此應該會逐漸取代許多網站上的 HTML。XML 和 HTML 之間的主要區別在以下表格中體現。

圖 4:XML 與 HTML

XML HTML
資訊內容 資訊呈現
可擴充套件的標籤集 固定的標籤集
資料交換語言 資料呈現語言
更強的超文字連結 有限的超文字連結


XML 中的“eXtensible”(可擴充套件)意味著可以透過定義其結構和標籤來建立新的資料交換語言。例如,開放地理空間聯盟(OpenGIS Consortium) 設計了一種名為 地理標記語言(GML) 的語言,以促進地理資訊的電子交換。類似地,開放旅遊聯盟(Open Tourism Consortium) 正在努力定義 TourML,以支援旅遊資訊的交換。保險行業使用與基於 XML 的標準 ACORD 相對應的資料進行電子資料交換。另一個很好的 XML 應用示例是 NewsML™

本文將涵蓋 XML 的所有功能,但在此,讓我們先介紹幾個關鍵功能。


XML 的應用:

在我們開始學習 XML 文件的結構之前,讓我們先指出 XML 可以用於什麼。XML 的四大主要實現是

出版:可以使用 XSLT 樣式表將資料庫內容轉換為 XML,然後轉換為 HTML。利用此技術,可以生成複雜的網站以及 PDF 檔案等印刷媒體。資訊不再需要儲存在不同的格式中(例如 RTF、DOC、PDF、HTML)。內容可以儲存在中立的 XML 格式中,然後使用適當的佈局樣式表和轉換生成手冊、網站或資料列表(請參閱 第 17 章)。

XML 和 XSLT 功能的示例可以在 http://www.emimusic.de 找到:該網站包含大約 20,000 個頁面,其中包含藝術家、其產品和歌曲標題的簡介。這些頁面是使用 XSLT 指令碼生成的。根據使用的指令碼,還可以建立 PDF 格式的目錄。請參見下文了解更多詳細資訊。

互動:XML 可用於互動式訪問和更改資料。這種人機通訊通常透過 Web 瀏覽器進行(請參閱 第 12 章)。

整合:使用 XML,可以整合同構和異構應用程式。在這種情況下,XML 用於描述資料、介面和協議。這種機器之間的通訊有助於整合 關係資料庫(例如,透過匯入和匯出不同的格式)。

事務:XML 有助於處理線上市場、供應鏈管理和電子採購系統等應用程式中的事務。

XML 的關鍵特性

[編輯 | 編輯原始碼]
  • 元素同時具有開始標籤和結束標籤
  • 元素遵循嚴格的層次結構,文件僅包含一個根元素
  • 元素不能與其他元素重疊
  • 元素名稱必須遵守 XML 命名約定
  • XML 區分大小寫

XML 將透過多種重要方式提高資料交換效率,包括

  • 一次編寫,多次格式化:建立 XML 檔案後,可以透過應用不同的 XML 樣式表以多種方式呈現。例如,資訊可以顯示在網頁上或列印在書本中。
  • 硬體和軟體獨立性:XML 檔案是標準文字檔案,這意味著任何應用程式都可以讀取它們。
  • 一次編寫,多次交換:一旦某個行業就資料交換達成 XML 標準,資料就可以在使用該標準的所有成員之間輕鬆交換。
  • 更快、更精確的 Web 搜尋:當計算機能夠確定資訊的含義(透過讀取標籤)時,Web 搜尋將得到增強。例如,如果您正在查詢特定書籍的標題,那麼對於計算機來說,搜尋 標籤對之間的文字,比搜尋整個檔案以查詢標題要高效得多。此外,應消除虛假結果。
  • 資料驗證 XML 允許使用 XSD 或 DTD 進行資料驗證,這是兩個互動方之間的一項契約協議。

使用 XML 的 10 個理由

[編輯 | 編輯原始碼]
  1. XML 是一種廣泛接受的開放標準。
  2. XML 允許將內容與表單(外觀)清晰地分離。
  3. XML 是面向文字的。
  4. XML 是可擴充套件的。
  5. XML 是自描述的。
  6. XML 是通用的;這意味著國際化沒有問題。
  7. XML 獨立於平臺和程式語言。
  8. XML 為資訊儲存提供了強大且持久的格式。
  9. XML 易於轉換。
  10. XML 是一項面向未來的技術。

主要的 XML 元素

[編輯 | 編輯原始碼]

主要的 XML 元素是

  • XML 文件:包含 XML 程式碼的 XML 檔案。
  • XML 架構:描述文件結構及其標籤的 XML 檔案。
  • XML 樣式表:包含 XML 檔案格式化指令的 XML 檔案。

在接下來的幾章中,您將學習如何建立和使用 XML 的每個元素。

建立標記檔案

[編輯 | 編輯原始碼]

任何文字編輯器都可以用來建立標記檔案(例如 HTML 檔案)。在本手冊中,我們使用 NetBeans 中的文字編輯器,NetBeans 是一個開源的 Java 整合開發環境 (IDE),因為它支援 XML 檔案的編輯和驗證。在繼續操作之前,您應該從 http://www.NetBeans.org/ 下載並安裝 NetBeans。

本書中的示例使用 NetBeans 來說明正確的 XML 程式碼。有關 NetBeans 的替代方案,請參閱 Exchanger XML Lite

XML 實施案例研究

[編輯 | 編輯原始碼]

聯合包裹服務公司 (UPS) 中的 XML

[編輯 | 編輯原始碼]

“UPS 是一家服務公司,一切都是關於規模和速度,”UPS eSolutions 部門的專案負責人 Geoff Chalmers 說。2003 年,UPS 的年收入為 335 億美元,全球員工 357,000 人。在任何一天,美國國內生產總值 (GDP) 的 6% 都在 UPS 系統中。

UPS 廣泛使用技術。資訊系統部門有 4,000 名員工。該公司的網站有 166 個不同的國家/地區主頁,並由 44 個應用程式支援。

UPS 每天交付約 1300 萬個包裹,客戶可以透過 UPS 網站跟蹤這些貨物,該網站每天約有 2 億次點選。ups.com 中的 19 個應用程式是 XML 線上工具(Web 服務)應用程式。

UPS 的線上工具專門開發用於與客戶的應用程式整合。這使客戶的任務更簡單、更容易和更快。UPS 透過“CampusShip”驗證了簡單性和速度的重要性,該產品是 UPS 在過去 10 年中最成功的產品之一。UPS CampusShip® 是一個基於 Web 的、UPS 託管的運輸系統。員工可以使用網際網路連線從任何桌面傳送自己的包裹和信件,而管理層則對運輸活動進行全面控制。UPS CampusShip® 允許組織在運輸商自主權和管理成本控制之間同時實現平衡。該產品之所以成功,是因為它不需要安裝或軟體維護,並且實施起來很快。XML 線上工具使 CampusShip® 的發展變得廉價且快速。

UPS 特別青睞 XML,因為它與平臺和語言無關。這些特性使 XML 變得非常靈活和強大。它也是解耦的和可擴充套件的。XML 使 UPS 能夠瞄準更廣泛的市場並減少客戶互動,從而降低客戶服務成本。XML 的另一個優點是它向後相容。XML 的採用大大降低了 UPS 的維護、實施和使用成本。

但是,這些優勢並非沒有代價。“XML 在很多方面效率低下,”Chalmers 說。不幸的是,XML 比其他技術消耗更多的 CPU 和頻寬。然而,頻寬和 CPU 卻很便宜,而且每天都在變得更便宜,所以這是一個逐漸消失的問題。

儘管如此,Chalmers 還認為 XML 在資料庫中效果不佳。他說它過於冗長,是一種交換媒介,而不是資料庫媒介。早期曾嘗試將 XML 和資料庫緊密整合。由於資料庫像 XML 一樣為資料提供結構和標識,因此 XML-資料庫整合的增值作用僅限於應用層次結構。另一方面,如果資料要儲存為 blob,則 XML 很有意義。他指出的另一個關於 XML 的問題是,業務規則無法在 XML 架構中表達。

最後,原始 XML 程式設計和除錯可能具有挑戰性。因此,UPS 的企業客戶開始探索 .NETBEA 中可找到的程式碼生成器和嵌入式工具。但是,經驗豐富的內部工程師的手工編碼對於 UPS 線上工具所需的可用性、可擴充套件性和效能至關重要。

EMI 音樂中的 XML

[編輯 | 編輯原始碼]

它是如何使用的?

EMI Music Germany GmbH & Co. KG,一家著名的德國唱片公司,在其網站上展示了其簽約藝術家的資訊。訪問者可以瀏覽所有音訊或影片作品。整個網站包含近 20,000 個頁面,其中包含有關藝術家及其產品(CD、DVD、LP)的資訊。所有內容都正確連結並系統地分組。

畢竟,每個藝術家、專輯、樣本、圖片、描述或商品程式碼都需要提供資料。該網站每天更新,並且可以在需要時由網頁編輯器進行更改。現在,這是一個相當複雜且大量的資料需要處理。

這就是 XML 發揮作用的地方。儲存在資料庫中的資料已轉換為 XML 程式碼。現在,XSLT 樣式表將此資料轉換為 HTML 程式碼,任何 Web 瀏覽器(例如 Internet Explorer 或 Firefox)都可以輕鬆讀取。

好處是什麼?

XML 的優勢在於,與其他格式相比,程式設計工作量大大降低。這是因為 XML 位於 XSLT 和 HTML 的交匯點。

網頁編輯器更新網站也沒有問題。使用 XML 使負責人員可以輕鬆處理大量資料。

更進一步… 在 EMI Music 到目前為止生成的 XML 指令碼的基礎上,該公司可以輕鬆地生成 PDF 格式的目錄或為當前的手機一代設計 i-Mode 頁面。藉助 XML,這可以輕鬆完成。

XML 的簡史

[編輯 | 編輯原始碼]

在 60 年代後期,Charles Goldfarb、Raymond Lorie 和 Edward Mosher 都在 IBM 工作,開始開發 GML(通用標記語言),一種文字格式化語言。該語言已成功應用於內部文件程式。由於過去很常見,文件編輯是在批處理模式下執行的。GenCode 也是一種用於定義各種軟體生產商排版系統通用格式化程式碼的過程,由 GCA(圖形通訊協會)在同一時間開發。這兩種技術,GML 在語法上,GenCode 在語義上,都為 SGML(標準通用標記語言)的開發奠定了基礎。標準化過程始於 80 年代初的美國標準化協會 ANSI,1986 年 SGML 最終作為 ISO 標準 ISO2879:1986 透過。

SGML 被認為是一種複雜且全面的語言(規範擴充套件了 500 頁)。然而,HTML(超文字標記語言)的成功證明了 SGML 的概念是合適的。基於 SGML 的 HTML 由蒂姆·伯納斯-李在 90 年代初在日內瓦開發,用於在網際網路上說明和連結文件。同時,HTML 發展成為所有電子文件最成功的格式。網際網路最初被設計為人類與人類以及人類與機器之間的通訊空間,但最近機器與機器之間的通訊變得越來越重要,這對所使用的計算機語言提出了全新的挑戰。

HTML 是一種用於文件呈現的描述性語言。主要焦點是呈現,這意味著 HTML 文件將呈現的資料及其格式指令混合在一起。人類可以透過呈現和上下文含義來識別顯示的語義;機器或(更確切地說)軟體無法識別。

1996 年,在 Jos Bosak 的指導下,一個參加 W3C 聯盟的團隊成立,旨在使 SGML 適用於 Web。結果是一個 30 頁的規範,該規範於 1998 年 2 月獲得了“W3C 建議”的地位,並被命名為“可擴充套件標記語言 (XML)”。

開發 XML 的最重要目標是

  • XML 應與 SGML 相容
  • XML 應易於在網際網路上使用
  • 可選特徵的數量應降至最低
  • XML 文件應易於生成且易於人類閱讀
  • XML 應得到各種應用程式的支援
  • 編寫 XML 程式應很容易
  • XML 應及時付諸實踐

在標記語言的術語中,用 XML 編寫的描述稱為 XML 文件,儘管內容與文字處理無關。

為什麼這本書不是 XML 文件?

[編輯 | 編輯原始碼]

如果您接受了本章提出的想法,那麼這個問題非常恰當。簡單的答案是我們無法找到支援在 XML 中建立開放文字書籍的技術。我們需要幾部分技術

  • 用於描述書籍的 XML 語言。DocBook 就是這樣一種語言,但書籍的結構非常複雜,DocBook(反映了這種複雜性)無法快速掌握
  • 一個使用 DocBook 等語言的 Wiki
  • 一個將 XML 轉換為 HTML 以顯示書籍內容的 XML 樣式表

有一個建立WikiMl(Wiki 標記語言)的專案,這可能會在某個時候使用。

參考文獻

[編輯 | 編輯原始碼]

發起作者 Richard T. Watson,佐治亞大學

華夏公益教科書