XML设计:描述名称中包含控制字符的文件

时间:2012-02-06 15:36:24

标签: xml filesystems control-characters

我正在创建一个描述文件的XML 1.0应用程序(如others have done)。目前我有一个file元素,需要name属性;该属性的值是文件的名称。

但我相信这不起作用。包含特殊字符&<'"的文件名很棘手,但您可以使用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*

1 个答案:

答案 0 :(得分:0)

在XML 1.1中,您可以表示除NUL(代码点0)之外的所有字符。控制字符必须作为数字字符引用进行转义。

如果您需要包括NUL在内的所有字符,则需要定义自己的转义约定。您可以采用用于URI的约定(%HH)或Java中使用的约定(\ uNNNN),或者您可以创建自己的约定。