1

我正在创建一个描述文件的 XML 1.0 应用程序(就像其他人所做的那样)。目前我有一个file需要name属性的元素;该属性的值是文件的名称。

但我相信这行不通。包含特殊字符&<'的文件名"很棘手,但您可以使用预定义的实体引用。但是包含控制字符的文件名呢?虽然非常罕见,但这些都是可能的。

在我看来,没有办法为我的目的创建 XML 应用程序,因为 XML (1.0) 不允许在文本中的任何位置使用控制字符。Quoth标准

字符 ::= #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*
4

1 回答 1

0

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

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

于 2012-02-06T18:39:42.087 回答