国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

windy‘s j2ee1.4 tutorial (chinese) --Understanding XML(008)

2019-11-18 16:16:29
字體:
供稿:網(wǎng)友
聲明:《本文是j2ee1.4 tutorial的中文翻譯,由于本人水平有限,其中還包含有很多的錯誤,還希望各位大蝦幫助改正,翻譯正在進行中,我會陸續(xù)發(fā)表最新的部分,望大家能給與支持!》

理解xml
這一章描述了擴展標記語言(Extensible Markup Language -- XML)和相關(guān)的規(guī)范。為了您能更易理解XML語法,下文中會包含一些編寫XML的實踐。

 
注意:本章中的所有XML文件都可以在下面的目錄中找到
    <INSTALL>/j2eetutorial14/examples/xml/samples.

關(guān)于XML的介紹
本章的內(nèi)容覆蓋了XML的基礎(chǔ)。本章的目標是讓您在開始學(xué)習(xí)XML之前,掌握更多的信息,以便您能更好的理解XML。本章會概括XML的主要特征(如:利于信息存儲和信息轉(zhuǎn)換),讓您認識到XML是怎樣被使用的。

什么是XML
XML是一個基于文本的標記語言,它在Web上很快的成為數(shù)據(jù)交換的標準。像Html語言一樣,你通過使用標簽來識別數(shù)據(jù)(識別符被包含在尖括弧里,如:<。。。>)。總的來說,標簽被認為是“標記”

但是,與HTML標簽不同的是,XML標簽是用來識別數(shù)據(jù),而不是用來顯示數(shù)據(jù)的。比如:HTML用粗體來顯示數(shù)據(jù)的標簽是<b>。。。</b>,但XML會將上面的標簽認為是一個字段名,XML的標簽的含義是:標記一段數(shù)據(jù),以便以后可以通過這個標記來識別這段數(shù)據(jù)(例如:<message>。。。</message>)。
 
注意: “識別數(shù)據(jù)”讓你對XML有一個感性的認識, XML 有時候被描繪成為一種指定數(shù)據(jù)含義的機制。 
 
用同樣的方法你為一段數(shù)據(jù)結(jié)構(gòu)定義了字段名, 而你可以隨意的使用任何的XML標記。雖然,同樣的XML數(shù)據(jù)會用在各種各樣的應(yīng)用程序中,但人們對在這段數(shù)據(jù)上將要使用的XML標記名稱會自然的取得一致。

下面是一個用在通訊應(yīng)用程序中的XML事例:
<message>
  <to>you@yourAddress.com</to>
  <from>me@myAddress.com</from>
  <subject>XML Is Really Cool</subject>
  <text>
    How many ways is XML cool? Let me count the ways...
  </text>
</message> 
 
注意: 在指南中, 我們使用加粗的字體來引起你的注意。而實際編寫XML不需要加粗字體! 
 
在上面的例子中的message標記從總體上識別信息(目的地址,發(fā)信人地址,主題,內(nèi)容)。和HTML語言一樣,<to>標記擁有一個匹配的結(jié)束標記</to>。在開始標記和結(jié)束標記之間的數(shù)據(jù)定義了XML數(shù)據(jù)元素。注意:<to>標記和對應(yīng)的</to>標記要完全的包含在<message>。。。<message>標記范圍之內(nèi)。這種包含關(guān)系使XML能更好的表現(xiàn)層次數(shù)據(jù)結(jié)構(gòu)。

同HTML一樣,XML中的空格是不起作用的,這樣你可以用易讀的方式來格式化數(shù)據(jù),而格式化后的數(shù)據(jù)仍能夠被程序正確的處理。與HTML不同的是,在XML里,你可以簡單的查找主題中是否包含“cool”這個單詞,因為XML標記是識別數(shù)據(jù)內(nèi)容,而不是指定顯示格式。

