我的客户希望将我的xml文件写为<name>Smith & Jones</name>
,而不是<name>Smith & Jones</name>
。
我找不到讨论这个的质量参考。
答案 0 :(得分:7)
&符号(&amp;)和左尖括号(&lt;)仅在用作标记分隔符时或在注释,处理指令或CDATA部分中时才以其文字形式出现。它们在内部实体声明的字面实体价值内也是合法的;见&#34; 4.3.2形成良好的解析实体&#34;。如果在其他地方需要它们,则必须使用数字字符引用或字符串&#34;&amp;&#34;来转义它们。和&#34;&lt;&#34;分别
由于这种情况不属于所述类别,因此属于非法行为。
答案 1 :(得分:6)
使用CDDATA标记在XML标记中插入这些字符,而不用XML解析它们:
<name>Smith & Jones</name>
变为
<name><![CDATA[ Smith & Jones ]]></name>
这样你也可以使用简单的html和xml。
答案 2 :(得分:3)
你不能,至少如果你想继续调用你的文件“XML”。 XML不允许使用未转义的&符号,任何符合标准的解析器都会拒绝将文件作为“格式不正确”的文件。
您可以使用CDATA,但这会引入其自身的丑陋,并且大多数序列化程序默认情况下不会生成CDATA。
答案 3 :(得分:2)
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易于创作的解析器。