<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    MDA之路

    MDA,UML,XML,Eclipse及Java相關的Blog
    posts - 53, comments - 494, trackbacks - 0, articles - 2
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    XML的本質(zhì)討論

    Posted on 2005-02-28 11:44 wxb_nudt 閱讀(4620) 評論(14)  編輯  收藏 所屬分類: 技術雜談

    (這里的XML不僅僅指XML腳本語言,還包括XML的一系列技術,包括DTD,XSLT,XML SCHEMA,XPATH,DOM,SAX等等)

    XML的本質(zhì)是什么?這個問題對于很多XML的初學者來說都不容易回答。因為XML涉及的方面太多,有人是為了寫出更漂亮的網(wǎng)頁才從HTML進一步學到XML;有人是為了學JAVA才來了解XML;有人是從數(shù)據(jù)庫到XML;有人是從UMLXML;當然還有一些人是從SOAP或者其他網(wǎng)絡協(xié)議而了解到XML。那么到底如何解釋XML的本質(zhì)呢?

    我認為XML的本質(zhì)是數(shù)據(jù),XML文檔實際上是對數(shù)據(jù)的格式化存儲,而XML的一系列技術都是圍繞著數(shù)據(jù)來發(fā)展的。例如DTDSchema是對數(shù)據(jù)格式的定義和檢驗;XSLT是對數(shù)據(jù)的轉(zhuǎn)換;DOMSAX是對數(shù)據(jù)的提取和操作。

    既然XML只是數(shù)據(jù),而且是用文本形式存儲的數(shù)據(jù),那么為什么不更簡單的用普通文本來存儲數(shù)據(jù)呢?早期的一些程序員確實是這么做的,但是這么做的缺點是對于每一組數(shù)據(jù),都需要專用的數(shù)據(jù)格式定義、檢驗、轉(zhuǎn)換和操作的程序。如果使用XML來存儲數(shù)據(jù),由于XML的一系列技術已經(jīng)對以上的問題提供了工具,我們只需要使用那些技術即可快捷的達到自己的目的。有人可能會說,使用數(shù)據(jù)庫不是更方便么?它也提供了以上的功能。確實如此,但是并不是每個地方都適用數(shù)據(jù)庫的,如果說數(shù)據(jù)庫是大而全的數(shù)據(jù)解決方案的話,XML可以用“舉重若輕,大象無形”來形容,這一點后面再討論。

    XML的本質(zhì)決定了它在網(wǎng)頁制作方面比HTML更具有優(yōu)越性。傳統(tǒng)的網(wǎng)頁包括HTML+CSS,在這種模式中,數(shù)據(jù)和數(shù)據(jù)的顯示特性都包含在HTML中,CSS只是對顯示特性的一種補充;而XML網(wǎng)頁包括XML+XML Schema+XSL,其中XML存儲數(shù)據(jù),XML Schema定義了數(shù)據(jù)的存儲格式,XSL定義了數(shù)據(jù)的顯示特性(其實它定義了如何將XML轉(zhuǎn)換為HTML,實際上就是定義了數(shù)據(jù)的顯示特性)。使用XML制作的網(wǎng)頁將數(shù)據(jù)、數(shù)據(jù)格式和顯示特性清晰的分為三個部分,在添加或者修改網(wǎng)頁的時候可以單獨的修改每個部分,從而得到更好的維護性和更高的制作效率。當然動態(tài)網(wǎng)頁可以由Database+腳本語言(JSPASPPHP+HTML+CSS組成;同樣基于XML的動態(tài)網(wǎng)頁可以由Database+中間程序(提取數(shù)據(jù)庫內(nèi)容形成XML文檔)+XML+XML Schema+XSL組成。基于XML的解決方案同樣保持了層次清晰的優(yōu)點。

    對于XML和數(shù)據(jù)庫的比較,我的上一篇文章中有過討論()。從本質(zhì)上來說,XML和數(shù)據(jù)的本質(zhì)差不多,都是圍繞著數(shù)據(jù)來提供一系列的解決方案,但是它們之間存在幾個顯著的不同:1.XML是輕量級的數(shù)據(jù)解決方案,容易學習,可以用文本編輯器進行編輯,一般的瀏覽器都支持XSLT,適用于數(shù)據(jù)量小的各種環(huán)境;2.XML是完全平臺無關的,不需要依賴于特定的操作系統(tǒng)、瀏覽器或者編程語言,而數(shù)據(jù)庫不是完全平臺無關的;3.XML是基于文本的,適合于網(wǎng)絡傳輸,你不能指望每個EJB的配置文檔都用數(shù)據(jù)庫來表示吧;4.XML和數(shù)據(jù)庫是可以互相結合和轉(zhuǎn)換的。

    對數(shù)據(jù)的不同理解可以將XML應用到不同的方面。你可以這樣理解:XML是數(shù)據(jù)庫中的數(shù)據(jù);Schema是數(shù)據(jù)庫的表;XSL是顯示數(shù)據(jù)的程序;也可以這么理解:XML是網(wǎng)頁素材;Schema是素材的數(shù)據(jù)結構;XSL是素材的顯示特性。同樣,在軟件建模方面,也可以用XML來替代UML。這是基于這么一種理解:Schema代表類圖,它如同UML一樣存儲了類的結構特性;XML代表對象,它存儲了類的實例化對象的屬性數(shù)據(jù);而XSL是對類圖的轉(zhuǎn)換,即MDAModel Driven Architecture,模型驅(qū)動架構)中的提到的模型轉(zhuǎn)換。在UML中沒有模型轉(zhuǎn)換技術,但是一些UML工具提供了代碼生成的功能(例如RationalRose),這中功能可以理解為模型轉(zhuǎn)換的一個特例。因此有人提出了用XSLT做代碼生成的建議,事實上這種代碼生成技術已經(jīng)比較成熟。由于XML Schema并不是天生就用來刻劃類圖的,所以它在類的繼承等方面存在一些不足之處,為了修正這些不足,OMGObject Manage Group,對象管理組)組織提出了XMIXML Metadata InterchangeXML元數(shù)據(jù)交換)標準,用來補充XML Schema在軟件建模方面的不足。現(xiàn)在XMI已經(jīng)變成了各種軟件建模工具的通用存儲方式,可以將不同建模工具建立的模型互相轉(zhuǎn)換。

    總的來說,XML是一種基于文本的、格式化的數(shù)據(jù)存儲技術,它包括一系列的數(shù)據(jù)解決方案,它們是輕量級的、易于學習的、平臺無關的數(shù)據(jù)解決方案。弄清楚了這個概念再去學習XML,也許更有幫助。

    評論

    # re: XML的本質(zhì)討論  回復  更多評論   

    2005-03-13 22:25 by kenko
    總的來說,XML是一種基于本文的、格式化的數(shù)據(jù)存儲技術
    上面是倒數(shù)第二句開頭的一句話
    是不是應該改為"總的來說,XML是一種基于文本的、格式化的數(shù)據(jù)存儲技術"

    # re: XML的本質(zhì)討論  回復  更多評論   

    2005-03-13 22:26 by kenko
    你真的很棒!!!向你學習!

    # re: XML的本質(zhì)討論  回復  更多評論   

    2005-03-14 18:52 by wxb_nudt
    謝謝關注,已經(jīng)修改!

    # re: XML的本質(zhì)討論  回復  更多評論   

    2005-03-28 17:10 by
    十分感謝wxb_nudt ,讓我思路清晰了很多!

    # re: XML的本質(zhì)討論  回復  更多評論   

    2005-07-15 21:32 by 雨雪霏霏
    基于文本的結構化數(shù)據(jù)存儲技術
    沒什么好討論的啦

    # re: XML的本質(zhì)討論  回復  更多評論   

    2005-11-29 11:23 by 綠水
    “XML是一種基于文本的、格式化的數(shù)據(jù)存儲技術。”
    原來XML只是一個數(shù)據(jù)存儲格式。嗯,理解了,一語驚醒夢中人。

    # re: XML的本質(zhì)討論  回復  更多評論   

    2006-05-19 14:18 by robin
    我不是什么高手或權威,不敢說文章的論點是正確的,但至少我現(xiàn)在很贊同你的理解!我也一直在思考XML本質(zhì)的問題,你的文章給了我不少啟示!Thanks!

    # re: XML的本質(zhì)討論  回復  更多評論   

    2006-08-09 20:45 by ww
    拋磚引玉,“xml本質(zhì)”讓原子數(shù)據(jù)用另外一種思維方式得到了更自然的封裝。

    # 樓主對xml的本質(zhì)討論偏頗  回復  更多評論   

    2007-06-28 22:51 by 小于
    樓主對xml的總結性話語算不得錯誤,但起碼是片面的。xml不僅僅是數(shù)據(jù)存儲,數(shù)據(jù)存儲只是它的一個方面,首先第一點:XML最重要的作用是數(shù)據(jù)交換,而不是存儲。樓主應該不需要我解釋數(shù)據(jù)交換和數(shù)據(jù)存儲的區(qū)別吧。在更多的領域,XML是做為數(shù)據(jù)轉(zhuǎn)化和傳輸?shù)妮d體。
    然后第二點,也是非常重要的一點:XML是一種語言,而非存儲。 xml的含義是可擴展標記語言,它有自己的語法結構,并可以表達一定的語義。 xml可以表達一定的語義,從本質(zhì)上說, xml可以存儲的不僅僅是數(shù)據(jù),而且可以是操作。xml語言的高明之處在于它不會區(qū)分數(shù)據(jù)和程序(或者說對數(shù)據(jù)的操作),程序本身是數(shù)據(jù),數(shù)據(jù)也是程序。
    這似乎有些難以理解, 舉個例子, 假如你使用java寫以下函數(shù)
    int add(int a, int b)
    {
    return a +b
    }

    如果用xml來寫是以下形式

    <define-function return-type="int" name="add">
    <arguments>
    <argument type="int">a</argument>
    <argument type="int">b</argument>
    </arguments>
    <body>
    <return>
    <add value1="a" value2="b" />
    </return>
    </body>
    </define>

    也許你可以會問 這段代碼必須 由一個xml 解析器解析 才會有語義,而對于xml本身它僅僅只是數(shù)據(jù)。
    我覺得你可以用這種方式去理解,但是換一個角度,定義操作的標簽(例如body, arguments return )假如僅僅是解析器的一部分, 而真真的語義仍然是xml本身。(這個時候,你還非要說xml本身不具有語義,是解析器賦予它語義嗎)。
    有些人說, xml僅僅是txt,只是作為一種存儲,語義都是解析器賦予的,那不盡要問:如果將C語言代碼看成txt,難道C語言本身也只是群字符串的存儲嗎? 遠遠不是!
    如果你從這個層面來理解xml, 那么就應該明白xml為什么被稱為語言,而不是其他。 xml最重要的功能是能夠定義可擴展的標記,并使用這些標記表達一定的語義。
    XML語言最重要的一點是 語義可構造性。哈,如果你從語言的角度來理解xml,你會發(fā)現(xiàn)xml不僅僅是存儲數(shù)據(jù)。

    # re: XML的本質(zhì)討論  回復  更多評論   

    2007-07-02 21:42 by wxb_nudt
    非常感謝小于對我這篇文章的補充.時隔兩年多,當初寫這篇文章的本意我已經(jīng)記不太清,不過現(xiàn)在看來,當時確實較為偏頗.謝謝!

    # re: XML的本質(zhì)討論  回復  更多評論   

    2008-04-14 17:38 by music
    厲害,學習之

    # re: XML的本質(zhì)討論[未登錄]  回復  更多評論   

    2010-01-18 16:37 by Stephen
    學習!學習

    # re: XML的本質(zhì)討論  回復  更多評論   

    2011-05-13 23:25 by 老蘇
    XML的本質(zhì)是數(shù)據(jù)沒錯,不過XML的設計目的是用于通信,而不是用于存儲。它的數(shù)據(jù)定義和通信協(xié)議的定義其實非常相似!
    用于存儲,它的效率、功能和靈活性都不如數(shù)據(jù)庫,因為數(shù)據(jù)庫也有很多單機版、嵌入式數(shù)據(jù)等可以高效的存儲。

    # re: XML的本質(zhì)討論  回復  更多評論   

    2011-05-13 23:31 by 老蘇
    應該說,XML的功能是數(shù)據(jù)交換,而其本質(zhì),是一門標記語言。
    主站蜘蛛池模板: 黄色网址免费大全| 日本三级在线观看免费| 国产精品1024永久免费视频| 久久久久久a亚洲欧洲aⅴ| 大地资源中文在线观看免费版| 国产亚洲精品不卡在线| a级毛片毛片免费观看永久| 国产亚洲av片在线观看16女人| 成人久久免费网站| 亚洲综合区图片小说区| 成人女人A级毛片免费软件| 亚洲精品无码成人| 亚洲国产免费综合| 成人无码WWW免费视频| 亚洲精品在线播放| 最近中文字幕mv免费高清电影| 狠狠入ady亚洲精品| 在线观看午夜亚洲一区| 四虎成人精品永久免费AV| 亚洲AV无码一区二区三区在线| 在线日韩av永久免费观看| 国产高清视频免费在线观看| 亚洲AV人人澡人人爽人人夜夜| 亚洲精品免费网站| 色屁屁www影院免费观看视频| 久久影视国产亚洲| 亚洲成人免费网站| 美女无遮挡免费视频网站| 日韩亚洲人成在线综合日本| 成人免费大片免费观看网站| 国产精品亚洲二区在线| 久久精品国产精品亚洲蜜月| 最近中文字幕无吗免费高清| 国产黄在线播放免费观看| 亚洲成人黄色在线| www.亚洲色图| 黄页网站在线观看免费高清| 人禽伦免费交视频播放| 91午夜精品亚洲一区二区三区| www.91亚洲| 可以免费看的卡一卡二|