html - 为什么DOM中Attr继承自Node?

标签 html xml dom interface attr

根据the DOM Core ,

Attr objects inherit the Node interface, but since they are not actually child nodes of the element they describe, the DOM does not consider them part of the document tree.

还有

The DOM takes the view that attributes are properties of elements rather than having a separate identity from the elements they are associated with

鉴于此,继承 NodeAttr 对象有什么优势?

DOM Spec状态:

Attr nodes participate in a tree for historical reasons; they never have a (non-null) parent or any children and are therefore alone in a tree.

这是部分答案,但我想知道是否有人对 AttrNode 继承和树参与有比简单的“历史原因”更深入的解释。

抱歉,如果这是一个重复的问题,我发现的大多数问题都围绕 Attr 对象的行为,而不是其结构背后的基本原理。

最佳答案

对于“为什么”的问题,你需要非常清楚你是否在问

  • 此决定的潜在好处是什么?或

  • 从历史上看,提出了哪些论点以及为什么个别委员会成员会以他们的方式投票(如果确实有讨论和投票)?

在大多数情况下,第二个问题是无法回答的,尽管在少数情况下(例如 Tim Bray 的带注释的 XML 规范)您至少可以看到其中一位编辑提出的基本原理。

对我来说,这个决定就像是一个妥协。属性与其他节点有许多共同的属性,因此让它们实现相同的接口(interface)是有好处的;但有些包袱你并不真正想要,因为它可能会增加不必要的成本,例如包含指向包含元素的链接。

坦白说,DOM 并不是一个好的设计,很难说它为什么会犯这么多设计错误,只能说它是一个委员会匆忙拼凑出来的。后来的模型(例如 JDOM 和 XOM)要好得多,但遗憾的是不适用于 Javascript。

关于html - 为什么DOM中Attr继承自Node?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72041851/

相关文章:

javascript - 带淡入淡出的随机图像幻灯片

html - CSS .not(selector) 不适用于 span 标签

xml - 我不明白为什么 Web 服务需要使用命名空间进行唯一标识

sql - 如何在子查询中使用 FOR XML?

javascript - 在 Javascript 中传递 DOM 对象时未定义

dom - Dart WebUI 自动生成代码的问题

javascript - 在 Bootstrap 模态窗口上使用 Intro.js 提示,提示显示在模态后面

javascript - 单击链接时更改照片不透明度

mysql - 如何使用 mysql LOAD XML LOCAL INFILE 导入 xml 文件

javascript - Javascript创建文件上传字段什么时候会失败?