標簽和屬性
標記也可以包含屬性?包含在標記內(nèi)部的信息(尖括號中),下面的例子例舉了一個email信息結(jié)構(gòu),其中將“to”,“from”,“subject”字段變成了屬性:

<message to="you@yourAddress.com" from="me@myAddress.com" 
    subject="XML Is Really Cool"> 
  <text>
    How many ways is XML cool? Let me count the ways...
  </text>
</message> 
 
在HTML中,屬性名稱后緊跟著“=”號和屬性值,各種各樣的屬性被空格隔開。與HTML不同的是, 在XML中,在屬性之間的“,”是不能被忽略的(如果存在,會產(chǎn)生錯誤)。

既然你能夠使用屬性或標記設(shè)計一個數(shù)據(jù)結(jié)構(gòu),而且這兩個結(jié)構(gòu)是等價的。那么我們就會思考,到底使用那個方案更好的適應(yīng)我們的應(yīng)用。Designing an XML Data StrUCture  ,這個連接的內(nèi)容會幫助你決定什么時候使用屬性,什么時候使用標記。

空標記
HTML和XML之間一個最大的不同是:一個XML文檔總是被強制要求是格式良好的。有幾種規(guī)則來決定一個文檔是否是格式良好的。其中最重要的一條就是:每一個標記都要有一個結(jié)束標記。所以,在XML中,</to>標記是不可以省略的。<to>標記除了被</to>標記結(jié)束以外是不能被其他任何標記結(jié)束的。

 
注意:另一個格式良好文檔的重要的要素是所有的標記必須完全的嵌套。所以你可以寫<message>..<to>..</to>..</message>, 但是不能寫 <message>..<to>..</message>..</to>。 一個格式良好條件的XML Frequently Asked Questions (FAQ)列表在 http://www.ucc.ie/xml/#FAQ-VALIDWF. (這個常見問題解答是在w3c "Recommended Reading" 列表中,位于 http://www.w3.org/XML/.) 
 
可是,有些時候,一個標記獨自存在也是可以被理解的。例如,你可能像增加一個“flag”標記,用這個標記來標識信息的重要性。這樣的一個標記不包含任何的內(nèi)容,所以它被稱作“空標記”。你可以通過用/>代替>來產(chǎn)生這個空標記的。例如,下面的信息就包含這樣的標記:
<message to="you@yourAddress.com" from="me@myAddress.com" 
    subject="XML Is Really Cool">
  <flag/> 
  <text>
    How many ways is XML cool? Let me count the ways...
  </text>
</message> 
 
注意: 這個空標記使你不用為了格式良好性而不得不寫成<flag></flag>。你可以通過產(chǎn)生一個文檔類型定義DTD(Document Type Definition)來控制那個標記可以被置程空標記。我們將在后面討論DTD。如果沒有DTD,那么文檔中可以包含任意種類的格式良好的標記 。
 
XML文件中的注釋
XML的注釋很像HTML的注釋:
<message to="you@yourAddress.com" from="me@myAddress.com" 
    subject="XML Is Really Cool">
  <!-- This is a comment -->
  <text>
    How many ways is XML cool? Let me count the ways...
  </text>
</message>

XML的序(PRolog)
為了完成對XML的入門,一定要注意一個XML文件總是開始于一個序。最小的序包含一個聲明,這個聲明標識一個文檔為XML文檔。如:
<?xml version="1.0"?> 
這個聲明可能包含額外的信息,比如:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?> 
這個XML聲明重要性如同HTML的頭--<html>,區(qū)別在于XML使用<?…?>,并且在其中可以包含如下屬性:
version
    識別XML標識語言的版本。這個屬性是可選的。
encoding
    識別數(shù)據(jù)的編碼格式。“ISO-8859-1”是西歐和英文字符集(默認格式為UTF-8)。
standalone
    標識本文檔是否引用一個外部的實體或一個外部的數(shù)據(jù)類型規(guī)范。如果沒有外部的引用,那么設(shè)置成“yes”是合適的。

