Подтвердить что ты не робот

Почему свойство .tagName DOM возвращает значение в верхнем регистре?

Например, если мы имеем

<html>
    <head>
        <title>FooBar</title>
    </head>
    <body></body>
</html>

Если мы выполняем document.getElementByTagName("title").TagName, то мы будем иметь TITLE (верхний регистр). Хотя html-стандарты рекомендуют писать html-теги в нижнем регистре.

Я знаю, что между ними нет никакой взаимосвязи, но это все еще не имеет смысла.

Есть ли причина, по которой DOM должен возвращать имена тегов в верхнем регистре?

4b9b3361

Ответ 1

Технически, это указано в DOM Level 1:

HTML DOM возвращает tagName элемента HTML в канонической форме в верхнем регистре, независимо от случая в исходном HTML-документе.

Согласование имен тегов верхнего регистра, вероятно, связано с наследием, когда HTML был ранее разработан на основе SGML, а типы элементов были объявлены в верхнем регистре. См. этот раздел спецификации HTML 4.01, обсуждающий SGML, HTML и его синтаксис, а также, например, HTML 4.01 Строгое определение типа doctype. Любые реализации DOM, поддерживающие HTML, последуют примеру.

Обратите внимание, что имена тегов в нижнем регистре явно требуются только в XHTML (но не в XML), и авторам обычно рекомендуется писать строчные теги для удобного переноса между HTML/XHTML, а также улучшать читаемость. Однако эта рекомендация не встречается в спецификации; все это говорит о том, что имена тегов не зависят от регистра только в HTML, а не XHTML и XML.