青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

大龍的博客

常用鏈接

統(tǒng)計

最新評論

XML和DTD

一、XML的讀寫
  對XML文件的讀和寫,我所知道的是,標(biāo)準(zhǔn)的讀寫方式有兩種,DOM和SAX。其中,SAX需要把整個XML文件先讀進(jìn)來,然后才允許你對這個文件進(jìn)行讀寫,它的優(yōu)點(diǎn)是操作方便,真的很方便;缺點(diǎn)就是效率上不好,因為它要先把整個文件讀近來么。DOM則是把XML文件的元素看作流來處理,一個一個讀進(jìn)來,它的優(yōu)點(diǎn)就是效率很好,因為DOM方式是讀一點(diǎn)就可以處理一點(diǎn),這個效率方面,應(yīng)該和普通的文件處理沒太大的區(qū)別;缺點(diǎn)就是操作不方便,這個不方便的程度,應(yīng)該和普通的文件處理比能好那么一點(diǎn)點(diǎn)而已。性能和操作,不可兼得——多希望有兼得的那么一天啊!
  所以對小的XML文件,盡管用SAX好了;要是這XML文件大小超過了1M,最好用DOM;如果超過了10M你還用SAX,那您可是有點(diǎn)想故意搗亂了。

二、XML的格式
  說起來XML的格式真的挺簡單,不是說了么XML的目標(biāo)是讓任何一個計算機(jī)碩士畢業(yè)的人可以在四個星期內(nèi)完成一個XML解析器(不知道DOM接口SAX效率的解析器算不算),說實話,我覺得本科的就可以了。如果會用正則表達(dá)式,可能兩個星期就足夠了(包括一個星期休假時間)。
  但是也有不簡單的地方。
  一個可以被解析器讀入的XML文件,僅僅是合格的XML文件(Well-formated),要做到這一點(diǎn)很容易,你只要通過任何一個正確的XML解析器(包括計算機(jī)碩士用四個星期寫的)采取SAX方式生成一個XML文件,那一定是合格的XML文件——想錯你都沒機(jī)會。
  但是合格的XML文件未必就是合用的。
  比如我今天在公司設(shè)計我們模塊的XML文件格式,下星期有朋自遠(yuǎn)方來。原來我覺得這太簡單了,很快就可以做完。確實我很快就做完了,但是馬上發(fā)現(xiàn)問題了,因為在另外一個模塊,德方提出了要求實現(xiàn)的格式,和我的完全不一樣。比如表示設(shè)計模式這本書的信息,我是這樣寫的:
<book index = "1">
<name value = "Design Pattern"/>
<author value = "GOF"/>
</book>
  而如果按照德方提出的要求,就應(yīng)該這樣寫:
<book>
<name>Design Pattern</name>
<author>GOF</author>
</book>
  也就是說,我把所有的數(shù)據(jù)都寫到了屬性里,而德方卻要求把大部分的數(shù)據(jù)放在子節(jié)點(diǎn)里。那么誰的做法是對的呢?顯然我們都是合格的。
  這就涉及到一個XML標(biāo)簽的定義和使用的問題了。就我舉的例子而言,比較好的做法是創(chuàng)建一個book的節(jié)點(diǎn),然后把名字、作者、價格都作為屬性而寫上去。我們的都不好。但是在我們公司里的那種情況下,確實是德國人的做法好。我的做法寫出來的文件,僅僅在IE里瀏覽的時候很漂亮,一目了然。德國人給的方案在IE里看起來,好丑,不過符合XML文件描述的數(shù)據(jù)的邏輯結(jié)構(gòu)。
  如果你學(xué)過數(shù)據(jù)庫,那是不是覺得,就定義和使用XML標(biāo)簽這個問題上看,XML很類似與數(shù)據(jù)庫的設(shè)計呢?要解決這個問題,就需要今天的最后一個主角:DTD出場了。
