关于「格式良好的XML文档」第一条规则的技术疑问
XML 1.1格式良好文档规则中连字符部分的含义与示例
这条规则里的连字符-是集合差运算,意思是:格式良好的XML文档必须满足「结构上是prolog + element + 可选Misc项」,同时排除所有包含受限字符(RestrictedChar)的文档——不管受限字符出现在文档的哪个位置(Char*代表任意数量的合法XML字符,前后包裹RestrictedChar,表示只要文档里存在至少一个受限字符,就不符合格式良好的要求)。
什么是RestrictedChar?
XML 1.1定义的受限字符包括:
- 空字符(
0x00) - 大部分ASCII控制字符:
0x01到0x1F(仅允许0x09制表符、0x0A换行、0x0D回车) - 部分扩展ASCII控制字符:
0x7F到0x84、0x86到0x9F
不符合规则的文档示例
下面是一个结构正确但包含受限字符的文档,它不属于格式良好的XML:
<?xml version="1.1"?> <note> <content>HelloWorld</content> <!-- 这里通过字符引用嵌入了受限字符0x01 --> </note>
另一个示例是直接嵌入不可见的控制字符(比如0x02,STX字符):
<?xml version="1.1"?> <message>Important info: </message> <!-- 这里的就是受限字符0x02 -->
这些文档虽然结构符合前半部分规则,但因为包含受限字符,所以不满足XML 1.1的格式良好要求。
内容的提问来源于stack exchange,提问作者ceving
相关产品推荐
相关产品推荐

