<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 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    XML的本質討論

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

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

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

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

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

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

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

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

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

    評論

    # re: XML的本質討論  回復  更多評論   

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

    # re: XML的本質討論  回復  更多評論   

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

    # re: XML的本質討論  回復  更多評論   

    2005-03-14 18:52 by wxb_nudt
    謝謝關注,已經修改!

    # re: XML的本質討論  回復  更多評論   

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

    # re: XML的本質討論  回復  更多評論   

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

    # re: XML的本質討論  回復  更多評論   

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

    # re: XML的本質討論  回復  更多評論   

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

    # re: XML的本質討論  回復  更多評論   

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

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

    2007-06-28 22:51 by 小于
    樓主對xml的總結性話語算不得錯誤,但起碼是片面的。xml不僅僅是數據存儲,數據存儲只是它的一個方面,首先第一點:XML最重要的作用是數據交換,而不是存儲。樓主應該不需要我解釋數據交換和數據存儲的區別吧。在更多的領域,XML是做為數據轉化和傳輸的載體。
    然后第二點,也是非常重要的一點:XML是一種語言,而非存儲。 xml的含義是可擴展標記語言,它有自己的語法結構,并可以表達一定的語義。 xml可以表達一定的語義,從本質上說, xml可以存儲的不僅僅是數據,而且可以是操作。xml語言的高明之處在于它不會區分數據和程序(或者說對數據的操作),程序本身是數據,數據也是程序。
    這似乎有些難以理解, 舉個例子, 假如你使用java寫以下函數
    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本身它僅僅只是數據。
    我覺得你可以用這種方式去理解,但是換一個角度,定義操作的標簽(例如body, arguments return )假如僅僅是解析器的一部分, 而真真的語義仍然是xml本身。(這個時候,你還非要說xml本身不具有語義,是解析器賦予它語義嗎)。
    有些人說, xml僅僅是txt,只是作為一種存儲,語義都是解析器賦予的,那不盡要問:如果將C語言代碼看成txt,難道C語言本身也只是群字符串的存儲嗎? 遠遠不是!
    如果你從這個層面來理解xml, 那么就應該明白xml為什么被稱為語言,而不是其他。 xml最重要的功能是能夠定義可擴展的標記,并使用這些標記表達一定的語義。
    XML語言最重要的一點是 語義可構造性。哈,如果你從語言的角度來理解xml,你會發現xml不僅僅是存儲數據。

    # re: XML的本質討論  回復  更多評論   

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

    # re: XML的本質討論  回復  更多評論   

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

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

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

    # re: XML的本質討論  回復  更多評論   

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

    # re: XML的本質討論  回復  更多評論   

    2011-05-13 23:31 by 老蘇
    應該說,XML的功能是數據交換,而其本質,是一門標記語言。
    主站蜘蛛池模板: 免费无码国产V片在线观看| 国产成人精品免费午夜app| 亚洲国产成人久久精品影视| 国产精品免费观看| 韩国亚洲伊人久久综合影院| 亚洲精品国产成人片| 青青在线久青草免费观看| 一进一出60分钟免费视频| 亚洲色图黄色小说| 激情亚洲一区国产精品| 免费jjzz在线播放国产| 日韩免费无码视频一区二区三区| 亚洲自偷自偷在线成人网站传媒 | 亚洲视频免费一区| 国产精品亚洲综合| 久久久亚洲欧洲日产国码aⅴ | 亚洲伊人色欲综合网| 美女巨胸喷奶水视频www免费| 亚洲片一区二区三区| 日本高清在线免费| 国产福利免费视频| 亚洲精品永久在线观看| 久久久久久亚洲精品| 亚洲 自拍 另类小说综合图区| 成人免费黄色网址| 国内精品免费视频精选在线观看| 亚洲a∨无码一区二区| 亚洲国产高清视频在线观看| 久久久高清免费视频| 国产在线精品观看免费观看| 亚洲熟妇丰满xxxxx| 亚洲精品在线播放视频| 国产亚洲精品无码专区| 99久久免费精品视频| 国产美女视频免费观看的网站 | 免费毛片a线观看| 免费视频成人国产精品网站| 亚洲欧美一区二区三区日产| 亚洲自偷自拍另类图片二区| 亚洲精品美女久久久久99| 日韩精品电影一区亚洲|