跳至內容

XML/引言

維基教科書,自由的教學讀本
< XML

XML > 引言


學習目標

[編輯]

學習本章內容後您應該能夠

  • 定義SGML,HTML和XML的目的
  • 使用NetBeans創建簡單的標記文檔

概述

[編輯]
數據管理中有四個核心問題:數據獲取、數據存儲、數據檢索和數據交換。本書旨在詳細介紹XML, 這一數據交換的管理技術。
數據交換一直是一個重要的研究課題,網際網路的出現進一步加強了它的重要性。電子數據交換(EDI),作為大型企業傳統的數據交換標準已經逐漸讓位於XML,而後者極有可能成為所有組織的數據交換標準,不論該組織的規模如何皆是如此。
EDI支持標準業務文檔的電子交換。貿易夥伴之間的普通業務文檔(例如,發貨單和裝貨單)交換採用一種結構化的格式。不同於不拘形式的e-mail消息,EDI支持重複性的、日常商業事務間的數據交換。EDI所定義的標準保證了日常電子事務的簡明性和準確性。在美國和加拿大EDI的標準是X.12,而主要的國際標準則是EDIFACT。遵循同樣EDI標準的企業之間就可以通過電子方式進行數據共享。
網際網路是一種幾乎任何公司都能夠進入並且通信費用比傳統EDI降低很多的全球化的網絡。因此,網際網路已經成為貿易夥伴間選擇用來進行電子信息交換的途徑。利用網際網路的最簡單方式就是直接傳送EDI文件。另外一種方式是重新審視數據交換技術,畢竟EDI技術是在20世紀60年代發展起來的。這種再思考導致了XML的誕生。但在思考XML之前,我們有必要了解XML的源頭——SGML。

SGML

[編輯]
據估計,在一個典型的美國公司中,企業相關文檔的管理費用占全年收入的15%,占人力成本的近25%,並且占辦公室工作人員10%-60%的工作時間。 標準通用標記語言Standard Generalized Markup Language (SGML) 的設計目的正是為了降低管理成本、提高文檔管理的效率。
所謂的標記語言 就是將文檔的相關信息嵌入到文檔的正文之中。在下面的例子中,標記標籤顯示該段文字包含了一個城市的細節信息。包括城市名稱、所在州、人口等均為特定的標籤所標識。這樣作為「讀者」,無論是人還是計算機,都可以準確無誤地理解諸

如「Athens」、「Georgia」、「100,000」等內容的確切含義。我們還可以觀察到,城市所在的緯度以及地理位置等內容也可以用合適的標籤顯式地標識出來。SGML的有用性在於它記錄了文本及其含義。

表1 標記語言

<city><cityname>Athens</cityname> is located 60 miles northeast of Atlanta, <statename> Georgia</statename>. Home of the University of Georgia, it has a population of just over <population> 100,000</population>. Athens' location is <latitude>33º 57' 39" N</latitude>, <longitude> 83º 22' 42" W</longitude></city>
SGML是一種獨立於提供商(vendor-independent)的國際標準(ISO 8879),它用於定義文檔的結構。於1986年作為一種元語言而開發的SGML是HTML和XML的前身。由於SGML文檔是標準化的文本文件,因此SGML可以進行跨系統的便捷應用。隨著技術的快速發展,SGML

為數據交換管理提供了一個穩定的平台。而且,SGML文件能夠任意轉換並在多種媒介中發布。SGML的使用使得文本信息與它的顯示方式和顯示時間無關。當一個組織能夠以一種單一的、獨立的標準存儲文檔並且能夠將其轉換成任意格式在任何媒介中顯示的話,它就獲得了長期的效益。

SGML用於數據管理有三個主要的優勢:
  • 可重用性: 信息可以在被創造之後多次使用。
  • 柔性: SGML文檔可以以任意格式發布。同樣的內容可以列印出、發布在網頁上或通過一個文本進行傳遞。由於SGML是面向內容的,內容的表達方式可以推遲到輸出格式確定後,再做出決定。
  • 可修正性: SGML支持修訂和版本控制。通過內容的版本控制,公司可以容易地跟蹤文檔的修改。
下面一個SGML片斷很好地展示了SGML的特徵和優勢。一段文字的前後標籤描述了該文字的含義,因此也很好地支持了內容的表達和檢索。例如, 包圍「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代碼可以以不同的形式表示出來。例如,可以表示成:

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

Airline Flight Origin Destination Dep Arr
Delta 22 Atlanta Paris 5:40pm 8:10am
如果該數據是以如表3所示的HTML格式存放,則讀者就必須推斷這些數據的含義。這對於人來說是非常簡單的,但是對於機器便是不可能完成的任務。並且,這種文本顯示格式是固定的,只能通過重寫HTML代碼進行更改。

表3 HTML示例

1
2
3
4
5

