XML DTD。空元素
XML DTD. Empty elements
如何在 XML 文件中指定空元素:
DTD:
<!ELEMENT WARNING EMPTY>
XML:
<WARNING />
или
<WARNING></WARNING>
?
两者都被解析器接受为正确的。
XML 规范明确指出,您提供的两种形式将被视为等同的。参见 https://www.w3.org/TR/xml/#sec-starttags
确实建议(应该)成对标签形式 <e></e>
用于声明为能够包含内容的元素,单标签形式 <e/>
用于声明为空的元素.在既没有 DTD 也没有模式的应用程序中,这种区别是不可用的,而且我的印象是没有人关注规范在这个问题上的建议。 (当时看来是个好主意。)
[附录,稍后] 我最近有机会再次查看规范的相关部分,一位朋友提醒我注意一个事实,即 <e/>
用于声明为 EMPTY 的元素的建议被标记为 "For interoperability",规范将其定义为 "in order to increase the chances of successful inter0operation with SGML software that predates XML"。这似乎可以解释为什么很少有人遵循所描述的模式:如今很少有人需要与 1998 年之前开发的 SGML 软件进行互操作。
如何在 XML 文件中指定空元素: DTD:
<!ELEMENT WARNING EMPTY>
XML:
<WARNING />
или
<WARNING></WARNING>
?
两者都被解析器接受为正确的。
XML 规范明确指出,您提供的两种形式将被视为等同的。参见 https://www.w3.org/TR/xml/#sec-starttags
确实建议(应该)成对标签形式 <e></e>
用于声明为能够包含内容的元素,单标签形式 <e/>
用于声明为空的元素.在既没有 DTD 也没有模式的应用程序中,这种区别是不可用的,而且我的印象是没有人关注规范在这个问题上的建议。 (当时看来是个好主意。)
[附录,稍后] 我最近有机会再次查看规范的相关部分,一位朋友提醒我注意一个事实,即 <e/>
用于声明为 EMPTY 的元素的建议被标记为 "For interoperability",规范将其定义为 "in order to increase the chances of successful inter0operation with SGML software that predates XML"。这似乎可以解释为什么很少有人遵循所描述的模式:如今很少有人需要与 1998 年之前开发的 SGML 软件进行互操作。