我的客户想将我的 xml 文件写为<name>Smith & Jones</name>
,而不是<name>Smith & Jones</name>
.
我找不到讨论这个的质量参考。
我的客户想将我的 xml 文件写为<name>Smith & Jones</name>
,而不是<name>Smith & Jones</name>
.
我找不到讨论这个的质量参考。
和号字符 (&) 和左尖括号 (<) 仅在用作标记分隔符或在注释、处理指令或 CDATA 部分中时才能以它们的文字形式出现。它们在内部实体声明的文字实体值内也是合法的;请参阅“4.3.2 格式良好的解析实体”。如果在其他地方需要它们,则必须分别使用数字字符引用或字符串“&”和“<”对它们进行转义。
由于这种情况不属于上述任何类别,因此是非法的。
使用 CDDATA 标记在 XML 标记中插入这些字符,而不用 XML 解析它们:
<name>Smith & Jones</name>
变成
<name><![CDATA[ Smith & Jones ]]></name>
这样,您也可以将纯 html 与 xml 放在一起。
你不能,至少如果你想继续调用你的文件“XML”。XML 不允许未转义的 & 符号,并且任何符合标准的解析器都会将带有它们的文件视为“格式不正确”而拒绝。
您可以使用 CDATA,但这会带来自己的丑陋,并且大多数序列化程序默认情况下不会生成 CDATA。
XML 规范清楚地表明这不是格式良好的 XML。
如果你想知道为什么规范是这样写的,那总是一个更难回答的问题。有时(但这次不是)Tim Bray 在http://www.xml.com/axml/testaxml.htm上的 XML 建议的注释版本提供了一些启示。有时(但不是这次)http://www.w3.org/TR/1998/REC-xml-19980210.xml规范的 XML 源代码中的注释和其他注释具有启发性。在没有这些线索的情况下,回想一下 XML 的创建者非常渴望保持与 SGML 的兼容性,并且他们通常倾向于使用能够检测 XML 中的错误而不是使 XML 易于编写的解析器是有用的。