三、DTD的簡單介紹
  XML大家恐怕都是耳熟能詳了,DTD就有點(diǎn)鮮為人知了。至少我一聽到這東西的時候,總是把它和TDD弄混。所以在這里,我也就是能給DTD來點(diǎn)簡單的介紹而已了。
  DTD是Document Type Definition的縮寫(我最討厭縮寫,特別是最近看一本CMMI的書,老天爺,全是縮寫!)。它的作用是確保XML文件的正確性,具體而言,就是確保XML文件中的標(biāo)簽、元素是否是按照正確的方式使用的。比如上文中,一個人把所有的屬性獨(dú)立成一個個元素,然后再在元素里面加屬性,另一個卻把所有的屬性都做成了元素,誰的誰錯?誰都對了,但是這樣對下去,我表示書的XML文件,就不能讓德國人用,德國人表示書的XML文件我也不能用,XML就失去意義了。那就需要大家約定一個DTD文件了,我們雙方都遵守這個DTD文件的約定,就不會出現(xiàn)這種問題了。而且,一個XML數(shù)據(jù)解析器在讀一個XML文件的時候,可以先檢查一下,這個XML文件是否符合約定的DTD標(biāo)準(zhǔn),以此來判斷這個XML文件是不是自己需要的數(shù)據(jù)。
  DTD和XML結(jié)合在一起,有很多著名的應(yīng)用,比如MathML,就是利用XML和DTD結(jié)合,制定出來用來描述數(shù)學(xué)表達(dá)式的一個標(biāo)準(zhǔn)。如果沒有DTD,那么這樣的標(biāo)準(zhǔn)是不可能推出的,當(dāng)年牛頓和萊布尼茨兩個人就搞出來兩套微積分符號,現(xiàn)在這么多數(shù)學(xué)家,一定會這邊要求如此寫XML,那邊要求如彼寫XML,非亂套不可。
  但是DTD的應(yīng)用,恐怕不會太多了,這是因為DTD是有一些明顯缺陷的。首先,它不符合XML語法,它是自成體系的另一套語法,相當(dāng)?shù)臒┈崳黄浯危茿SCII格式的,這不構(gòu)成致命缺陷,但是XML文件完全是Unicode的情況下,它還保持古老的ASCII格式,就相當(dāng)不協(xié)調(diào)了。還有其他缺陷,本池水淺學(xué)疏,還不知道,那就列到這里,給DTD個面子。
  水深的人很多,所以他們提出了很多避免或者取代DTD的方法,比如XSLT,好象在CSDN的論壇,用的就是XML+XSLT吧?我保存了很多CSDN論壇的貼子,都不能看,非要我再保存一另外一個文件才能看。最著名的DTD取代者,當(dāng)然是XML Schema了!XML Schema不僅僅沒有DTD的缺陷,還有很多強(qiáng)大的優(yōu)點(diǎn)——這個,本池又一次水淺學(xué)疏~

posted on 2008-02-04 00:32 大龍 閱讀(956) 評論(1)  編輯 收藏 引用

評論

# re: XML和DTD 2008-12-29 22:43 getborn