在序中也可以包含實體定義(當你在文檔中引用它時,它才會被插入)和規(guī)范(告訴你在文檔中使用那些標識是合法的)。這些在DTD中聲明的實體定義和規(guī)范可以直接在序中被定義,也可以在序中定義一個外部規(guī)范文件的指向,以上這些將是后面的主題。要了解更多這方面的信息,可以查看列舉在w3cXML頁面的推薦讀物(the Recommentded Reading)列表http://www.w3.org/XML/。
 
注意: 有些聲明是可選的。但是當你編寫一個XML文件時,包含這個聲明是明智的。這個聲明至少要包含一個版本號,加上編碼格式會更好一些。無論XML標準在將來被擴展還是這些數(shù)據(jù)將會本地化,這樣做會簡化你很多的工作。 
 
在XML序后面的所有內(nèi)容組成了文檔的內(nèi)容。

處理指令
一個XML文件也能夠包含處理指令,這些處理指令為處理這個XML文件的應(yīng)用程序提供了命令和信息。處理指令擁有如下的格式:
  <?target instructions?> 
上面的target是處理本XML文件的應(yīng)用程序名稱,instructions是一個包含應(yīng)用程序需要的信息和命令字符串。

因為instructions是針對應(yīng)用程序的,一個XML文件可以擁有多個針對不同的應(yīng)用程序處理指令使不同的應(yīng)用程序做相似的事情。
 
注意: 目標程序名(target)“xml”(或三個字母的大小寫組合)被XML標準所保留。 
 
為什么XML是重要的
有很多的原因使XML很快被接受。這部分例舉了一些優(yōu)點。

純文本
因為XML不是二進制格式的,所以你可以使用一個標準的文本編輯器或一個可視的開發(fā)環(huán)境來編寫XML文件。這是得你可以很簡單的調(diào)試你的程序和使用它存儲商量的數(shù)據(jù)。在其他的領(lǐng)域,一個基于數(shù)據(jù)庫的XML前端使存儲大量的XML數(shù)據(jù)成為可能。所以XML提供了小到一個配置文件,大到公司的數(shù)據(jù)庫存儲的能力。

數(shù)據(jù)識別
XML使你知道你擁有什么種類的數(shù)據(jù)而不是告訴你怎樣去顯示這些數(shù)據(jù)。因為標記識別信息,將數(shù)據(jù)分成了各個部分。一個email程序可以處理它,一個搜索程序可以搜索發(fā)送給某人的信息,一個地址簿可以從剩下的信息里選出地址。簡單地說,因為不同部分的信息有不同的標識,所以,他們能被不同的應(yīng)用程序用于不同的目的。

表現(xiàn)能力
當顯示變得重要時,樣式表標準(stylesheet standard, XSL)允許你指示怎樣去描繪數(shù)據(jù)。例如,針對下面語句的樣式表:
<to>you@yourAddress.com</to> 

能夠表示成:
1.    開始新的一行。
2.    以粗體顯示“To:”并且在后面加一個空格。
3.    顯示目標數(shù)據(jù)。
作用的結(jié)果是:
To: you@yourAddress 
當然,你能夠在HTML里做同樣的事情,但是你不能用查找程序和地址解析程序等處理這些數(shù)據(jù)。更重要的是,因為XML是樣式自由的,所以你能夠使用不同的樣式表產(chǎn)生不同的顯示結(jié)果。你今天編寫的XML文檔能被將來的系統(tǒng)所使用。

內(nèi)嵌的可重用能力
XML文檔的最優(yōu)秀的部分之一是他們能夠被分開的實體所組成。你能夠用HTML做同樣的事,但是只能連接到其他的文檔。與HTML不同的事,XML實體能夠內(nèi)嵌到文檔中。內(nèi)嵌的部分就像文檔的其它部分,你可以同時搜索整個文檔或者在以一個塊的方式下載它。這可以讓你模塊化你的文檔而不用憑借連接。你能夠單一化資源,這樣對一個部分的編輯可以反射到這部分使用到的各個部分。然而,每個人都會把一個由這些片斷組成的文檔當成一個片斷的文檔。

