2012-02-06 20 views
1

我正在創建一個描述文件的XML 1.0應用程序(如others have done)。目前我有一個file元素,需要name屬性;該屬性的值是文件的名稱。XML設計:描述名稱中包含控制字符的文件

但我相信這是行不通的。包含特殊字符&,<,'"的文件名非常棘手,但您可以使用predefined entity references作爲這些文件名。但是包含控制字符的文件名呢?雖然非常罕見,但這些都是可能的。

在我看來,沒有辦法爲我的目的創建XML應用程序,因爲XML(1.0)不允許在文本中的任何地方使用control characters。 Quoth the standard

Char :: =#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]

是否有任何技巧可以解決這個問題?它可以在XML 1.1中工作嗎?或者它也有限制嗎?


在我的GNU/Linux的電腦,我可以做到這一點在他們的名字創建兩個文件控制字符:

touch `echo -e 'SP\a'` 
touch `echo -e 'SP\v'` 
ls SP* 

回答

0

在XML 1.1,你可以代表除NUL所有字符(代碼點0) 。控制字符必須作爲數字字符引用轉義。

如果您需要包括NUL在內的所有字符,則需要定義您自己的轉義約定。您可以採用用於URI(%HH)的慣例或Java(\ uNNNN)中使用的約定,或者您可以創建自己的約定。

+0

「除NUL之外的所有字符」NUL在POSIX文件名中是不允許的。可能無處不在,因爲設計師想要提供C API。所以可能夠好了。 – Raedwald 2012-02-09 13:41:16

相關問題