xml - 什么是空元素?

标签 xml dom

根据 XML 规范,这是空元素的定义:

An element with no content is said to be empty.] The representation of an empty element is either a start-tag immediately followed by an end-tag, or an empty-element tag.

(参见:http://www.w3.org/TR/REC-xml/#NT-content)

现在,我可以毫无问题地理解空元素标签:<i-am-empty/>不可能有误解。但在我看来,该标准在另一种情况下自相矛盾:一方面,它说任何没有 content 的标签。是空的,另一方面它表示这可以用一个开始标签表示,紧接着是一个结束标签。但是如果我们看一下 content 的定义:

[43] content ::= CharData? ((element | Reference | CDSect | PI | Comment) CharData?)*

在我看来content由两个可选部分组成,CharData?和一组()* .但由于这两个部分都是可选的,这意味着没有任何内容(如缺少字符)与此作品匹配。因此,如果我尝试将此内容定义与 <am-i-empty-or-not></am-i-empty-or-not> 中的任何内容相匹配我会得到一个积极的匹配。所以,一方面这是一个空标签,因为它是“一个开始标签紧跟一个结束标签”,另一方面它不是空的,因为在标签之间我可以肯定地匹配生产规则的定义[ 43] 对于内容,在这种情况下它包含内容,这意味着它不能为空。

谁能解释一下哪些规则优先?有人知道对此有不同意见的任何 DOM 或解析器实现吗?

最佳答案

But since both these parts are optional, it would mean that nothing (as in, absence of characters) matches this production.

这可能是真的,但规范中关于这个问题的措辞非常明确。下一段中甚至还有空元素的示例。

<IMG align="left"
 src="http://www.w3.org/Icons/WWW/w3c_home" />
<br></br>
<br/>

所以唯一的办法(在这种情况下,用周围的措辞和例子)阅读

An element with no content

将包括“(与生产相匹配的)完全为空的内容”(即零长度,甚至没有空白)。

关于xml - 什么是空元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2279501/

相关文章:

php - 节点不再存在于 SimpleXML 中

Javascript 覆盖问题类 xml

java - XML 中的 TestNG 值集

javascript - 如何避免多次遍历相同的 DOM 路由?

javascript - 在 Javascript 的值函数中使用数组键?

css - 如何在 Chrome 中调整文本字段的大小?

c# - 解析 XML : Colon in my element causes XPath to miss it

xml - 如何在另一个 XSD 中使用命名空间定义的类型? (通过命名空间引用它)

javascript - 在 Angular 中添加带有指令的元素

java - 如何在标签完好无损的情况下解析 html