連接能力
很感謝HTML,在文檔之間定義連接的能力現(xiàn)在被認為是不可缺少的。本指南的下一部分,XML and Related Specs: Digesting the Alphabet Soup,討論了連接規(guī)范初步。這個初步使你能夠定義雙向連接:多目標連接、展開連接(點擊一個連接使目標信息內(nèi)嵌顯示)和兩文檔之間的連接。

處理簡單
像以前提及的初期的、規(guī)則的和一致的符號使建立應(yīng)用程序來處理XML數(shù)據(jù)變得簡單。例如,在HTML里,一個<dt>標簽?zāi)軌虮?lt;/dt>、另一個<dt>或</dl>結(jié)束。這是的針對它的編程很困難。但是在XML中,<dt>標記必須被</dt>結(jié)束,這個限制是XML文檔具有格式良好的前提。(否則,XML解析器無法讀取數(shù)據(jù))。既然XML是一個廠商中立標準,所以你可以在眾多的XML解析器中選擇。

層次
最后,XML文檔受益于層次結(jié)構(gòu)。一般的,層次結(jié)構(gòu)文檔可以很快被訪問,因為你能夠直達你需要的部分,像進入一個內(nèi)容表。它們也更容易整理,因為每一個片斷被限定了。例如在文檔里,你能移動一個標題到一個新的位置,也能夠拖動標題中的所有內(nèi)容。這樣就代替了選擇一部分內(nèi)容在粘貼到另一個地方。

怎樣使用XML
有幾個地方可以使用XML:
1.    傳統(tǒng)的數(shù)據(jù)處理,其中XML將數(shù)據(jù)編碼讓程序來處理。
2.    文檔驅(qū)動程序,XML文檔作為編譯接口和應(yīng)用程序的容器 
3.    存檔 ?文檔驅(qū)動程序的基礎(chǔ),你可以制定一個被保存的組件的版本,這樣這個組件可以再次被使用。
4.    綁定,定義數(shù)據(jù)結(jié)構(gòu)的DTD或概要(schema)通常被用來產(chǎn)生一個應(yīng)用程序的重要的部分。
傳統(tǒng)數(shù)據(jù)處理
XML快速的成為在Web上顯示數(shù)據(jù)的選擇。當XML被使用在以網(wǎng)絡(luò)為中心的java平臺程序(用來發(fā)送和接收信息)上時,它是最優(yōu)秀的。所以,一個客戶端/服務(wù)器應(yīng)用程序能夠使用編碼過的XML來交換數(shù)據(jù)。

在將來,XML將是在各種各樣事務(wù)中進行數(shù)據(jù)交換的最好語言(要求雙方的語言選擇達成一致)。再過幾年,對通用標準的需求將產(chǎn)生許多的產(chǎn)業(yè)標準。在這幾年間,將你現(xiàn)在的產(chǎn)品轉(zhuǎn)換到基于XML的產(chǎn)品的機制將是非常重要的。這些機制包括RDF 初步(用來定義“元標記”) 和XSL 規(guī)范(使你轉(zhuǎn)換一類XML標記到其他類XML標記)。

文檔驅(qū)動編程
最新的使用XML的方法是構(gòu)造一個文檔,用這個文檔來描述一個應(yīng)用程序頁面應(yīng)該怎樣顯示。這個文檔(并不是被簡單的顯示)由對使用者界面組件的引用和商業(yè)邏輯組件的引用組成。

當然,你一定會感覺利用Java平臺編寫這些組件會更好些。無論是Java Beans組件還是Enterprise Java Beans組件都能夠被用來構(gòu)造這樣的應(yīng)用程序。盡管迄今為止沒有什么成果為商業(yè)使用做準備,但是一些初步的工作已經(jīng)完成。
 
