2016-11-14 108 views
0

如何在一个XML文件中指定空元素: DTD:XML DTD。空元素

<!ELEMENT WARNING EMPTY> 

XML:

<WARNING /> 

или

<WARNING></WARNING> 

两者都被解析器接受为正确的。

+3

问题是什么?事实上,这两个元素都没有内容,即它们是空的。这意味着''和''是合法的考虑你的DTD。 – potame

+0

@potame这不是问题。这是一个问题。如果两个元素都合法,哪一个更喜欢? –

+1

我自己的偏好会去'',因为它没那么冗长。但我会坚持:两者都是一样的。 – potame

回答

1

XML规范明确指出,您给出的两种表单应视为等同。见https://www.w3.org/TR/xml/#sec-starttags

它推荐(与A应)的配对标签形式<e></e>用于声明为能够有内容和元素的单标签形式<e/>元素宣布为空。在既没有DTD也没有Schema的应用程序中,这种区别是不可用的,我没有这样的印象,即任何人都不关注规范在这个问题上的建议。 (这在当时似乎是个好主意。)

[附录,稍后]我最近有机会再次看看规范的相关部分,一位朋友提醒我注意这样一个事实, <e/>用于声明为EMPTY的元素标记为“For interoperability”,该规范将其定义为“为了增加在XML之前成功与SGML软件进行交互操作的可能性”。这似乎解释了为什么很少有人遵循所描述的模式:现在很少有人需要与1998年以前开发的SGML软件进行交互操作。