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 软件进行互操作。