Как атрибуты префиксы "x-" и "data-" используются в AngularJS

Я новичок в Angular и пытаюсь понять, что означают префиксы "x-" и "data-". В документации по директивам (http://docs.angularjs.org/guide/directive) говорится, что эти префиксы сделают директиву "совместимым с HTML-валидатором". Что именно это означает?

Ответ 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" позволяет расширения     без риска противоречия с будущими дополнениями к спецификации.