Most browsers seem to allow you to create any element tag you like, and add any attribute name you like to elements. For example:
<
From W3C specification:
Authors must not use elements, attributes, or attribute values that are not permitted by this specification or [other applicable specifications][1], as doing so makes it significantly harder for the language to be extended in the future.
However, while the initial source of the page body (before angular processes an ng-app element) may not adhere to the W3C standards, if you use replace: true
in directives, custom elements are replaced by a template HTML, which can be valid. So, in this case, you can think about an angular element as just a placeholder that is replaced with the terminal HTML output.