Thinking XML: 創(chuàng)建 XML 的好建議(3)_Xml教程
推薦:使用PHP和AJAX的XML編程(2) 基于 ACORD 人壽數(shù)據(jù)模型的場景 我們來考慮一個簡單的人壽保險場景,在這個場景中,首先創(chuàng)建一個表示新保單的 XML 文檔,然后查詢和操縱這個文檔,另外還將這個文檔從一層移動到另
Henri 關(guān)于 Unicode 和字符處理的建議基本上是完全正確的。不過我認(rèn)為“Avoid adding pretty-printing white space in character data”一節(jié)有點(diǎn)夸大其詞。多數(shù)情況下,元素之間而不是帶有字符數(shù)據(jù)的元素內(nèi)部的精細(xì)打印是安全的。如 Henri 所述,清單 1 所示的如果以清單 2 的形式呈現(xiàn)通常是不安全的。
清單 1. XML 例子
| <foo>bar</foo> |
清單 2. 在字符數(shù)據(jù)中增加空白后的 XML 例子
| <foo> bar </foo> |
但通常以清單 3 的形式打印 XML 是安全的,輸出結(jié)果如清單 4 所示。
清單 3. 另一個 XML 例子
|
<doc><foo>bar</foo></doc> |
| <doc> <foo>bar</foo> </doc> |
很多 XML 序列化工具能夠理解相對安全和不安全的的打印格式。必須知道的是,如果在混合內(nèi)容中增加空格,則清單 3 和 4 中所示的精細(xì)打印形式可能造成扭曲。如果使用模式制導(dǎo)的序列化,則可以避免這類問題。但在實(shí)踐中,使用混合內(nèi)容的多數(shù)詞匯表對空白規(guī)范化沒有這么敏感,因此不用過于擔(dān)心精細(xì)打印。應(yīng)該充分了解該問題,并知道沒有辦法關(guān)閉精細(xì)打�。ㄗ詈媚J(rèn)不用精細(xì)打�。enri 提出了清單 5 所示的精細(xì)打印實(shí)踐,但是我不同意,因?yàn)槲艺J(rèn)為那些難看的標(biāo)記不容易理解。
清單 5. Henri Sivonen 建議但本文作者不同意的精細(xì)打印方式
| <foo >bar</foo > |
修道院的建議
現(xiàn)在換換檔,本文要探討的第二篇資料是 Simon St. Laurent 撰寫的“Monastic XML”(請參閱參考資料)。這是一組小短文,圍繞著如何充分利用 XML 而就處理和思考 XML 提出了一些建議。Simon 使用修道院和禁欲主義作為比喻,提出為 XML 增加不適應(yīng)其簡單文本根 (textual root) 的過多負(fù)擔(dān)是危險的。 在“Marking-up at the foundation”中,他討論了字符數(shù)據(jù)和標(biāo)記(元素和屬性)的本質(zhì)作用。在“Naming things and reading names”中,他解釋了為何一般標(biāo)識符(也稱為元素類型名)是一個重要的概念,應(yīng)該作為標(biāo)記信息結(jié)構(gòu)的惟一關(guān)鍵成分。理想情況下,如果使用 XML 名稱空間,關(guān)鍵就是統(tǒng)一名稱(名稱空間 URI 加上本地名),這種復(fù)雜化就是 Simon 在“Namespaces as opportunity”中厲聲疾呼的原因之一。“Accepting the discipline of trees”揭示了 XML 一個不幸的秘密:盡管看起來 XML 的層次結(jié)構(gòu)很容易擴(kuò)展成圖形結(jié)構(gòu),但實(shí)踐證明用 XML 建模圖有點(diǎn)困難。但目前為止,“Monastic XML”網(wǎng)站上最重要的建議是“優(yōu)化標(biāo)記的處理總是不成熟”。XML 是一種聲明性技術(shù),對很多開發(fā)人員來說,關(guān)于它的強(qiáng)大和不足有很多不實(shí)之詞。那些盡量把 XML 設(shè)計和處理細(xì)節(jié)拉近的開發(fā)人員,從長期來看,通常使得處理更加困難。XML 成功的關(guān)鍵是關(guān)注需要抽象表示的信息的特點(diǎn),將它與需要處理這些信息的系統(tǒng)的技術(shù)設(shè)計分離開來。
結(jié)束語
討論 XML 最佳實(shí)踐時總是有一些不同的觀點(diǎn),特別是在初期階段,但聽到不同的聲音是一件好事。關(guān)于這個話題的參考資料很少,我將繼續(xù)在本專欄中討論它。如果對最佳實(shí)踐有什么資料或者建議或者希望分享您的觀點(diǎn),請參加 Thinking XML 論壇上的討論。
分享:論Asp與XML的關(guān)系1、XML 是什么? XML僅僅是一種數(shù)據(jù)存放格式,這種格式是一種文本(雖然XML規(guī)范中也提供了存放二進(jìn)制數(shù)據(jù)的解決方案)。 事實(shí)上有很多文本格式都可以用來存放數(shù)據(jù),例如大家所熟悉的.ini文
- xml創(chuàng)建節(jié)點(diǎn)(根節(jié)點(diǎn)、子節(jié)點(diǎn))
- WML開發(fā)教程之 WAP網(wǎng)站服務(wù)器配置方法
- WMLScript的語法基礎(chǔ)
- 收集的WML Script標(biāo)準(zhǔn)函數(shù)庫
- WML教程之文本框控件Input
- 無線標(biāo)記語言(WML)基礎(chǔ)之WMLScript 基礎(chǔ)
- xml文件的結(jié)構(gòu)解讀
- 關(guān)于XSL - XSL教程
- 選擇模式 - XSL教程 - 2
- XPath入門 - XSL教程 - 3
- 匹配模式 - XSL教程 - 4
- 測試模式 - XSL教程 - 5
- 相關(guān)鏈接:
- 教程說明:
Xml教程-Thinking XML: 創(chuàng)建 XML 的好建議(3)
。