Почему свойство.tagName DOM возвращает значение в верхнем регистре?
Например, если у нас есть
<html>
<head>
<title>FooBar</title>
</head>
<body></body>
</html>
Если мы делаем document.getElementByTagName("title").TagName
тогда у нас будет TITLE
(верхний регистр). В то время как стандарты HTML рекомендует писать теги HTML в нижнем регистре.
Я знаю, что между ними нет никакой связи, но это все равно не имеет смысла.
Есть ли причина, по которой DOM должен возвращать имена тегов в верхнем регистре?
1 ответ
Технически, это необходимо в DOM Level 1:
HTML DOM возвращает
tagName
HTML-элемента в канонической заглавной форме, независимо от регистра в исходном HTML-документе.
Соглашение об именах тегов в верхнем регистре, вероятно, вытекает из прежней версии, когда HTML ранее разрабатывался на основе SGML, а типы элементов были объявлены в верхнем регистре. См. Этот раздел спецификации HTML 4.01, в котором обсуждаются SGML, HTML и его синтаксис, а также, например, определение строгого типа документа HTML 4.01. Любые реализации DOM, поддерживающие HTML, будут следовать этому примеру.
Обратите внимание, что строчные имена тегов требуются только явно в XHTML (но не в XML), и авторам обычно рекомендуется писать строчные теги для облегчения переноса между HTML/XHTML, а также для улучшения читабельности. Тем не менее, эта рекомендация не встречается в спецификации; все, что он говорит, - то, что имена тега нечувствительны к регистру только в HTML в противоположность XHTML и XML.