哪些字符在XML属性中是无效的(除非编码)?

我不敢相信我找不到这个信息,所以:

1)哪些字符不能在没有实体编码的情况下合并到XML属性中?

显然,你需要编码报价。 那么<>呢? 还有什么?

2)正式名单到底在哪里?

以下是属性值中允许的定义。

 '"' ([^<&"] | Reference)* '"' | "'" ([^<&'] | Reference)* "'" 

所以,你不能有:

  • 打开/closures属性值( '" )的相同字符
  • 一个赤裸裸的&(必须&amp;
  • 左尖括号( <必须是&lt;

你也不应该使用任何在XML文档中任何地方都不合法的字符 (比如表单提要等)。

根据(2) 当前的build议 ,特别是关于字符数据和标记 ,它们是(1)和号(&),左尖括号(<),右尖括号(>)以及单引号(')和双“(”)。

请参阅“可扩展标记语言(XML)1.0(第三版)”中的 2.2字符 。

请注意,至less在.NET中,如果您使用XML API来处理XML,那么您将不必担心这一点。 这是不把XML当作文本的原因。