XML 的使用越來(lái)越廣泛,但是很多 XML 的結(jié)構(gòu)并不好。即便結(jié)構(gòu)良好,也常常設(shè)計(jì)得很糟,使得處理和維護(hù)非常困難。而大部分用于 XML 的基礎(chǔ)結(jié)構(gòu)使問(wèn)題更加惡化。于是出現(xiàn)了關(guān)于 XML 最佳實(shí)踐的公開(kāi)討論,比如 Henri Sivonen 的文章“HOWTO Avoid Being Called a Bozo When Producing XML”。Uche Ogbuji 經(jīng)常在 IBM developerWorks 上討論 XML 最佳實(shí)踐,這里他提出了在這些文章中討論的要點(diǎn)。
幾年來(lái)我一直在本專(zhuān)欄和其他系列文章中討論 XML 最佳實(shí)踐。其他人,比如和我同行的專(zhuān)欄作家 Elliotte Rusty Harold 也談到這個(gè)問(wèn)題。參加 XML 設(shè)計(jì)原則討論的 XML 專(zhuān)家越好越好,這樣社區(qū)就會(huì)對(duì)在不同層次上采用 XML 的開(kāi)發(fā)人員提供一致的建議。本文將結(jié)合最新和過(guò)去的文章,更詳細(xì)地介紹了 XML 最佳實(shí)踐。
不再有笨蛋
Henri Sivonen 撰寫(xiě)了一篇有用的文章“HOWTO Avoid Being Called a Bozo When Producing XML”(請(qǐng)參閱參考資料)。他采用了基于 XML 的 Web 提要格式(如 RSS 和 Atom)的觀(guān)點(diǎn),提出了用名稱(chēng)空間生成結(jié)構(gòu)良好的 XML 應(yīng)該做和不應(yīng)該做哪些事情的指南。正如他在簡(jiǎn)介中所說(shuō)的:
有些開(kāi)發(fā)人員似乎認(rèn)為以編程方式生成 XML 而保持結(jié)構(gòu)良好非常困難(如果不是不可能的話(huà)),另一些開(kāi)發(fā)人員卻能夠做到這一點(diǎn),并奇怪其他人為什么如此無(wú)能。我假設(shè)沒(méi)有人愿意顯得無(wú)能或者被點(diǎn)名。因此,我希望下列建議能夠幫助開(kāi)發(fā)人員從第一類(lèi)人轉(zhuǎn)變成第二類(lèi)人。
Henri 給出的第一條建議是“不要將 XML 看作是文本格式”,我認(rèn)為這是一條危險(xiǎn)的建議。當(dāng)然其基本觀(guān)點(diǎn)是正確的 —— 不能像簡(jiǎn)單的文本文檔那樣隨心所欲的生成和編輯 XML,但是這種要求適用于所有有結(jié)構(gòu)的文本格式。但是,說(shuō) XML 不是文本就背棄了 XML 一個(gè)最重要的特點(diǎn),而這點(diǎn)在規(guī)范的 XML 定義中被奉為圭臬。(“文本對(duì)象是結(jié)構(gòu)良好的 XML 文檔[如果符合本規(guī)范]”。) Henri 的提法也讓人糊涂,因?yàn)橛嘘P(guān)于 XML 文本的技術(shù)定義,大致上是將它解釋為 XML 的字符序列。文本不僅僅是葉子元素或者屬性中的主要成分 —— 技術(shù)上稱(chēng)這類(lèi)文本為字符數(shù)據(jù)。文本還是所有 XML 實(shí)體的主要成分,因此說(shuō) XML 不是文本是自相矛盾的。我認(rèn)為強(qiáng)調(diào) XML 和開(kāi)發(fā)人員已經(jīng)熟悉的文本格式的區(qū)別會(huì)更有意義。
新聞熱點(diǎn)
疑難解答
圖片精選