5

Входит ли custom elements в группу normal elements?

Из одной главы я понял что существуют несколько типов групп элементов, самая большая это normal elements. Но я так и не понял входит ли туда custom elements.

В пункте сказано:

Normal elements: All other allowed HTML elements are normal elements

В этой ссылке говорится что любые определения в пространстве содержатся в http://www.w3.org/1999/xhtml

А также цитата:

The term "HTML elements" refers to any element in that namespace, even in XML documents.

Но вот определения custom elements нет в http://www.w3.org/1999/xhtml , значит ли это что custom elements не входит в группу normal elements?

MaximPro
  • 3,913

1 Answers1

2

Все исходит из того, что XHTML является подмножеством языка XML. В языке XML вы можете создавать и использовать абсолютно любые теги, которые только ваша душа пожелает. Это Custom Elements:

<?xml version="1.0"?>
<Планеты>
  <Планета ID="1">
    <Название>Меркурий</Название>
  </Планета >
  <Планета ID="2">
    <Название>Сатурн</Название>
  </Планета >
</Планеты>

А в XHTML прописаны только известные браузерам теги для которые он может генерировать внешний вид, эти элементы называются Normal Elements:

<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
  <head>
    <title>Заголовок</title>
  </head>
  <body>
    Содержимое документа
  </body>
</html>

То есть по факту Custom Elements это огромная группа элементов в которую так же (теоретически) входят и Normal Elements. Но шанс встретить Custom Elements в разметке мизерный.

Правда стандарт HTML накладывает ограничения на имена Custom Elements: RuSO: Нестандартные HTML теги

Alex Krass
  • 17,744
  • 1
    https://ru.stackoverflow.com/a/450102/178988 – Qwertiy Jul 16 '18 at 07:41
  • Про подмножество ясно. Но вы так и не ответили на вопрос: входит ли custom elements* в группу normal elements*? – MaximPro Jul 16 '18 at 08:00
  • @Qwertiy а это просто правила которые формируют корректный custom element. По факту тег можно любой написать только он сформируется некорректно. Прототип будет другой. – MaximPro Jul 16 '18 at 08:02
  • То есть глава 12 живет отдельно от главы 4.13? Хотя смотрите если внимательно присмотреться то в главе 4 в целом описываются HTML elements (более конкретно). А если так то custom elements это HTML элемент как и любой другой (
    ,,

    итд). От сюда выходит закономерный вопрос почему это custom elements не является HTML elements?

    – MaximPro Jul 16 '18 at 08:26
  • @MaximPro, просто зачем вам это? Есть язык высшего порядка XML и на его основе сделан HTML. В грубом приближении это и есть XML в котором описан список необходимых тегов, а так же спецификация, которая поясняет как этот список тегов должен обрабатываться браузером и показываться визуально пользователю. Но XML может включать кучу тегов и в данном случае это попытка их впихнуть в модель HTML - вы делаете их частью HTML на минимальном уровне. Эта часть написана для разработчиков браузеров и говорит как им поступать, если они встретили незнакомый тег или они хотят внедрить еще что-то: SVG, MathML. – Alex Krass Jul 16 '18 at 11:29
  • Мне интересно поэтому и спрашиваю. SVG, MathML - foreign elements. В данном случае же спецификация HTML, а не XML. Опять же вы конкретно и не ответили на предыдущий комментарий. – MaximPro Jul 16 '18 at 11:58
  • @MaximPro спецификация в первую очередь написана для разработчиков браузеров, а не для тех, кто хочет упорядочить свои знания. Обратите внимание в каждом абзаце есть слова: this section is non-normative. В данном случае глава включена для того, чтобы знать как работать с элементом, который не прописан в HTML Elements и не является часть normal elements. Custom elements относятся к категории Custom которые являются Dom Elements и прописан вообще в DOM Standard. Поэтому мой ответ остается прежним: нет, не входят. Вы слишком формально подходите к документу, который на это не рассчитан. – Alex Krass Jul 16 '18 at 13:40
  • Ага, вашу позицию понял...логично, исходя из того какую я логику изначально приложил. Я пока подожду мало ли еще кто захочет ответить. Если ответов не будет я приму ваш ответ как окончательный. – MaximPro Jul 16 '18 at 16:15
  • Еще хочу кое-что спросить. Я не нашел категории Custom в https://dom.spec.whatwg.org/ Она где-то в другом месте находится? – MaximPro Jul 17 '18 at 09:53
  • @MaximPro про Custom Elements я взял отсюда, в заметке ссылки ведут в DOM и другие документы связанные с Custom Elements (в том числе на упомянутую HTML Specification 4.13). В DOM это описание 4.9. Interface Element и там дальше при наведении на custom еще куча ссылок на различные части документа. Обратите внимание на Abstract в ссылке, в нем указано, что это все-таки DOM elements в документе. – Alex Krass Jul 17 '18 at 10:08
  • Ага, то есть конкретно категории под названием custom нет, я понял. А и еще такой вопрос: эти правила https://html.spec.whatwg.org/multipage/syntax.html#start-tags применяются к custom elements? – MaximPro Jul 17 '18 at 10:28
  • @MaximPro да, применяются. – Alex Krass Jul 17 '18 at 10:51
  • Чтобы уточнить терминологию, есть категория custom или нет? В моем понимании есть просто раздел под названием custom elements, который описывает поведение пользовательских элементов так? Или все таки есть категория custom? Спрашиваю, для того, чтобы каши в голове не было. – MaximPro Jul 17 '18 at 11:40
  • @MaximPro просто custom нет. Есть категория Custom Elements, это категория DOM Elements у которых внутреннее состояние custom element state установлено в значение custom. Я это понимаю как-то так из описания W3C. – Alex Krass Jul 17 '18 at 12:01
  • Ага, все понятно – MaximPro Jul 17 '18 at 12:10