#html #css #dom
#HTML #css #dom
Вопрос:
Вот предложение
Концепция псевдокласса вводится, чтобы разрешить выбор на основе информации, которая находится за пределами дерева документов или которая не может быть выражена с помощью других простых селекторов.
из http://www.w3.org/TR/selectors/#pseudo-classes
Имеет ли «дерево документов» то же значение, что и DOM, или это что-то другое?
Комментарии:
1. Дерево документов является частью DOM. DOM содержит всю объектную модель документа — например, API, такие как timers (setTimeout) и XMLHttpRequest, являются частью DOM, но не являются частью дерева документов. Дерево документов — это та часть, которая фактически представляет ваш хорошо представленный документ.
Ответ №1:
ДА.
DOM обозначает объектную модель документа и описывает структуру дерева элементов, которые формируют (HTML) документ.
Когда спецификация CSS говорит о дереве документов, это относится к тому же самому.
В приведенном вами предложении в документе говорится, что информация, например, была ли посещена ссылка или нет, не хранится в узле DOM.
Взгляните на этот скриншот инспектора Firebug, показывающий часть DOM этого вопроса и свойства DOM.
В CSS вы можете создать этот селектор и применить стили к ссылке, которую посетили:
a:visited {
...
}
В visited
DOM-узле нет атрибута, к которому Javascript тоже мог бы получить доступ, поэтому эта информация находится за пределами DOM-дерева.
Комментарии:
1. В принципе, согласно другому ответу, «дерево документов» является гипернимным для XML / HTML DOM, поэтому ответ может быть положительным. Но DOM также может применяться к другим языкам, и у этих других языков нет дерева документов?
2. @Wolfpack’08: конечно, другие языки тоже могут иметь дерево документов, но это зависит от языка (разметки). И в принципе не каждая структура данных, которая может быть представлена в виде дерева, является «деревом объектов документа «: например, программный код (Java, Javascript, Python, C, …) может быть представлен в виде древовидной структуры, но описывать его как » объекты , образующие документ » немного странно — эти структурывызывается AST (абстрактное синтаксическое дерево).
Ответ №2:
Для целей использования CSS с HTML, называете ли вы это деревом документов или деревом DOM, не имеет большого значения. Как автору, работающему с HTML и CSS, все, что вам нужно знать, это то, что дерево — это структура элементов, отмеченных в HTML.
DOM, сокращение от Document Object Model, представляет собой набор API, с помощью которых можно получить доступ к элементам HTML или XML-документа и изменять их. Строго говоря, DOM сам по себе не является деревом документов (или деревом документов, если на то пошло), а интерфейсом к указанному дереву (хотя само дерево может быть реализовано в соответствии с DOM). Посмотрите, что такое объектная модель документа? в спецификации DOM для подробного объяснения.
Кроме того, дерево документов не обязательно может быть представлено или взаимодействовать с DOM, поскольку CSS может использоваться для стилизации вещей, отличных от HTML или XML DOM деревьев. DOM предоставляет только одну реализацию концепции «дерева документов». Вот почему спецификация селекторов (и связанные с ней спецификации) никогда не ссылается на дерево документов как на «DOM» или «дерево DOM», за исключением случаев, когда конкретно упоминается стандарт DOM.
Таким образом, определение «дерева документов» в соответствии с CSS можно найти в спецификации CSS2.1:
Дерево документов
Дерево элементов, закодированных в исходном документе. Каждый элемент в этом дереве имеет ровно одного родителя, за исключением корневого элемента, у которого его нет.
Когда язык исходного документа — HTML или XML, а используемая реализация — DOM, результирующее дерево документов является деревом DOM.
Комментарии:
1. Я хочу не согласиться по нескольким причинам. В основном, в прямом противоречии с тем, что вы говорите: DOM — это сокращение от XML DOM, которое распространяется на (afaik), все HTML-подобные языки, поддерживающие CSS. Отдельно, скорее риторический вопрос: ваш источник кажется принудительным (это W3, а не CSS, и в приведенном вами определении нет ничего, что ограничивало бы дерево документов HTML). W3 также определяет DOM как XML DOM. Я не эксперт.
2. @Wolfpack’08: Да, я знал, что мне придется упоминать XML напрямую, а не только HTML, поэтому я это исправил. Однако мне трудно понять вашу риторику.
3. @Wolfpack’08: Гм … потому что CSS является стандартом W3C? Почему это было бы странно? С другой стороны, было бы излишним говорить «W3C CSS». И CSS может быть реализован кем угодно для любого языка, но это не меняет того факта, что сам CSS остается стандартом W3C.
4. @Wolfpack’08: А, хорошо. CSS действительно язык. Однако язык определяется его спецификацией (сокращенно «спецификацией»). Эта спецификация является работой; она поддерживается ее автором рабочей группой W3C CSS. Вы можете указать название работы или имя ее автора (или и то, и другое). В моем случае я предпочитаю ссылаться на работу, потому что более важно указать, откуда или из чего взята цитата, а не кто ее написал.
5. DOM предназначен для использования с любым языком программирования. Чтобы обеспечить точную, независимую от языка спецификацию интерфейсов DOM, мы решили определить спецификации в группе управления объектами (OMG) IDL [OMG IDL], как определено в спецификации CORBA 2.3.1 [CORBA]. В дополнение к спецификации OMG IDL мы предоставляем языковые привязки для Java [Java] и ECMAScript [ECMAScript] (стандартный для отрасли язык сценариев, основанный на JavaScript [JavaScript] и JScript [JScript]). — w3.org/TR/DOM-Level-3-Core/introduction.html