在XML 1.0中有許多不能合法編碼的字符,例如U+0007('bell')和U+001B('escape')。大多數有趣的字符是非空白“控制”字符。從(例如)這個問題和其他問題中可以很明顯地看出問題是XML規范 -但是有人可以向我說明為什么 XML規范禁止使用這些字符嗎?似乎可能需要對它們進行轉義編碼,例如分別作為和,但是也許有實際的原因,禁止而不是要求字符被轉義?回答者建議,有某種動機來避免傳輸控制字符,但是Unicode包括許多其他類似控制的字符(考慮U+200C“零寬度非連接符”)。我知道這種行為可能沒有充分的理由,但我仍然想更好地理解它。這特別令人沮喪,因為當這些字符值以其他編碼數據格式出現時,我最終“雙轉義”了需要對其進行編碼的新XML文檔。
3 回答

哆啦的時光機
TA貢獻1779條經驗 獲得超6個贊
我的理解是,禁止該范圍的理由是,標記語言不需要支持傳輸和流控制字符,并且將其包括在內會對二進制轉換中的所有編輯器和解析器造成問題。
我正在努力從Tim Bray等人的書中找到關于此事的任何信息。
編輯:有關控制字符的一些 討論和含糊的承認,它并不是設計過度:
在17/06/00 -0500 09:27 AM,馬克·沃爾克曼(Mark Volkmann)寫道:
我從未見過關于大多數ASCII控制字符(例如換頁符)在XML文檔中不允許的原因的討論。任何人都可以告訴我該決定的原因,或向我指出規格。這就解釋了嗎?
我不確定如果再次執行此操作,是否會以相同的方式執行。我看不出他們有什么真正的傷害。顯然,如果您正在針對一種高度可互操作的內容標記語言(并且XML是)進行優化,則對諸如vertical-tab和Backspace等之類的東西抱有懷疑是合法的……但是,如何保持一致\ n和DEL等?-蒂姆
- 3 回答
- 0 關注
- 912 瀏覽
相關問題推薦
添加回答
舉報
0/150
提交
取消