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