在很多研討會和培訓(xùn)班上我遇到過許多人,他們還不明白為什么要使用XML也不知道如何在他們的應(yīng)用中使用XML。一些來自諸如Gartner公司的報(bào)告建議說,商業(yè)公司不能再做局外人了,不能對XML置之不理。如果你還不清楚XML到底有什么好處的話,你并不是唯一的人。
我決定把與人們和媒體關(guān)于XML話題的交談?wù)沓晌?,列出XML在應(yīng)用中的五個最令人喜愛的用法。盡管這些并不能包含XML的所有潛在應(yīng)用,至少是些最重要的領(lǐng)域。
1、數(shù)據(jù)交換
用XML在應(yīng)用程序和公司之間作數(shù)據(jù)交換已不是什么秘密了,毫無疑問應(yīng)被列為第一位。那么為什么XML在這個領(lǐng)域里的地位這么重要呢?原因就是XML使用元素和屬性來描述數(shù)據(jù)。在數(shù)據(jù)傳送過程中,XML始終保留了諸如父/子關(guān)系這樣的數(shù)據(jù)結(jié)構(gòu)。幾個應(yīng)用程序可以共享和解析同一個XML文件,不必使用傳統(tǒng)的字符串解析或拆解過程。
相反,普通文件不對每個數(shù)據(jù)段做描述(除了在頭文件中),也不保留數(shù)據(jù)關(guān)系結(jié)構(gòu)。使用XML做數(shù)據(jù)交換可以使應(yīng)用程序更具有彈性,因?yàn)榭梢杂梦恢?與普通文件一樣)或用元素名(從數(shù)據(jù)庫)來存取XML數(shù)據(jù)。
2、Web服務(wù)
Web服務(wù)是最令人激動的革命之一,它讓使用不同系統(tǒng)和不同編程語言的人們能夠相互交流和分享數(shù)據(jù)。其基礎(chǔ)在于Web服務(wù)器用XML在系統(tǒng)之間交換數(shù)據(jù)。交換數(shù)據(jù)通常用XML標(biāo)記,能使協(xié)議取得規(guī)范一致,比如在簡單對象處理協(xié)議(Simple Object Access Protocol, SOAP)平臺上。
SOAP可以在用不同編程語言構(gòu)造的對象之間傳遞消息。這意味著一個C#對象能夠與一個Java對象進(jìn)行通訊。這種通訊甚至可以發(fā)生在運(yùn)行于不同操作系統(tǒng)上的對象之間。DCOM, CORBA或Java RMI只能在緊密耦合的對象之間傳遞消息,SOAP則可在松耦合對象之間傳遞消息。
3、內(nèi)容管理
XML只用元素和屬性來描述數(shù)據(jù),而不提供數(shù)據(jù)的顯示方法。這樣,XML就提供了一個優(yōu)秀的方法來標(biāo)記獨(dú)立于平臺和語言的內(nèi)容。
使用象XSLT這樣的語言能夠輕易地將XML文件轉(zhuǎn)換成各種格式文件,比如HTML, WML, PDF, flat file, EDI, 等等。XML具有的能夠運(yùn)行于不同系統(tǒng)平臺之間和轉(zhuǎn)換成不同格式目標(biāo)文件的能力使得它成為內(nèi)容管理應(yīng)用系統(tǒng)中的優(yōu)秀選擇。
4、Web集成
現(xiàn)在有越來越多的設(shè)備也支持XML了。使得Web開發(fā)商可以在個人電子助理和瀏覽器之間用XML來傳遞數(shù)據(jù)。
為什么將XML文本直接送進(jìn)這樣的設(shè)備去呢?這樣作的目的是讓用戶更多地自己掌握數(shù)據(jù)顯示方式,更能體驗(yàn)到實(shí)踐的快樂。常規(guī)的客戶/服務(wù)(C/S)方式為了獲得數(shù)據(jù)排序或更換顯示格式,必須向服務(wù)器發(fā)出申請;而XML則可以直接處理數(shù)據(jù),不必經(jīng)過向服務(wù)器申請查詢-返回結(jié)果這樣的雙向“旅程”,同時(shí)在設(shè)備也不需要配制數(shù)據(jù)庫。
甚至還可以對設(shè)備上的XML文件進(jìn)行修改并將結(jié)果返回給服務(wù)器。想像一下,一臺具有互聯(lián)網(wǎng)功能并支持XML的電冰箱將會給市場帶來多么大的沖擊吧。你從此不必早起去取牛奶了!
5、配制
許多應(yīng)用都將配制數(shù)據(jù)存儲在各種文件里,比如.INI文件。雖然這樣的文件格式已經(jīng)使用多年并一直很好用,但是XML還是以更為優(yōu)秀的方式為應(yīng)用程序標(biāo)記配制數(shù)據(jù)。使用.NET里的類,如XmlDocument和XmlTextReader,將配制數(shù)據(jù)標(biāo)記為XML格式,能使其更具可讀性,并能方便地集成到應(yīng)用系統(tǒng)中去。使用XML配制文件的應(yīng)用程序能夠方便地處理所需數(shù)據(jù),不用象其他應(yīng)用那樣要經(jīng)過重新編譯才能修改和維護(hù)應(yīng)用系統(tǒng)。
如前所述,這里提到的五種使用XML的途徑不包括全部場合。我希望這些可以有助于你思考如何
頂
好
================================================================
CSDN 論壇助手 Ver 1.0 B0402提供下載。 改進(jìn)了很多,功能完備!
★ 瀏覽帖子速度極快![建議系統(tǒng)使用ie5.5以上]。 ★ 多種帖子實(shí)現(xiàn)界面。
★ 保存帖子到本地[html格式]★ 監(jiān)視您關(guān)注帖子的回復(fù)更新。
★ 可以直接發(fā)貼、回復(fù)帖子★ 采用XML接口,可以一次性顯示4頁帖子,同時(shí)支持自定義每次顯示帖子數(shù)量??梢詾g覽歷史記錄!
★ 支持在線檢測程序升級情況,可及時(shí)獲得程序更新的信息。
★★ 簽名 ●
可以在您的每個帖子的后面自動加上一個自己設(shè)計(jì)的簽名喲。
Http://www.ChinaOK.net/csdn/csdn.zip
Http://www.ChinaOK.net/csdn/csdn.rar
Http://www.ChinaOK.net/csdn/csdn.exe [自解壓]
頂上去。
1
up
很好!還有沒有高手補(bǔ)充??
補(bǔ)充:
==========================================================
xml的應(yīng)用是什么?xml到底能做什么,我把自己的經(jīng)驗(yàn)和體會整理了一下。
首先說,xml的技術(shù)有兩項(xiàng)的很顯著的特點(diǎn)。
1,數(shù)據(jù)和現(xiàn)實(shí)的分離。
2,數(shù)據(jù)的自描述性。
下面我就從這兩個方面,結(jié)合自己的經(jīng)驗(yàn)和叢書中了解的知識,簡單的談一下。
第一:數(shù)據(jù)和現(xiàn)實(shí)的分離。
比如說你手頭上有一篇的資料(我們這里先假定是文字的資料,因?yàn)槿绻婕暗綀D,影像等范圍就太廣了,也不是我只能力所及),是xml的數(shù)據(jù)的格式,好了,如果你的客戶想通過互聯(lián)網(wǎng)看看你的資料。你就可以使用一個aaa.xsl把你的xml的數(shù)據(jù)格式化為HTML的格式,同時(shí)這里面有個補(bǔ)充一點(diǎn),因?yàn)槟憧梢钥刂颇阋@示的內(nèi)容,你可以過濾掉對于客戶不能看到的信息。但是這里面你并沒有動原來的數(shù)據(jù)。
如果你的老板想把資料打印出來,作為報(bào)表向上級匯報(bào),還是用原來的數(shù)據(jù),再寫一個bbb.xsl,把xml的數(shù)據(jù)輸出為一個漂亮的報(bào)表的形式。ok了。
如果你以前的數(shù)據(jù)是txt的格式,你就必須從新的要做兩種的格式,
一個html的,一個報(bào)表的。你的工作最多時(shí)copy,copy的
2,數(shù)據(jù)的自描述性。
比如說我的個人信息。
對于數(shù)據(jù)庫來說,可能建立一個users的表。建立不同的字段。
數(shù)據(jù)取得可以是
rs("name")="jiangtianpeng"
rs("Emial")="wfxian@263.net"
rs("Id")="dadapeng"
但是沒有了rs或者對于外部來說又如何的區(qū)分id和name的區(qū)別。
dadapeng是id?還是name?
jiangtianpeng是name?還是id?
ok
用xml描述一下個人信息
<person>
<name>jiangtianpeng</name>
<id>dadapeng</id>
<natio>china</nation>
....
<email>wfxian@263.net</email>
</person>
是不是一目了然。
實(shí)際上面的問題就涉及到了不同系統(tǒng)之間的xml的交換。xml是不同系統(tǒng)之間的橋梁。
我談一下我工作的xml經(jīng)驗(yàn)
我現(xiàn)在的工作是一個中文,英文,俄文三種語言的網(wǎng)站,
比如我們通過com組件的得到一個用戶的信息
可能是
<user id=‘feiddd‘ name_CN="王" name_EN="ddddf"
name_RU=‘這里是俄文‘ 。。。。等等的信息 />
在中文上就寫一個顯示中文的xsl,
在英文上就寫一個顯示英文信息的xsl。
如果不用這種技術(shù),將會很麻煩的。
哪個xml解析器好用呢?最好通用一些的
我覺得配置文件用xml 不如ini, 我以前有兩個應(yīng)用程序都是用xml保存配置信息,后來都改成ini
xml修改起來不太直觀
內(nèi)容管理?我看不出來有什么必要用xml.
我所做的程序都用數(shù)據(jù)庫保存數(shù)據(jù),送到客戶邊都是HTML,用jsp 和 php ,asp 之類的程序。
如果 Dreamweaver 支持直接“所見即所得”地編輯,我倒可以考慮用xml .現(xiàn)階段不考慮用xml
難的一見的好論題?。?!是這幾個月來,論壇中最好的,我對你們的努力表示感謝
怎么沒人續(xù)了
還有一個不知道是不是優(yōu)點(diǎn)或者缺點(diǎn)。
它把服務(wù)器端的壓力轉(zhuǎn)移到客戶端了。
"它把服務(wù)器端的壓力轉(zhuǎn)移到客戶端"我認(rèn)為是好事。
XML 就是運(yùn)行效率慢了些。
你要知道目前有很多人向我抱怨打開貼子的速度太慢了。
當(dāng)然這跟目前對ie5.5以上,以下版本的機(jī)制處理不一樣也有關(guān),但如果貼子回復(fù)過長,就是ie6.0也很慢
very good
收藏
UP一下,呵呵
UP
xml 解析起來好像是有點(diǎn)慢,不過以后肯定會有改變的,
哈哈,這是一好論文 ,thanks
UP
什么UP,UP,UP呀?同志們,發(fā)點(diǎn)有意義的回復(fù)吧。
我個人認(rèn)為這個論題十分有意義,自從XML發(fā)布以來,對于論述它的應(yīng)用文章不多,而且不夠深入(也許有些我沒看到,也不可能全部都看到),所以XML在系統(tǒng)設(shè)計(jì)方面,得不到快速的應(yīng)用與發(fā)展,請CSDN的各位高手多拋磚引玉,討論研究一下XML在實(shí)際中的應(yīng)用問題,XML絕對是以后網(wǎng)絡(luò)世界的應(yīng)用大趨勢。
再來!
收藏
我做了N年的編程,綜觀整個計(jì)算機(jī)軟件幾十年的發(fā)展,只有3種技術(shù)是驚天動地的:
(1) OOP
(2) Visubal Basic (世界上最優(yōu)秀的可視化編程語言,程序員對VB不精通是一種莫大的悲哀)
(3) XML
一個計(jì)算機(jī)人員如果把精力過多地放在了解不同的數(shù)據(jù)格式,學(xué)習(xí)不同的編程語言,使用不同的操作系統(tǒng),炫耀不同的小技巧,鉆研不同的硬件接口,分析不同的通訊協(xié)議,那么,他必將一事無成。因?yàn)檫@些所謂的技術(shù)只是今后軟件工人或機(jī)器人就可以完成的一些機(jī)械的,重復(fù)的,簡單的工作。
我,ERPBug,世界頂級編程大師,曾經(jīng)說過一句名言:“編程就是對字符串的操作”,而XML正是對我所說的話的一種驗(yàn)證。當(dāng)一個程序員真正體會到我這句話時(shí),他就可以稱得上是一個高手了。
當(dāng)你真正知道編程是多么的簡單時(shí),你才能集中精力構(gòu)思數(shù)據(jù)模型和軟件結(jié)構(gòu),你才能把你的創(chuàng)造性發(fā)揮淋淋盡至。一個程序員的生命就在于創(chuàng)新。
“可視化編程”是OOP發(fā)展的必然結(jié)果,“字符串”是OOP的一個縮影。OOP是細(xì)胞,分子的數(shù)學(xué)符號。
XML的編程就是對字符串的編程,只有受過良好的正規(guī)訓(xùn)練的人,即,精通數(shù)據(jù)結(jié)構(gòu),精通編譯原理,具有很強(qiáng)的數(shù)學(xué)邏輯思維能力的人,才知道怎樣進(jìn)行“字符串編程”
只有知道“字符串編程”的人才知道怎樣開發(fā)操作系統(tǒng),怎樣開發(fā)數(shù)據(jù)庫系統(tǒng),怎樣開發(fā)編程語言,怎樣開發(fā)高性能的應(yīng)用軟件,怎樣發(fā)揮中國人的聰明才智。
XML的靈活性,XML的擴(kuò)充性,XML的簡單性,XML的“字符串”性,正是XML的精華所在。
去體會XML吧,用心去體會?。?!
最科學(xué)的東西,一定是最簡單的。
世人皆醉,唯我獨(dú)醒,我是一個智者,但我已經(jīng)老了。
寫于 2002/04/11 深夜
呵呵
我才看了xml一點(diǎn)點(diǎn)皮毛,我想問一下,xml用文本傳輸數(shù)據(jù),怎么對數(shù)據(jù)進(jìn)行加密~!
你的體會應(yīng)該是那些發(fā)明這些技術(shù)的人的感慨吧:)
可能你終于理解了人家的思維了
然而當(dāng)你明白的時(shí)候,可能你還不算智者,這只是別人的思維。你的呢?期待...
大哥,你就是神,你是雅典娜,你是圣母馬力亞,你是耶蘇,你是宙斯!
反正瀏覽CSDN就經(jīng)常死機(jī),而且是用WIN2K。
即使它有很多好處,單就這一點(diǎn)就會讓人不喜歡,或許等它更成熟些,再來用吧。
To scarab(沒有尾巴的鯊魚):
不好意思,我吹牛吹過頭了。XML重要之處不在于關(guān)于XML的技術(shù),而是XML成為一種“標(biāo)準(zhǔn)”,有了標(biāo)準(zhǔn)之后,我們才能減少很多重復(fù)的,繁瑣的,沒有任何價(jià)值和意義的工作,我們才能抽出時(shí)間來思考,我們才能有我們自己的思想。
我相信我有很多好的思想,但我能把它變成標(biāo)準(zhǔn)嗎?我有很多好的技術(shù),我要費(fèi)多少精力才能把它變成產(chǎn)品?我終于有了我一流的產(chǎn)品,我如何才能把它變成商業(yè)效益。你要知道,在中國,想做一點(diǎn)事情有多么難。
這個社會,腳踏實(shí)地干活的人無法生存,無法立足,坑蒙拐騙的公司生意日漸紅火。有的軟件公司靠“炒作概念”,“銷售思想”就能賺大把的賺錢,而一些小的軟件公司有一流的產(chǎn)品,卻無人問津。再摘抄幾句名言,送給大家:
(1) 國內(nèi)某位大型酒廠的老總曾說過:“只要廣告做的好,我連地上的土都能賣出大價(jià)錢來。
(2) 大唐電訊的老總曾說過:“三流的企業(yè)賣產(chǎn)品,二流的企業(yè)賣技術(shù),一流的企業(yè)賣標(biāo)準(zhǔn)(賣概念)
另:我吹牛的目的,無非想激一激中國的程序員,希望大家不要見怪。我對中國的程序員真是“恨鐵不成鋼”。
真希望能經(jīng)常與大家一起神侃,但還得去為生活奔波啊。
呵呵
相信自己
“編程就是對字符串的操作”
?????
to ERPBug:
我的偶像終于出現(xiàn)了!?。。?!
只不過-----------
你的想法是否有點(diǎn)過于悲觀呢?
1) 國內(nèi)某位大型酒廠的老總曾說過:“只要廣告做的好,我連地上的土都能賣出大價(jià)錢來。
(2) 大唐電訊的老總曾說過:“三流的企業(yè)賣產(chǎn)品,二流的企業(yè)賣技術(shù),一流的企業(yè)賣標(biāo)準(zhǔn)(賣概念)
這兩句說的對,確實(shí)如此呀?。。?br>
看完!走!
我們公司既象二流企業(yè),又象三流企業(yè),又還跟一流企業(yè)沾點(diǎn)邊,這算什么企業(yè)???:(
至于XML的作用,ChinaOK(藍(lán)蝶)已經(jīng)講得和好了。
我本人并不太關(guān)心XML的具體技術(shù),我只需要XML的設(shè)計(jì)思想,用來補(bǔ)充我自己的東西。
我對XML并不太了解,但當(dāng)我第一次看到XML的格式的時(shí)候,我就知道它是我要找的東西,我也更加堅(jiān)信我以前的設(shè)計(jì)思想都是正確的。
有意義
xml的偉大意義在于:它使數(shù)據(jù)標(biāo)準(zhǔn)化成為了可能。
計(jì)算機(jī)的實(shí)質(zhì)就是數(shù)據(jù)處理機(jī)。不管是什末計(jì)算機(jī),它們都在程序的控制下重復(fù)的做著三件事,數(shù)據(jù)接收,數(shù)據(jù)存儲,數(shù)據(jù)輸出。
從宏觀上看,這些程序只有一個區(qū)別,那就是數(shù)據(jù)描述的標(biāo)準(zhǔn)不同。應(yīng)用程序除了流程控制外,所做的另一件事就是數(shù)據(jù)解析。由于沒有通用的數(shù)據(jù)描述標(biāo)準(zhǔn),所以,不同的數(shù)據(jù)定義需要定義者提供專門的程序進(jìn)行處理。
在以前,運(yùn)行環(huán)境以單機(jī)或局域網(wǎng)為主,還好控制。但進(jìn)入互聯(lián)網(wǎng)時(shí)代,情況就不同了。企業(yè)之間面臨著巨大的數(shù)據(jù)交換的需求,但誰也不能要求對方采用自己定義的數(shù)據(jù)標(biāo)準(zhǔn),處理的方法有兩個:一是在處理對方數(shù)據(jù)前,將其轉(zhuǎn)換為與己方標(biāo)準(zhǔn)兼容的數(shù)據(jù)格式;另一種,則是定義一個數(shù)據(jù)表達(dá)標(biāo)準(zhǔn),大家的數(shù)據(jù)都準(zhǔn)循該標(biāo)準(zhǔn)。這樣,各方的程序都可以直接處理這些數(shù)據(jù)??梢钥闯觯谝环N方法的效率低,而且數(shù)據(jù)轉(zhuǎn)換的兼容性差,而后者則沒有這些問題。XML就是在這種需求下出現(xiàn)的,它是一種元數(shù)據(jù)描述語言,人們可以用它定義一套數(shù)據(jù)表達(dá)標(biāo)準(zhǔn),然后在此標(biāo)準(zhǔn)下提供數(shù)據(jù)。
1,在瀏覽這張XML頁面時(shí),確實(shí)要消耗大量的內(nèi)存,我打了好幾次,都是IE死掉,
想上面那位老兄說的死機(jī)是可能的
2
,"這個社會,腳踏實(shí)地干活的人無法生存,無法立足,坑蒙拐騙的公司生意日漸紅火。有的軟件公司靠“炒作概念”,“銷售思想”就能賺大把的賺錢,而一些小的軟件公司有一流的產(chǎn)品,卻無人問津。"
我也有同感
3
請教,在BROWSER里如何把XML數(shù)據(jù)傳給WEB服務(wù)器,謝謝
1. 你可以使用我的這個小程序來瀏覽csdn
2. 的確如此。
3. 可以用XMLHTTP來發(fā)送
================================================================
CSDN 論壇助手 Ver 1.0 B0402提供下載。 改進(jìn)了很多,功能完備!
★ 瀏覽帖子速度極快![建議系統(tǒng)使用ie5.5以上]。
★ 多種帖子實(shí)現(xiàn)界面。
★ 保存帖子到本地[html格式]
★ 監(jiān)視您關(guān)注帖子的回復(fù)更新。
★ 可以直接發(fā)貼、回復(fù)帖子
★ 采用XML接口,可以一次性顯示4頁帖子,同時(shí)支持自定義每次顯示帖子數(shù)量。
可以瀏覽歷史記錄!
★ 支持在線檢測程序升級情況,可及時(shí)獲得程序更新的信息。
★★ 簽名 ●
可以在您的每個帖子的后面自動加上一個自己設(shè)計(jì)的簽名喲。
Http://www.ChinaOK.net/csdn/csdn.zip
Http://www.ChinaOK.net/csdn/csdn.rar
本簽名由 CSDN 論壇助手自動添加!
XML方是,我認(rèn)為千萬不要用在程序內(nèi)部,太浪費(fèi)資源了!XML本身就是為了和外界進(jìn)行接口的。我們公司的一些項(xiàng)目,就走入了這個誤區(qū):什么參數(shù)交換、傳遞,都是用XML.faint!在COM+方式下,搞的復(fù)雜無比!??!
xml是種簡單易學(xué)的標(biāo)準(zhǔn),但XSL就沒有這么簡單
我想知道如何在寫XML的時(shí)候分頁?比如是CSDN的文章就沒有分頁?
還有CSDN 怎么沒有提供回復(fù)者對自己回復(fù)文章的刪除功能??
XML的確是就劃時(shí)代,用字符文本的辦法解決了數(shù)據(jù)的格式
gz
看了以上高見,有些說得有理,但有些就不大明白了。比如,我現(xiàn)在有一個系統(tǒng),可能是MSSQLSERVER做數(shù)據(jù)庫,也有可能是用ORACLE或SYBASE之類的做數(shù)據(jù)庫。前端用的是PB做的C/S程序。這時(shí)我想將之改成B/S ,這時(shí)XML能做什么呢?我的資料存在DATABASE中,要說數(shù)據(jù)格式,恐怕XML是沒法與之相比的。再說,現(xiàn)在的資料庫越來越大,幾百M甚至上G的數(shù)據(jù)庫并不是稀奇事,想象一下,這些資料不是存放在數(shù)據(jù)庫中而是用XML文件存放,是否會好恐怖?而又假如,這些資料原是存放在數(shù)據(jù)庫中,然后后你要將之轉(zhuǎn)成XML,又是多么恐怖的一件事?
不過也許我是因?yàn)閷Γ兀停滩涣私獠胚@樣說。 但我曾買了本機(jī)械工業(yè)出版社的≤XML技術(shù)內(nèi)幕≥,從頭翻到尾,還是搞不清XML有什么用。呵呵,我太笨了
XML最好不要解析,而只是用適當(dāng)?shù)臄?shù)據(jù)生成,這樣的方向最快
XML分頁是可以的在樣例中有一些函數(shù),可以的
但是很多函數(shù)有爭議,不統(tǒng)一,兼容性不好
說白了就兩種
數(shù)據(jù)交換和數(shù)據(jù)存儲。
xml到底好不好?我想問問csdn就可以得到一些答案,改用xml以后對他們的整個網(wǎng)站建設(shè)維護(hù)是不是起到了事半功倍的效果,好壞就可見其一斑。xml是標(biāo)準(zhǔn)?那么是不是以后我們就沒有所謂的txt,jpg,doc等等的類型文件?通通.xml,然后通通xml解析?只是好奇,呵呵。我現(xiàn)在想保存本頁,下載了xml,可是沒有xsl就看不到頁面,是不是ie6就可以做到保存成html?是不是這就是所謂的把問題拋給了客戶端?html變成了xml和xsl兩,總覺得有點(diǎn)怪怪的,數(shù)據(jù)和格式(處理)分離真很‘爽’嗎??
peifu, peifu
XML不是萬能的,它有它的適用返回。
它是計(jì)算機(jī)發(fā)展到現(xiàn)在階段的產(chǎn)物,它的思想也沒有什么特別,只不過是它成為標(biāo)準(zhǔn)而已,所以才重要。
話又回到“他是計(jì)算機(jī)發(fā)展到現(xiàn)在階段的產(chǎn)物”,如果在286時(shí)代,絕對是即時(shí)有XML也不會通用。因?yàn)闆]有這么多空間、內(nèi)存。XML使用的方法太笨。但它的思想是很好的--一種方便,明晰的表現(xiàn)數(shù)據(jù)和之間關(guān)系。(我想)
XML值得去學(xué)(我以為)
我始終在希望,標(biāo)準(zhǔn)與標(biāo)準(zhǔn)之間應(yīng)該能溝通才是。
XML只是一種數(shù)據(jù)格式
但是這種格式能擺脫運(yùn)作平臺的影響
我用XML是把它當(dāng)作數(shù)據(jù)交換的標(biāo)準(zhǔn)格式
現(xiàn)在國內(nèi)的XML標(biāo)準(zhǔn)還很少
正需要大家共同努力
呵呵,我是一個低手,只看了一點(diǎn)點(diǎn)
請問一下xml對于數(shù)據(jù)的安全性?
歡迎各位高手赤腳
收藏
收藏
shou chang
mark!
前面有幾位伙計(jì)談到了XML的安全性(尤其在EDI中),我也想知道。不知那位可以告知。
轉(zhuǎn)貼neilchen(我菜)的文章:
啟用 XML 安全性
XML 加密和 XML 簽名簡介
XML 是因特網(wǎng)以及近來 Web 服務(wù)持續(xù)增長和開發(fā)的主要支持者。但是,在實(shí)現(xiàn) XML 語言的全部能力之前,還有許多與安全性相關(guān)的工作要做。目前,加密整個 XML 文檔、測試其完整性和確認(rèn)其發(fā)送方的可靠性是一個簡單的過程。但是,越來越有必要對文檔的某些部分也使用這些功能,以便以任意順序加密和認(rèn)證以及涉及不同用戶或發(fā)起方。目前,在與 XML 相關(guān)的安全性領(lǐng)域方面開發(fā)規(guī)范的最重要部分是 XML 加密、XML 簽名、XACL、SAML 和 XKMS。本文介紹前兩個。
簡介
XML 已經(jīng)成為一種用于在因特網(wǎng)上交換數(shù)據(jù)的有價(jià)值機(jī)制。SOAP,這種發(fā)送 XML 消息的方式,促使進(jìn)程以一種前所未有的方式相互通信,而 UDDI 看起來正在快速成為整合 Web 服務(wù)的供應(yīng)商和用戶的標(biāo)準(zhǔn);服務(wù)本身是 XML 以 WSDL (即“Web 服務(wù)描述語言”)形式描述的。如果沒有 XML,將不可能有這種靈活性和能力,并且,正如許多人所說的,將有必要發(fā)明元語言。
安全性領(lǐng)域是另一個快速增長的領(lǐng)域。在不同團(tuán)體之間建立信任的傳統(tǒng)方法在公共因特網(wǎng)上已不合適,實(shí)際上,在大型 LAN 和 WAN 上也不合適。在這些情況下,基于非對稱密碼術(shù)的信任機(jī)制可能會非常有用,但實(shí)際上,部署和密鑰管理的方便性、互操作性的范圍和提供的安全性遠(yuǎn)不如各種的“公鑰基礎(chǔ)設(shè)施”(Public Key Infrastructures (PKI))的熱情的供應(yīng)商曾讓我們相信的那樣。處理層次數(shù)據(jù)結(jié)構(gòu),以及帶有機(jī)密、訪問權(quán)限或完整性等不同需求的數(shù)據(jù)的子集特別困難。另外,具有不同于 XML 文檔的現(xiàn)今標(biāo)準(zhǔn)安全性控制的應(yīng)用程序一點(diǎn)都不簡單。
目前,一些團(tuán)體正積極投身于檢查這些問題和開發(fā)標(biāo)準(zhǔn)的活動中。其中主要的相關(guān)開發(fā)是 XML 加密和相關(guān)的 XML 簽名、“可擴(kuò)展訪問控制語言(XACL)”和相關(guān)的“安全性斷言標(biāo)記語言(SAML — 以前是互為競爭對手的 AuthML 和 S2ML 的結(jié)合)”。所有這些都由 OASIS 和“XML 密鑰管理規(guī)范(XKMS)”驅(qū)動。本文將 介紹 XML 加密和 XML 簽名。
XML 加密和 XML 簽名
象其它任何文檔一樣,可以將 XML 文檔整篇加密,然后安全地發(fā)送給一個或多個接收方。例如,這是 SSL 或 TLS 的常見功能,但是更令人感興趣的是如何對同一文檔的不同部分進(jìn)行不同處理的情況。XML 的一個有價(jià)值的好處是可以將一整篇 XML作為一個操作發(fā)送,然后在本地保存,從而減少了網(wǎng)絡(luò)通信量。但是,這就帶來了一個問題:如何控制對不同元素組的授權(quán)查看。商家可能需要知道客戶的名稱和地址,但是,無需知道任何正在使用的信用卡的各種詳細(xì)信息,就像銀行不需要知道購買貨物的詳細(xì)信息一樣。可能需要防止研究人員看到有關(guān)個人醫(yī)療記錄的詳細(xì)信息,而管理人員可能正好需要那些詳細(xì)信息,但是應(yīng)該防止他們查看醫(yī)療歷史;而醫(yī)生或護(hù)士可能需要醫(yī)療詳細(xì)信息和一些(但不是全部)個人資料。
密碼術(shù)現(xiàn)在所做的遠(yuǎn)遠(yuǎn)不止隱藏信息。消息摘要確定文本完整性,數(shù)字簽名支持發(fā)送方認(rèn)證,相關(guān)的機(jī)制用于確保任何一方日后無法拒絕有效事務(wù)。這些都是遠(yuǎn)程交易必不可少的元素,現(xiàn)在,用于處理整個文檔的機(jī)制開發(fā)得相當(dāng)好。
有了一般的加密,對 XML 文檔整體進(jìn)行數(shù)字化簽名不是問題。然而,當(dāng)需要對文檔的不同部分(可能由不同的人)簽名,以及需要與選擇性的方法一起來這樣做時(shí),就會出現(xiàn)困難。也許不可能或者不值得強(qiáng)制不同部分的加密工作由特定人員按特定順序進(jìn)行,然而成功地處理文檔的不同部分將取決于是否知道這點(diǎn)。此外,由于數(shù)字簽名斷言已經(jīng)使用了特定專用密鑰來認(rèn)證,所以要小心簽名人是以純文本形式查看文檔項(xiàng)的,這可能意味著對由于其它原因而加密的部分內(nèi)容進(jìn)行了解密。在另一種情況下,作為更大集合中的一部分,可能對已經(jīng)加密過的數(shù)據(jù)進(jìn)行進(jìn)一步加密。在牽涉單一 XML 文檔(可能由一些不同的應(yīng)用程序和不同的用戶處理在工作流序列中使用的 Web 表單或一系列數(shù)據(jù))的事務(wù)集中考慮的不同可能性越多,就越可能看到巨大的潛在復(fù)雜性。
還有其它問題。XML 語言的強(qiáng)項(xiàng)之一是,搜索是明確的,無二義性的:DTD 或 Schema 提供了相關(guān)語法的信息。如果將包括標(biāo)記在內(nèi)的文檔的一部分作為整體加密,就會喪失搜索與那些標(biāo)記相關(guān)的數(shù)據(jù)的能力。此外,如果標(biāo)記本身被加密,那么一旦泄漏,它們將被利用對采用的密碼術(shù)進(jìn)行純文本攻擊。
這些是工作組正在考慮的一些方面。
XML 加密示例
XML 加密語法的核心元素是 EncryptedData 元素,該元素與 EncryptedKey 元素一起用來將加密密鑰從發(fā)起方傳送到已知的接收方,EncryptedData 是從 EncryptedType 抽象類型派生的。要加密的數(shù)據(jù)可以是任意數(shù)據(jù)、XML 文檔、XML 元素或 XML 元素內(nèi)容;加密數(shù)據(jù)的結(jié)果是一個包含或引用密碼數(shù)據(jù)的 XML 加密元素。當(dāng)加密元素或元素內(nèi)容時(shí),EncryptedData 元素替換 XML 文檔加密版本中的該元素或內(nèi)容。當(dāng)加密的是任意數(shù)據(jù)時(shí),EncryptedData 元素可能成為新 XML 文檔的根,或者可能成為一個子代元素。當(dāng)加密整個 XML 文檔時(shí),EncryptedData 元素可能成為新文檔的根。此外,EncryptedData 不能是另一個 EncryptedData 元素的父代或子代元素,但是實(shí)際加密的數(shù)據(jù)可以是包括現(xiàn)有 EncryptedData 或 EncryptedKey 元素的任何內(nèi)容。
加密工作草案給出了一些示例來演示:加密的顆粒度如何根據(jù)要求的不同而不同,以及可能出現(xiàn)什么結(jié)果。清單 1 中的代碼片斷顯示了帶有信用卡和其它個人信息的未加密 XML 文檔。在某些情況下(例如,隱藏支付機(jī)制的信息),可能希望加密除客戶名稱以外的所有信息,清單 2 的代碼片斷演示了如何這樣做。
轉(zhuǎn)貼neilchen(我菜)的文章:
清單 1. 顯示 John Smith 的銀行帳戶、5000 美元限額、卡號和有效期的的信息
<?xml version=‘1.0‘?>
<PaymentInfo xmlns=‘http://example.org/paymentv2‘>
<Name>John Smith<Name/>
<CreditCard Limit=‘5,000‘ Currency=‘USD‘>
<Number>4019 2445 0277 5567</Number>
<Issuer>Bank of the Internet</Issuer>
<Expiration>04/02</Expiration>
</CreditCard>
</PaymentInfo>
清單 2. 除名稱之外全部被加密的加密文檔
<?xml version=‘1.0‘?>
<PaymentInfo xmlns=‘http://example.org/paymentv2‘>
<Name>John Smith<Name/>
<EncryptedData Type=‘http://www.w3.org/2001/04/xmlenc#Element‘
xmlns=‘http://www.w3.org/2001/04/xmlenc#‘>
<CipherData><CipherValue>A23B45C56</CipherValue></CipherData>
</EncryptedData>
</PaymentInfo>
但是,在其它情況下,可能只需要隱藏一些敏感內(nèi)容 — 可能來自商家或其它第三方 — 清單 3 演示了這點(diǎn)。(請注意,顯示了與加密內(nèi)容相關(guān)的標(biāo)記名。)
清單 3. 只隱藏了信用卡號的加密文檔
<?xml version=‘1.0‘?>
<PaymentInfo xmlns=‘http://example.org/paymentv2‘>
<Name>John Smith<Name/>
<CreditCard Limit=‘5,000‘ Currency=‘USD‘>
<Number>
<EncryptedData xmlns=‘http://www.w3.org/2001/04/xmlenc#‘
Type=‘http://www.w3.org/2001/04/xmlenc#Content‘>
<CipherData><CipherValue>A23B45C56</CipherValue>
</CipherData>
</EncryptedData>
</Number>
<Issuer>Bank of the Internet</Issuer>
<Expiration>04/02</Expiration>
</CreditCard>
</PaymentInfo>
可能還有必要加密文檔中的所有信息,清單 4 演示了這點(diǎn)。
清單 4. 隱藏了全部內(nèi)容的加密文檔
<?xml version=‘1.0‘?>
<EncryptedData xmlns=‘http://www.w3.org/2001/04/xmlenc#‘
Type=‘http://www.isi.edu/in-notes/iana/assignments/media-types/text/xml‘>
<CipherData><CipherValue>A23B45C56</CipherValue></CipherData>
</EncryptedData>
CipherData 可以封裝,也可以引用原始加密數(shù)據(jù)。在第一種情況下,CipherValue 元素的內(nèi)容顯示原始數(shù)據(jù),而在第二種情況,使用 CipherReference 元素,這包括了一個指向加密數(shù)據(jù)位置的 URI。
轉(zhuǎn)貼neilchen(我菜)的文章:
規(guī)范的 XML
對應(yīng)用了密碼散列算法的消息進(jìn)行最輕微的更改也會產(chǎn)生不同的值。這為消息完整性方面提供了信任,并適于通常用法,但是也引入了進(jìn)一步的復(fù)雜性 — 兩個 XML 文檔雖然在邏輯上相等,但可能在確切文本比較中不同。象行定界符、空標(biāo)記、在屬性中使用十六進(jìn)制而不是名稱以及在特定情況下存在注釋或注釋變體這樣的事情都可以成為文檔的邏輯結(jié)構(gòu)不受影響而實(shí)際彼此不同的實(shí)例。規(guī)范的 XML 規(guī)范描述了一種生成文檔的物理表示(也成為范式)的方法,該范式解釋允許的變體,以便如果兩個文檔具有同一范式,則認(rèn)為兩個文檔在給定應(yīng)用程序上下文中是邏輯相等的。
對于加密、特別是數(shù)字簽名來說,這尤為重要,因?yàn)楹苊黠@,邏輯上相同的文本變體不應(yīng)該表示文檔的完整性及其發(fā)送方的認(rèn)證是可疑的。用不同工具(譬如,解析器)生成不同文本(并因而生成不同消息摘要)進(jìn)行處理時(shí)也可能發(fā)生這樣的事。因此,在生成簽名和驗(yàn)證計(jì)算期間,應(yīng)該在范式上進(jìn)行消息摘要。如果摘要匹配,這將確定:即使文本形式可能不同,它們在其上計(jì)算的范式也匹配。
XML 簽名示例
可以將 XML 簽名應(yīng)用到任意數(shù)據(jù)內(nèi)容。那些應(yīng)用到相同 XML 文檔中數(shù)據(jù)的簽名稱為封裝或被封裝的簽名,而那些數(shù)據(jù)在簽名元素外部的簽名稱為分離簽名。清單 5 取自簽名候選推薦文檔,它是一個簡單分離簽名的實(shí)例。
清單 5. 一個簡單分離簽名的示例
[s01] <Signature Id="MyFirstSignature"
xmlns="http://www.w3.org/2000/09/xmldsig#">
[s02] <SignedInfo>
[s03] <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/
REC-xml-c14n-20010315"/>
[s04] <SignatureMethod Algorithm="http://www.w3.org/2000/09/
xmldsig#dsa-sha1"/>
[s05] <Reference URI="http://www.w3.org/TR/2000/REC-xhtml1-20000126/">
[s06] <Transforms>
[s07] <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-
20010315"/>
[s08] </Transforms>
[s09] <DigestMethod Algorithm="http://www.w3.org/2000/09/
xmldsig#sha1"/>
[s10] <DigestValue>j6lwx3rvEPO0vKtMup4NbeVu8nk=</DigestValue>
[s11] </Reference>
[s12] </SignedInfo>
[s13] <SignatureValue>MC0CFFrVLtRlk=...</SignatureValue>
[s14] <KeyInfo>
[s15a] <KeyValue>
[s15b] <DSAKeyValue>
[s15c] <p>...</p><Q>...</Q><G>...</G><Y>...</Y>
[s15d] </DSAKeyValue>
[s15e] </KeyValue>
[s16] </KeyInfo>
[s17] </Signature>
實(shí)際簽名的信息是位于 s02 行和 s12 行之間,即 SignedInfo 元素。在簽名的部分中包含用于計(jì)算 SignatureValue 元素的算法的引用,而那個元素本身位于簽名部分之外(在 s13 行上)。s04 行上的 SignatureMethod 引用的是將規(guī)范的 SignedInfo 轉(zhuǎn)換成 SignatureValue 所用的算法。它是密鑰相關(guān)的算法和摘要算法(在這里是 DSA 和 SHA-1)的組合,可能還具有象填充這樣的操作。KeyInfo 元素(在這里位于 s14 行和 s16 行之間 — 該元素是可選的)指出用來驗(yàn)證簽名的密鑰。
轉(zhuǎn)換
正如前面所提到的,加密、簽名、修改和可能進(jìn)行的更多簽名所發(fā)生的順序有很多種可能性。用戶可能需要向已經(jīng)部分加密或部分簽名的表單字段中輸入更多數(shù)據(jù),并且需要能夠在不妨礙以后的驗(yàn)證和解密的前提下這樣做。為解決這種情況,W3C 最近發(fā)布了一個有關(guān) XML 簽名的解密轉(zhuǎn)換工作草案。(請參閱參考資料。)
下面這個示例摘自那個文檔,它演示了如何建議文檔接收方采用正確的解密和簽名驗(yàn)證順序。第一個代碼段顯示了要簽名的文檔部分 — order 元素;其中,第 7 行到第 11 行的 cardinfo 元素是關(guān)于個人和財(cái)務(wù)方面的詳細(xì)信息,它是純文本,但也存在一些加密數(shù)據(jù)(第 12 行)。
清單 6. XML 文檔中的 order 元素
[01] <order Id="order">
[02] <item>
[03] <title>XML and Java</title>
[04] <price>100.0</price>
[05] <quantity>1</quantity>
[06] </item>
[07] <cardinfo>
[08] <name>Your Name</name>
[09] <expiration>04/2002</expiration>
[10] <number>5283 8304 6232 0010</number>
[11] </cardinfo>
[12] <EncryptedData Id="enc1"xmlns="http://www.w3.org/
2001/04/xmlenc#">...</EncryptedData>
[13] </order>
清單 7. 經(jīng)過簽名和進(jìn)一步加密、且現(xiàn)在顯示轉(zhuǎn)換信息的 order 文檔
[01] <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
[02] <SignedInfo>
[03] ...
[04] <Reference URI="#order">
[05] <Transforms>
[06] <Transform Algorithm="http://www.w3.org/2001/04/
xmlenc#decryption">
[07] <DataReference URI="#enc1"
xmlns="http://www.w3.org/2001/04/xmlenc#"/>
[08] </Transform>
[09] <Transform Algorithm="http://www.w3.org/TR/2000/
CR-xml-c14n-20001026"/>
[10] </Transforms>
[11] ...
[12] </Reference>
[13] </SignedInfo>
[14] <SignatureValue>...</SignatureValue>
[15] <Object>
[16] <order Id="order">
[17] <item>
[18] <title>XML and Java</title>
[19] <price>100.0</price>
[20] <quantity>1</quantity>
[21] </item>
[22] <EncryptedData Id="enc2"
xmlns="http://www.w3.org/2001/04/xmlenc#">...</EncryptedData>
[23] <EncryptedData Id="enc1"
xmlns="http://www.w3.org/2001/04/xmlenc#">...</EncryptedData>
[24] </order>
[25] </Object>
[26] </Signature>
第 1 行到 第 26 行的 Signature 元素現(xiàn)在包含前面的 order 元素(位于第 16 行到第 24 行),和以前的加密純文本 cardinfo(顯示在第 22 行這一行中)。有兩個轉(zhuǎn)換引用:解密(第 6 行到第 8 行)和規(guī)范化(第 9 行)。解密轉(zhuǎn)換指示簽名驗(yàn)證器解密除 DataRef 元素中第 7 行指定的數(shù)據(jù)之外的所有加密數(shù)據(jù)。解密了第 22 行中的 EncryptedData 元素之后,規(guī)范化 order 元素并且恰當(dāng)?shù)仳?yàn)證簽名。
其它相關(guān)語言和規(guī)范
隱藏 XML 文檔中的敏感信息、建立完整性以及認(rèn)證這些文檔的不同部分的來源主要通過遵循加密和簽名規(guī)范中列出的步驟來處理的,在引用的 W3C 草案中描述該規(guī)范(請參閱參考資料)。另外,還有其它緊密相關(guān)的領(lǐng)域,例如認(rèn)證用戶或系統(tǒng)、標(biāo)識授權(quán)級別和管理密鑰,所有這些都與 XML 安全性相關(guān)。
SAML 是一個由 OASIS 驅(qū)動的模型,它嘗試融合相互競爭的 AuthML 和 S2ML 規(guī)范,使認(rèn)證和授權(quán)信息的互換便于進(jìn)行?!翱蓴U(kuò)展訪問控制標(biāo)記語言”是與 SAML 緊密相關(guān)的,但它更著重于特定 XML 文檔的上下文中的面向主題特權(quán)對象的安全性模型,它也由 OASIS 指導(dǎo),又是被稱為 XACML 或 XACL(即使在同一些文檔中)。通過用 XACL 編寫規(guī)則,策略制訂者可以定義,對于特定 XML 文檔和前面所述的情況中的相關(guān)事情,由誰來實(shí)施哪些訪問特權(quán)。
W3C 委員會現(xiàn)在正在考慮 XKMS,它打算建立一個位于 XML 簽名標(biāo)準(zhǔn)頂部的密鑰管理協(xié)議。有了 SAML、XACL 和其它倡議,XKMS 是構(gòu)成應(yīng)用于 XML 文檔的安全性這個大框架中的重要元素。有了它,可以立桿見影地極大簡化認(rèn)證和簽名密鑰的管理;它通過將數(shù)字證書處理功能、撤回狀態(tài)檢查和認(rèn)證路徑位置和驗(yàn)證從所涉及的應(yīng)用程序分離來做到這點(diǎn) — 例如,通過把密鑰管理委托給因特網(wǎng) Web 服務(wù)。
在滿足使用的便利性、可靠性和強(qiáng)健性方面,XML 安全性還有很多路要走。但是目前,正在取得良好的進(jìn)展。
參考資料
• Jayanthi Suryanarayana 編寫的 developerWorks 教程 SOAP 消息的數(shù)字簽名解釋了如何因安全性考慮而對您的 SOAP 消息進(jìn)行數(shù)字簽名和加密。
• Doug Tidwell 著的“XML 安全性套件”:增加電子商務(wù)的安全性演示了一些 Web 安全性的基礎(chǔ),描述了“XML 安全性套件”的組件并給出了一些示例來演示“XML 安全性套件”中的技術(shù)如何增加 Web 貿(mào)易的安全性。
• OASIS 聯(lián)盟站點(diǎn)包括 The XML Cover Pages: XML and Encryption、Robin Cover 的有關(guān)這些活動的活動目錄和有關(guān)出版物。該站點(diǎn)還有一份詳細(xì)說明“安全性斷言標(biāo)記語言(SAML)”的草案文檔。
• W3C 工作草案 XML Encryption Requirements 列出了“XML 加密”的設(shè)計(jì)原則、范圍和需求。它包括與加密語法、數(shù)據(jù)模型、格式、密碼處理以及外部要求和協(xié)調(diào)相關(guān)的要求。
• XML Encryption Syntax and Processing 詳細(xì)說明了加密數(shù)據(jù)并以 XML 顯示結(jié)果的過程。數(shù)據(jù)可以是任意數(shù)據(jù)(包括一份 XML 文檔)、一個 XML 元素或 XML 元素內(nèi)容。
• XML-Signature Requirements 列出了設(shè)計(jì)“XML 數(shù)字簽名”規(guī)范的設(shè)計(jì)原則、范圍和要求。它包括與簽名語法、數(shù)據(jù)模型、格式、密碼處理以及外
收藏此版面,沒辦法,明天要考試了,大后天再慢慢體會。
to ErpBug
大蝦: 我對你的佩服簡直如滔滔江水延綿不決...
“一個計(jì)算機(jī)人員如果把精力過多地放在了解不同的數(shù)據(jù)格式,學(xué)習(xí)不同的編程語言,使用不同的操作系統(tǒng),炫耀不同的小技巧,鉆研不同的硬件接口,分析不同的通訊協(xié)議,那么,他必將一事無成。因?yàn)檫@些所謂的技術(shù)只是今后軟件工人或機(jī)器人就可以完成的一些機(jī)械的,重復(fù)的,簡單的工作。”
就我個人粗淺的學(xué)識我也能體會到這句話的好來。太多的開發(fā)人員把精力過分投入到一些小技巧的鉆研上,進(jìn)而沉醉于這樣的成就并且志得意滿;他們津津樂道于什么什么語言速度更快,或者因?yàn)閿?shù)據(jù)庫表中增加了一列一個字節(jié)長度的字段而驚呼“浪費(fèi)了存儲空間”;但是如何抽象現(xiàn)實(shí)的業(yè)務(wù)、怎樣的系統(tǒng)框架才更利于未來的擴(kuò)展都被忽視了;在一些人眼里“解決方案”一詞是那么遙遠(yuǎn)而陌生,實(shí)際上呢,用戶需要的是什么? solution,solution還是solution。
申明一點(diǎn),我不是反對在具體技術(shù)或技巧上的鉆研,只是想給那些“唯技術(shù)論”者提提醒,防止撿了芝麻丟西瓜的遺憾。