注意:用Java編程語言編寫XML處理工具也是很好的選擇,因為它和XML一樣都是平臺無關(guān)的。幾個針對Java平臺的可視的XML編輯器已經(jīng)開發(fā)完成。你可以在下面的地址里查看編輯器、處理工具和其他XML資源列表: http://www.oasis-open.org/cover/. 
 
綁定
一旦你使用DTD或概要(schema)定義了XML數(shù)據(jù)的結(jié)構(gòu),那么你需要做的大部分處理就會被定義。例如,如果概要聲明在一個<date>元素中的文本數(shù)據(jù)必須是合法的日期格式,那么這個數(shù)據(jù)的合法性就被定義,而剩下的工作就是寫代碼。盡管一個DTD規(guī)范不能達到同樣的細節(jié),但是一個DTD提供一個語法,此語法告訴你哪一個數(shù)據(jù)結(jié)構(gòu)會發(fā)生,按什么樣的順序發(fā)生。這個規(guī)范告訴你怎樣寫處理數(shù)據(jù)元素的高級別的代碼。

但是當數(shù)據(jù)結(jié)構(gòu)被完全的制定,你需要編寫的處理代碼能夠被簡單的自動生成。像這樣的處理被稱作綁定(通過處理定義元素的規(guī)范來產(chǎn)生處理元素的類)。隨著時間的推移,你會發(fā)現(xiàn)你正在使用數(shù)據(jù)規(guī)范來產(chǎn)生重要的代碼,這樣你就能夠?qū)⒆⒁饬械綉?yīng)用程序的編寫上。

歸檔
Holy Grail設(shè)計是可重用的、模塊化組件的構(gòu)造。理想情況下,你把他們從書架上拿下來,定制他們和組合他們來構(gòu)建一個應(yīng)用程序,你只需要編寫很少的代碼和額外的編譯工作。

保存信息的基本的機制被稱為歸檔。你通過將一個組件寫到一個輸出流來存檔它。然后你可以將它讀進來并使用它保存的參數(shù)實例化它。例如,如果你保存一個表組件,它的參數(shù)可能是用來顯示的行和列的數(shù)目。歸檔組件也可以以不同的方式使用。

當組件以二進制方式歸檔的時候,如果你在保留這個歸檔的兼容性的前提下改變類文件,那么你將會遇到一些限制。如果你能夠修改歸檔版本來表現(xiàn)一些改變,那么能夠解決一些問題。但是改變二進制是很困難的。這些問題是我們開始做使用XML進行歸檔的嘗試。但是如果一個對象的狀態(tài)以文檔格式被歸檔,那么我們就很容易改變它。

XML的基于文檔的格式也能夠使在用不同的語言編寫的應(yīng)用程序間傳遞對象更加簡單。基于這些理由,基于XML的歸檔方式在不遠的將來可能會成為重要的力量。

總結(jié)
XML是如此的簡單和靈活。到現(xiàn)在為止,仍然有很多的應(yīng)用在開發(fā)中。它是很多即將到來標準的基礎(chǔ),它提供一種通用的語言使不同的計算機系統(tǒng)間可以實現(xiàn)數(shù)據(jù)交換。

更多的信息關(guān)于XML背景可以從下面的連接得到:
http://www.sciam.com/1999/0599issue/0599bosak.html 

(出處:http://m.survivalescaperooms.com)



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 德清县| 罗田县| 太原市| 区。| 十堰市| 宁乡县| 镇江市| 莱芜市| 巴塘县| 潜山县| 建宁县| 湘潭县| 仪征市| 修水县| 涟水县| 林甸县| 太仓市| 泗阳县| 普定县| 盘山县| 永平县| 富阳市| 织金县| 阿拉尔市| 平顶山市| 东乌| 望奎县| 巨野县| 绵竹市| 策勒县| 五家渠市| 西青区| 普陀区| 噶尔县| 河池市| 商南县| 甘孜| 广西| 西丰县| 读书| 新和县|