为什么“>”可以使用XML文件的值,但是“<”不是?

时间:2013-01-09 04:52:16

标签: xml validation

以下是XML文件的示例:

<tag value=">this is well formatted xml"/>

这可以在MSXML和Apache Xerces中成功加载。

<tag value="<this is not"/>

这将失败。

我认为大于号和小号符号在XML文件中都是非法的,因为它们不用作标记分隔符。但上面的例子显示大于号是好的。

任何人都可以解释或提供有关此文档的链接吗?感谢。

2 个答案:

答案 0 :(得分:3)

只有字符“&lt;”和“&amp;”在XML中严格违法。大于字符是合法的,但更换它是一个好习惯。

 Entity References

    Some characters have a special meaning in XML.

    If you place a character like "<" inside an XML element, it will generate an error because the parser interprets it as the start of a new element.

    This will generate an XML error:
    <message>if salary < 1000 then</message>

    To avoid this error, replace the "<" character with an entity reference:
    <message>if salary &lt; 1000 then</message>

    There are 5 predefined entity references in XML:
    &lt;    <   less than
    &gt;    >   greater than
    &amp;   &   ampersand 
    &apos;  '   apostrophe
    &quot;  "   quotation mark

    Note: Only the characters "<" and "&" are strictly illegal in XML. The greater than character is legal, but it is a good habit to replace it.

编辑1:

来源链接http://www.w3schools.com/xml/xml_syntax.asp

您可以获得与XMl相关的更多信息

示例:

以下是变量在XML文件中不正确编码的内容:

<mail id="a1" to="&<manager>@mycompany.com" …

以下是变量在XML文件中正确编码的内容:

<mail id="a1" to="&amp;&lt;manager&gt;@mycompany.com" …>

答案 1 :(得分:2)

你问“为什么”一个是非法的而另一个不是。关于XML语法的“为什么”问题的答案通常植根于其SGML历史 - XML的设计者希望确保它是SGML的严格子集,并且可以由SGML解析器解析。 SGML允许在XML没有的区域内自由,例如省略属性值周围的引号,这解释了XML继承的一些限制。