跳轉到內容

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)。圍繞文字塊的標籤描述了其含義,從而支援呈現和檢索。例如,圍繞“Delta”的一對標籤 <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,旨在支援電子商務。全球資訊網聯盟 (W3C) 於 1998 年初完成了 XML 的定義,將其描述為元語言——一種生成語言的語言。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 章)。

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

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

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

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

XML 的關鍵特性

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

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

  • 一次編寫,多次格式化:建立 XML 檔案後,可以透過應用不同的 XML 樣式表以多種方式呈現它。例如,資訊可以顯示在網頁上或列印在書中。
  • 硬體和軟體獨立性:XML 檔案是標準文字檔案,這意味著任何應用程式都可以讀取它們。
  • 一次編寫,多次交換:一旦某個行業就資料交換的 XML 標準達成一致,資料就可以在使用該標準的所有成員之間輕鬆交換。
  • 更快、更精確的 Web 搜尋:當計算機可以確定資訊含義(透過讀取標籤)時,Web 搜尋將得到增強。例如,如果您正在查詢特定的書籍標題,對於計算機來說,搜尋<booktitle>和</booktitle>標籤對之間的文字,比搜尋整個檔案以查詢標題要高效得多。此外,應消除虛假結果。
  • 資料驗證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 中的文字編輯器,這是一個用於 Java 的開源 整合開發環境 (IDE),因為 NetBeans 支援 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 需要用於 UPS 線上工具的高可用性、可擴充套件性和效能,必須由經驗豐富的內部工程師進行手工編碼。

EMI 音樂中的 XML

[編輯 | 編輯原始碼]

它是如何使用的?

EMI德國音樂有限公司(EMI Music Germany GmbH & Co. KG),一家知名的德國唱片公司,在其網站上展示了其合作藝人的資訊。訪客可以瀏覽所有音訊或影片作品。整個網站包含近20,000個頁面,其中包含有關藝術家及其產品(CD、DVD、LP)的資訊。所有內容都進行了適當的連結和系統化的分組。

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

這就是XML發揮作用的地方。儲存在資料庫中的資料已轉換為XML程式碼。現在,一個XSLT樣式表將這些資料轉換為HTML程式碼,任何網頁瀏覽器(例如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適合網路。結果是一個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,佐治亞大學

華夏公益教科書