Я новичок в Angular и пытаюсь понять, что означают префиксы "x-" и "data-". В документации по директивам (http://docs.angularjs.org/guide/directive) говорится, что эти префиксы сделают директиву "совместимым с HTML-валидатором". Что именно это означает?
Как атрибуты префиксы "x-" и "data-" используются в AngularJS
Ответ 1
Спецификация HTML5 допускает произвольные атрибуты, если они имеют префикс данных, например:
<div data-myattribute=""></div>
В то время как это было бы неверно HTML5:
<div myattrbute=""></div>
Подробнее об атрибутах данных см. здесь.
Что касается атрибутов "x-", я думаю, вы имеете в виду атрибуты и элементы "x:", которые относятся к проверке XHTML...
Чтобы развернуть это, если бы вы (по какой-то причине) использовали XHTML, вы можете определить пользовательские атрибуты с помощью namespacing так же (и я просто суммирую суть здесь):
<html xmlns:x="http://sample.com/mynamespace">
<body>
<div x:whatever=""></div>
<x:mytag></x:mytag>
</body>
</html>
где URL-адрес в xmlns действительно просто предотвращает конфликты между подобными элементами. Кроме того, DTD для пользовательских элементов и атрибутов может быть предоставлен для целей проверки в качестве части вашего объявления DOCTYPE.
* поведение в браузерах будет меняться с помощью этого подхода xmlns.
В целом: В большинстве браузеров, выпущенных за последние три года или в IE8 +, вам не придется беспокоиться об этом. Только в очень конкретных ситуациях вы действительно будете волновало.
Ответ 2
Из спецификации HTML5: http://www.w3.org/html/wg/drafts/html/master/single-page.html
Имена атрибутов, начинающиеся с двух символов "x-", зарезервированы для использования пользовательского агента и гарантированно никогда не будут формально добавлены к язык HTML.
также:
Для функций уровня разметки, предназначенных для использования с синтаксисом HTML, расширения должны быть ограничены новыми атрибутами формы "
x-vendor-feature
", где поставщик - короткий строка, которая идентифицирует поставщика, ответственного за расширение, а функция - имя функции. Не следует создавать новые имена элементов. Использование атрибутов для таких расширения позволяют только расширениям от нескольких поставщиков сосуществовать на одном элементе, что было бы невозможно с элементами. Использование формы "x-vendor-feature
" позволяет расширения без риска противоречия с будущими дополнениями к спецификации.