<html>
 <body>
Delta flight 22 flies from Atlanta to Paris leaving 5:40pm and arriving 8:10am
 </body>
</html>

含義和表達方式應該分離, 這就是SGML比HTML更加強大的一個重要原因。

小節總結:SGML是一種定義文檔結構的標記語言,因為它可以變換為多種媒介格式,所以它優於HTML。

XML

[編輯]
可擴展標記語言(XML)的目的就是實現信息的自描述。XML是基於SGML的,它被設計成一種支持電子商務應用的標記語言。國際網際網路組織[http://www.w3.org/ World Wide Web Consortium (W3C,於1998年完成了XML的定義,它是一種元語言——用來生成語言的語

言。由於它相對於HTML的優勢,XML勢必在許多網站上逐步地取代HTML。XML和HTML的主要不同點如下:

XML HTML
信息的含義 信息的顯示
可擴展的標籤集 固定的標籤集
數據交換語言 數據顯示語言
更強的超連結功能 有限的超連結功能
XML中的可擴展性的含義是,通過定義結構和標籤便可以創造一種新的數據交換語言。例如,OpenGIS組織 設計了地理標記語言(GML)來解決地理信息的電子交換問題。同樣的,開放旅遊組織也致力於定義支持旅遊信息交互的TourML語言。另外一個很好的XML應用例證是NewsML™.
本文將介紹XML的所有特徵,但是在此我們首先引入一些關鍵特徵。

XML的關鍵特徵

[編輯]
  • 所有元素都有開始和結束標籤
  • 所有元素都都遵從嚴格的層次結構,只有一個根元素。
  • 一個元素不能覆蓋其它元素
  • 元素的名稱必須遵循XML的命名規範
  • XML是區分大小寫的
XML能夠通過以下幾種重要方式提高數據交換的效率
  • 一次輸入、多次格式定義:一旦創建了一個XML文件,其能夠通過應用XML樣式表可以以不同的形式顯示。例如,信息可以顯示在網頁上或者列印在書中出版。
  • 獨立於軟硬體: XML文件是標準化的文本文件,這就意味著它可以被任何作業系統所讀取。
  • 一次輸入,多次交換: 如果一個用於數據交換的XML標準在一個行業內達成一致意見,那麼使用該標準的成員之間就可以方便的進行數據交換。
  • 更快捷、更準確的網頁搜索: 一旦計算機能夠確認信息的真正含義(通過讀取標籤),網絡搜索的能力便會被極大地增強。例如,如果你正在查找一個書名,對於計算機來說搜索在標籤對<booktitle> 和 </booktitle>之間的文本其效率將遠遠高於搜索整篇文

章。而且,虛假、無用的信息也可以通過搜索標籤過濾掉。

主要的XML元素

[編輯]

主要的XML元素包括

  • XML schema:模式是描述文檔結構和標籤定義的XML文檔。
  • XML文檔: 包含XML代碼的文件。
  • XML樣式表: 包含XML文檔顯示格式說明的XML文檔。
在隨後的幾章中,您將學會如何創建和使用這些XML元素。

XML在UPS中的應用

[編輯]
「UPS是一個只關注規模和速度的服務性公司」——Geoff Chalmers,UPS eSolution部門項目經理。2003年,UPS在世界範圍內擁有357,000位員工,年收入335億美金。UPS創造了美國國內生產總值的6%。


UPS廣泛地使用各種技術。其信息系統部門擁有4,000名員工。公司的網站擁有166個不同國家的主頁並且支持44種應用。


UPS每天大約運送1億3千萬件包裹,用戶可以通過UPS的網站全程跟蹤包裹的運送狀態。單就這項服務,UPS的網站每天便會接受超過20億次的點擊訪問。UPS網站提供的44種服務中有19種是基於XML在線工具(Web service)的應用。


UPS在線工具可以與客戶應用程式進行集成。這使得客戶方的任務更簡單、更容易而且更快捷。通過「CampusShip」(UPS十年中最成功的產品之一)UPS證明了簡便與速度的重要性。UPS的CampusShip是一個基於Web的,UPS提供主機服務的運輸系統。通過使用網絡連接,雇員可以通過任一遠程桌面運送自己的包裹或信件。與此同時,管理層全面掌控所有的運輸活動。UPS的CampusShip能同時支持組織內部託運人的自治和管理成本的控制。該產品的成功之處在於無需任何安裝和軟體維護需求,並且其能夠以最快的速度進行部署。XML的在線工具也使得CampusShip得到更快的發展。


UPS對於XML情有獨鍾正是因為XML獨立於語言和平台。這使得XML具有非常好的柔性和強大的功能。同時XML也是非耦合的和可擴展的。

XML使得UPS能夠定位於更加廣闊的市場和減少用戶的交互以降低客戶服務成本。XML另外一個突出的特徵是向後兼容。CML的使用使得UPS顯著地降低了維護、實施和使用成本。

但是這些好處的取得也是付出了相當代價的。Geoff Chalmers說「XML在很多方面是很低效的」。XML比其他技術占用了更多的處理器資源和網絡頻寬。但是另一方面,CPU和網絡設備越來越便宜,這使得上述問題逐漸的弱化。


不管怎樣,Geoff Chalmers還是認為XML不能很好支持資料庫方面的應用。他說,XML太冗長,它只能作為一個數據交換的媒介而無法成為資料庫的存儲媒介。曾經有過一些研究者力求將XML與資料庫緊密集成。但是資料庫和XML一樣都提供了資料結構和標識,因此XML與數

據庫的集成能夠帶來的好處僅限於層次結構的使用。另一方面,如果數據以大塊進行存儲,那麼XML的應用將會變得很有意義。 GeoffChalmers指出的另外一個問題是業務規則也無法在XML模式中進行表示。

最後,我們知道原始XML文檔的編程和調試將是很困難的。因此UPS的企業及客戶已經開始利用相應的代碼生成器以及.NET和BEA中的內嵌工具解決此問題。但是對於UPS對UPS在線工具的高可靠性、可擴展性要求來說,開發工程師進行手工編碼仍然是必不可少的。

小節總結: XML 是一種可轉換的元語言,其可以通過遵循某些特定的規則而實現對於電子商務的支持。

創建一個標記文件

[編輯]
所有的文本編輯工具都可以用來創建標記文件(例如,HTML文件)。本書中,我們將使用[http://www.NetBeans.org/
NetBeans],NetBeans是一个基于java的开放源码集成开发环境 Integrated Development Environment (IDE),您

可以從www.NetBeans.org. 下載並安裝NetBeans。然後按照下面的步驟:

  1. 進入NetBeans
  2. 通過閱讀Help-〉Contents下的材料熟悉IDE
  3. 在系統目錄下,為您的練習建立一個本地目錄
  4. 通過File > Mount Filesystem > Local Directory 將IDE與您剛剛建立的目錄連接
  5. 創建新的XML文件:File > New > XML > XML
  6. 命名該文件(例如:exo1) 並且選擇該文件的存放位置
  7. 選擇Well-formed Document
  8. 您應該能夠看到如下的XML框架文件
<?xml version="1.0" encoding="UTF-8"?>


<!--
Document  : ex01.xml
Created on : January 6, 2004, 9:57 AM
Author  : Rick
Description:
Purpose of the document follows.
-->

<root>

</root>


  1. 我們的目的是創建一個普通的標記文件而不是XML文件,所以用表1中的四行代碼代替上面的XML框架文件。
  2. 通過點擊綠色的三角(Alt+F9)來檢測該標記文檔是否符合格式要求,這裡應該可以通過該項檢測。
  3. 刪除標籤</city>並再次檢驗。這次您應該能夠看到一個結束標籤缺失的錯誤警告。

小節總結:因為NetBeans可以檢測文檔是否符合XML規則,因此它適合用來創建標記文檔

練習1

[編輯]
使用NetBeans創建一個描述一飯店的標記文件。文件中的標記應該能夠標識飯店的名稱、地址以及食品的名稱和該飯店特色食品。

練習2

[編輯]
假設我們想為一個小公司創建一個人事文檔。

我們擁有何種數據? 分析下表的數據。我們的目標是將它轉換為一個標記文檔。 公司的名稱「Exercises inc.」

firstname lastname street city country date_of_birth phone number department title
Tobias Boeswald Laxenburger str. 384 Vienna Austria 02/07/1974 0431/3445346 finance and accounting Accountant
Dimitri Felber Neuburger str. 19a Passau Germany 05/12/1967 00498510/523456 finance and accounting CFO
Stefan Meyer Breite Gasse 10 Nuremberg Germany 10/09/1972 00499110/45365 human resources HR Manager
所有的練習數據均出自杜撰,如有雷同純屬巧合。:)

為什麼本書不是一個XML文檔?

[編輯]
如果您已經接受了本章提出的概念,這個問題自然而然地會在您的腦中產生。問題的答案是我們無法找到一種能夠使用XML創建開放文本書籍的技術。我們需要如下的一些技術:
  • 一種描述書籍的XML語言。DocBook (http://www.docbook.org/) 是這樣的一種語言,但是一本書的結構是相當複雜的,

DocBook由於其的複雜程度而無法快速掌握。

  • 能夠使用DocBook的Wiki。
  • 一種能夠將XML轉換成HTML以便顯示本書內容的XML樣式表
我們已經創建了一個項目WikiMl (Wiki MarkupLanguage)。該項目可能會

在您學習中使用到。

引文

[編輯]

原始作者 Richard T. Watson, University of Georgia