Дерево документов такое же, как DOM?

Вот предложение

Представлена ​​концепция псевдокласса, позволяющая выбирать на основе информация, которая находится за пределами дерева документов или которая не может быть выраженный с помощью других простых селекторов.

из http://www.w3.org/TR/selectors/#pseudo-classes

"Дерево документов" имеет то же значение, что и DOM, или что-то еще?

Ответ 1

Да.

DOM обозначает модель объекта документа и описывает дерево strcuture элементов, которые формируют документ (HTML).

Когда спецификация CSS говорит о дереве документов, она ссылается на одно и то же.

В предложении, которое вы указали в документе, говорится, что информация, например, была ли ссылка посещена или нет, не хранится в DOM node.

Взгляните на этот снимок экрана инспектора Firebug, который показывает часть DOM этого вопроса и свойства DOM.

Firebug: Document tree excerpt of this question showing the link to the W3C docs and the DOM properties pane

В CSS вы можете создать этот селектор и применить стили к посещенной ссылке:

a:visited {
    ...
}

В DOM node нет атрибута visited, к которому может обращаться Javascript, поэтому эта информация находится вне дерева DOM.

Ответ 2

Для использования CSS с HTML, называете ли вы его деревом документа или деревом DOM, это не имеет большого значения. Как автор, работающий с HTML и CSS, все, что вам нужно знать, это то, что дерево представляет собой структуру элементов, помеченных в HTML.

DOM, сокращенный для Document Object Model, представляет собой набор API-интерфейсов, через которые могут быть доступны и изменены элементы HTML или XML-документа. Строго говоря, DOM сам по себе не является деревом документа (или деревом документа в этом отношении), а интерфейсом к указанному дереву (хотя само дерево может быть реализовано в соответствии с DOM). См. Что такое объектная модель документа? в спецификации DOM для подробного объяснения.

Кроме того, дерево документов необязательно может быть представлено или сопряжено с DOM, поскольку CSS можно использовать для стилей других вещей, кроме деревьев HTML или XML DOM. DOM предоставляет только одну реализацию концепции "дерева документов". Вот почему спецификация Selectors (и связанные спецификации) никогда не относится к дереву документа как "DOM" или "DOM tree", за исключением случаев, когда они относятся к стандарту DOM.

Затем определение дерева документов в соответствии с CSS можно найти в спецификации CSS2.1:

Дерево документов
Дерево элементов, закодированных в исходном документе. Каждый элемент этого дерева имеет ровно один родительский элемент, за исключением корневого элемента, который не имеет.

Когда исходным языком документа является HTML или XML, а используемой реализацией является DOM, результирующее дерево документа является деревом DOM.