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

大龍的博客

常用鏈接

統(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>
            国产精品日本一区二区| 另类图片综合电影| 欧美视频日韩视频| 亚洲免费视频网站| 亚洲专区在线| 国语自产在线不卡| 亚洲第一精品福利| 欧美日韩精品在线视频| 性高湖久久久久久久久| 久久国产精品99国产| 亚洲国产成人精品女人久久久| 亚洲高清成人| 欧美日韩一区二区欧美激情| 香蕉亚洲视频| 久久久久久久网站| 一区二区久久久久| 久久精品国产免费观看| 午夜精品久久久久| 亚洲一级黄色片| 一区精品在线播放| 亚洲精品自在久久| 国产日韩综合| 欧美激情在线狂野欧美精品| 欧美日韩亚洲一区二区三区在线| 一区二区三区毛片| 亚洲欧美日韩在线播放| 亚洲黄一区二区| 亚洲综合成人在线| 亚洲黄一区二区三区| 亚洲一级在线| 亚洲国产日韩欧美一区二区三区| 亚洲免费成人av| 在线观看福利一区| 一区二区三区视频在线看| 国语自产精品视频在线看| 亚洲日本va午夜在线影院| 国产日韩在线视频| 一本久久综合| 亚洲激情电影在线| 欧美一区二视频| 亚洲毛片一区| 久久久精品性| 午夜精品影院在线观看| 欧美国产在线观看| 久久中文字幕一区二区三区| 欧美视频四区| 91久久精品网| 一区视频在线| 亚洲欧美另类在线观看| 中文精品视频| 欧美大片在线看免费观看| 久久综合久久综合九色| 国产欧美一区二区三区另类精品 | 中日韩高清电影网| 免费成人你懂的| 美女黄毛**国产精品啪啪| 国产精品入口尤物| 日韩亚洲国产欧美| 一区二区三区精品国产| 欧美国产先锋| 亚洲国产精品悠悠久久琪琪| 激情视频一区二区| 久久av一区| 久久精品人人做人人爽| 国产精品综合色区在线观看| 日韩亚洲视频| 亚洲欧美日韩国产精品| 国产精品久久久久久久久久免费看 | 欧美在线观看一区二区| 国产精品成人一区二区三区吃奶| 亚洲级视频在线观看免费1级| 在线观看国产日韩| 蜜乳av另类精品一区二区| 免费美女久久99| 国产美女精品免费电影| 欧美一区二区三区免费观看视频| 久久电影一区| 久久青青草原一区二区| 在线观看国产一区二区| 免费高清在线视频一区·| 亚洲国产精品久久久| 亚洲精品一区二区三| 欧美日本高清一区| 亚洲伊人观看| 蜜臀a∨国产成人精品| 亚洲精品乱码久久久久久按摩观 | 91久久精品国产91久久| 日韩一级黄色片| 国产精品视频一二三| 久久gogo国模啪啪人体图| 欧美jjzz| 亚洲性线免费观看视频成熟| 国产精品久久久久天堂| 欧美一区免费| 亚洲第一黄色| 亚洲欧美成人精品| 在线观看久久av| 欧美日韩国产a| 亚洲尤物影院| 亚洲第一毛片| 欧美一区二区三区在线视频| 黄色精品网站| 欧美午夜精品理论片a级大开眼界 欧美午夜精品理论片a级按摩 | 宅男精品视频| 国产一区二区三区高清| 欧美国产三区| 午夜电影亚洲| 亚洲国产精品视频| 久久国产精品黑丝| 在线亚洲美日韩| 国产一区二区三区久久悠悠色av | 久久精选视频| 一区二区三区成人精品| 美女国内精品自产拍在线播放| 亚洲日本在线视频观看| 国产伊人精品| 国产精品久久7| 欧美jizz19性欧美| 久久狠狠亚洲综合| 中日韩高清电影网| 亚洲精品国精品久久99热| 久久看片网站| 欧美一区二区三区四区在线观看地址| 91久久久久久久久久久久久| 国产亚洲精品aa| 国产精品久久久| 欧美人与性动交cc0o| 老**午夜毛片一区二区三区| 欧美亚洲在线| 亚洲私人影院| 日韩视频专区| 亚洲欧洲另类| 亚洲国产欧美一区二区三区久久 | 欧美大胆成人| 欧美96在线丨欧| 久热re这里精品视频在线6| 久久露脸国产精品| 国产精品有限公司| 欧美日韩高清在线观看| 久热国产精品视频| 久久天天狠狠| 久久精品国产成人| 欧美尤物一区| 久久精品国产精品亚洲精品| 亚洲欧美另类国产| 欧美一级淫片播放口| 先锋影音一区二区三区| 亚洲欧美日韩综合aⅴ视频| 亚洲性夜色噜噜噜7777| 亚洲一区二区3| 亚洲免费一级电影| 亚洲女爱视频在线| 久久久久免费视频| 美日韩精品免费| 欧美精品国产一区| 欧美三级视频在线播放| 欧美午夜免费电影| 国产精品亚洲人在线观看| 国产欧美一区二区精品忘忧草| 国产精品亚洲综合色区韩国| 国产精品一二一区| 一区在线影院| 亚洲三级电影在线观看| 亚洲四色影视在线观看| 亚洲欧美日韩中文播放| 久久精品二区三区| 女同性一区二区三区人了人一| 亚洲国产91| 亚洲天堂网在线观看| 性欧美超级视频| 久久夜色精品一区| 欧美日韩综合视频网址| 国产日韩在线播放| 日韩视频免费在线观看| 亚洲欧美日韩网| 免费成人在线观看视频| 日韩视频一区二区三区在线播放免费观看 | 亚洲午夜国产成人av电影男同| 欧美一级专区| 免费亚洲一区二区| 亚洲视频福利| 蜜臀久久99精品久久久久久9| 欧美视频一区二区在线观看| 精品电影一区| 亚洲在线免费| 欧美国产免费| 午夜精品久久久久久99热软件| 欧美不卡在线视频| 国产日本欧美在线观看| 日韩一区二区精品葵司在线| 久久久精品国产一区二区三区 | 99国产精品久久久久久久| 久久久久久久久综合| 国产精品久久久一区二区三区| 在线日本成人| 久久精品官网| 亚洲调教视频在线观看| 欧美成人精品1314www| 国产主播一区二区三区| 亚洲在线一区|