DOM和SAX說反了.   回復(fù)  更多評論   


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            一区二区三区 在线观看视| 欧美大片在线观看| 欧美伊人精品成人久久综合97 | 亚洲精品九九| 欧美日韩国产二区| 亚洲一级黄色片| 欧美激情一级片一区二区| 妖精成人www高清在线观看| 国产精品成人午夜| 久久久久久久999| 日韩午夜精品| 噜噜噜噜噜久久久久久91| 一区二区三区国产精品| 国产欧美日韩精品一区| 欧美高清视频在线播放| 欧美伊人久久久久久午夜久久久久 | 亚洲国产日韩欧美一区二区三区| 欧美日韩国产二区| 国产精品色午夜在线观看| 欧美韩日亚洲| 欧美调教vk| 欧美国产激情二区三区| 欧美激情视频在线免费观看 欧美视频免费一 | 国产欧美一二三区| **网站欧美大片在线观看| 国产伦精品免费视频| 欧美日韩国产黄| 国产欧美日韩中文字幕在线| 在线日韩欧美视频| 亚洲欧美日韩在线观看a三区 | 狠狠色狠狠色综合| 国产拍揄自揄精品视频麻豆| 国产精品一区二区久久| 极品少妇一区二区三区精品视频 | 一区二区三区四区蜜桃| 久久er精品视频| 欧美视频在线一区二区三区| 樱桃国产成人精品视频| 伊人久久成人| 亚洲欧美精品中文字幕在线| 欧美成人精品影院| 免费亚洲一区二区| 蜜桃av久久久亚洲精品| 妖精视频成人观看www| 亚洲精品资源美女情侣酒店| 日韩视频第一页| 久久综合色播五月| 欧美精品三级在线观看| 永久域名在线精品| 久久国产日韩| 欧美在线日韩精品| 久久三级福利| 欧美电影免费观看网站| 香蕉亚洲视频| 欧美成人精品三级在线观看| 欧美日本韩国一区| 国产精品免费一区豆花| 国产一区二区三区av电影| 在线观看日韩专区| 久久精品国产99国产精品澳门| 一本久道综合久久精品| 欧美精品一区二区三区四区| 91久久久久久| 午夜精品一区二区三区在线播放| 久久婷婷国产综合国色天香| 欧美激情一区二区在线| 久久免费偷拍视频| 国产精品成人av性教育| 国产一区在线免费观看| 日韩一二三区视频| 久久精品二区三区| 午夜精品久久久久久久99热浪潮| 欧美另类一区二区三区| 亚洲久久一区二区| 久久精品国产久精国产一老狼 | 日韩图片一区| 欧美色另类天堂2015| 亚洲影院色无极综合| 欧美成人dvd在线视频| 久久人体大胆视频| 91久久精品日日躁夜夜躁国产| 亚洲高清色综合| 亚洲欧美日韩国产中文在线| 国产欧美一区二区三区在线老狼 | 尤物yw午夜国产精品视频明星| 亚洲午夜激情网站| 亚洲欧美国产不卡| 午夜激情亚洲| 亚洲国产一区在线| 亚洲美女淫视频| 国产伦精品一区二区三区高清| 久久久www成人免费毛片麻豆| av成人免费| 国产日韩欧美一区在线| 午夜免费日韩视频| 久久狠狠久久综合桃花| 国产精品一区毛片| 免费不卡在线视频| 欧美视频一区二区三区在线观看| 久久国产精品第一页| 免费影视亚洲| 亚洲激情图片小说视频| 一本色道**综合亚洲精品蜜桃冫 | 日韩视频在线一区| 亚洲综合二区| 国产精品一区二区久激情瑜伽| 女人香蕉久久**毛片精品| 欧美日韩一区二区国产| 亚洲狼人综合| 欧美一区2区三区4区公司二百| 国产免费成人av| 亚洲第一区在线观看| 国产精品久久久久久久久免费 | 亚洲大胆人体在线| 午夜一区在线| 一区二区三区毛片| 欧美1区2区视频| 久久久久久91香蕉国产| 国产精品视频久久久| 日韩一级大片| 亚洲视频欧美视频| 亚洲字幕在线观看| 99精品国产99久久久久久福利| 欧美一区二区国产| 亚洲一区二区三区四区在线观看 | 欧美69wwwcom| 欧美高清视频一区二区| 国产欧美va欧美va香蕉在| 一区二区三区国产盗摄| 在线综合亚洲| 欧美日产一区二区三区在线观看| 欧美国产日韩二区| 在线日韩成人| 牛夜精品久久久久久久99黑人| 欧美成人免费在线| 亚洲电影欧美电影有声小说| 久久九九有精品国产23| 日韩视频在线永久播放| 久久噜噜亚洲综合| 久久精品亚洲国产奇米99| 国产精品一区二区男女羞羞无遮挡| 日韩视频不卡中文| 一区国产精品| 欧美+日本+国产+在线a∨观看| 激情久久婷婷| 麻豆精品在线播放| 亚洲欧美一区二区三区久久| 欧美丝袜一区二区| 午夜精品久久久久久久99黑人| 久久久99免费视频| 亚洲国产成人久久| 午夜国产一区| 另类尿喷潮videofree| 亚洲第一狼人社区| 欧美福利电影网| 99re6这里只有精品视频在线观看| 亚洲一区精品在线| 国产主播精品在线| 免费中文字幕日韩欧美| 亚洲精品免费在线| 欧美一区二区三区四区在线观看地址| 久久精品夜色噜噜亚洲a∨ | 国产精品久久久久久久久搜平片 | 欧美韩日精品| 夜夜嗨av一区二区三区中文字幕| 亚洲欧美综合一区| 韩日欧美一区二区| 欧美国产高清| 香蕉精品999视频一区二区| 欧美成人精品不卡视频在线观看| 一区二区三区四区在线| 国产一区二区日韩精品欧美精品 | 欧美福利视频| 亚洲欧美日韩精品久久亚洲区 | 在线观看的日韩av| 欧美视频一区二区| 久久影院午夜片一区| 亚洲精品久久久久久一区二区| 亚洲欧美日韩在线一区| 亚洲国产高清aⅴ视频| 国产精品sm| 蜜臀av在线播放一区二区三区| 亚洲婷婷在线| 最新日韩欧美| 一本一道久久综合狠狠老精东影业 | 午夜精品国产更新| 亚洲国产精品激情在线观看| 国产精品久久久久久亚洲调教| 久久久久久久波多野高潮日日| 99精品视频网| 欧美承认网站| 久久精品官网| 亚洲免费综合| 一本色道久久综合| 亚洲男人影院| 亚洲视频一区在线| 亚洲三级免费观看| 欧美xx视频| 欧美一区亚洲一区| 亚洲视频观看|