Страницы

Поиск по вопросам

среда, 27 ноября 2019 г.

Правило написания html-тега

#html


Вопрос звучит странно, я сейчас все объясню. 

Вот смотрите вы можете писать теги которые определены стандартом например: ,,,
,, и т.п. Но вы можете в принципе писать свои теги не определенные стандартом к примеру: , , и т.п Однако мы можем использовать не любые символы в "своих" тегах к примеру: <0car>, <-car>, <машина> - все это будет обработано браузером так: "<твой_тег>" Но вернемся к примеру где теги будут корректно приняты, можно также писать или или - ошибок нет браузер корректно их отображает в своем DOM дереве. Я бы хотел найти правила которые разъясняли поведение моих примеров Из ресурсов где я искал это https://html.spec.whatwg.org Однако тут непонятно почему вторым пунктом полностью не описано каким должен быть первый символ, а какие последущие https://html.spec.whatwg.org/multipage/syntax.html#start-tags Но во втором пункте мы видим ссылку и она нас перекидывает на абзац который гласит: Tags contain a tag name, giving the element's name. HTML elements all have names that only use ASCII alphanumerics. In the HTML syntax, tag names, even those for foreign elements, may be written with any mix of lower- and uppercase letters that, when converted to all-lowercase, matches the element's tag name; tag names are case-insensitive. Теги содержат имя тега, дающее имя элементу. Все элементы HTML имеют имена, которые используют только буквенно-цифровые символы ASCII. В синтаксисе HTML имена тегов, даже те, что используются для чужих элементов, могут быть записаны любым сочетанием букв нижнего и верхнего регистра, которые при преобразовании во все строчные буквы соответствуют имени тега элемента; Имена тегов не чувствительны к регистру. Но как вы можете помнить я приводил примеры которые не только содержат ASCII alphanumerics, как это понимать?


Ответы

Ответ 1



Спеки говорят следующее: Первым символом имени тега должна быть буква ASCII, иначе ошибка. Поведение при ошибке тоже описывается. Потому тег <машина> у вас превращается в тыкву. Следующими символами имени тега могут быть любые, кроме перечисленных включая пробельные символы, слеш /, восклицательный знак и >. Натурально, на все последующие символы не накладывается никаких других каких-то особых ограничений. Потому вы видите что тег обрабатывается без ошибок. Дальше в определении HTML элемента мы читаем что он может состоять только из букв и цифр ASCII. И в том же абзаце читаем что есть ещё и другие элементы, которые, как можно понять из текста, подчиняются каким-то своим правилам. Цитата: In the HTML syntax, tag names, even those for foreign elements, may be written with any mix of lower- and uppercase letters that, when converted to all-lowercase, matches the element's tag name; tag names are case-insensitive. Обратите внимание на использования may, что значит могут, а не shall, должны. Один из видов других элементов - это custom elements. Для них можно найти более конкретное описание ограничений на используемые символы: "-" | "." | [0-9] | "_" | [a-z] | #xB7 | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x203F-#x2040] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] Кириллица располагается в диапазоне U+0400–U+04FF, который, как легко видеть, входит в разрешенные. Потому, да: вы можете использовать кириллицу в названиях тегов везде кроме случая первого символа. Первый символ имени тега должен быть из диапазона [a-z], строго. Чтобы вообще не было никаких сомнений, документация приводит пример: Apart from these restrictions, a large variety of names is allowed, to give maximum flexibility for use cases like or . В этой цитате явно и однозначно говорится что вы можете использовать теги вида или .

Ответ 2



Боюсь то что вы ищите написано нигде: browsers are known to tolerate and try to interpret all kinds of broken markup. Это работа движка браузера(советую попробовать ваши теги в разных движках: IE8/9/11 Edge Safari FireFox Chromium) и сравнить результаты. это удобно сделать тут Недавно боролся с вопросом можно ли ставить вне или оказывается нельзя, но большинство движков браузеров поймут что я сделал ошибку и переместят в Подробнее тут.

Комментариев нет:

Отправить комментарий