Cytując z sekcji Rozszerzalność specyfikacji HTML5 :
W przypadku funkcji na poziomie znaczników, które mogą być ograniczone do serializacji XML i nie muszą być obsługiwane w serializacji HTML, dostawcy powinni użyć mechanizmu przestrzeni nazw do zdefiniowania niestandardowych przestrzeni nazw, w których obsługiwane są niestandardowe elementy i atrybuty.
Jeśli więc używasz serializacji XML HTML5, możesz zrobić coś takiego:
<greeting xmlns="http://example.com/customNamespace">Hello!</greeting>
Jeśli jednak używasz składni HTML, masz znacznie większe możliwości w zakresie tego, co możesz zrobić.
W przypadku funkcji na poziomie znaczników, które są przeznaczone do użycia ze składnią HTML, rozszerzenia powinny być ograniczone do nowych atrybutów w postaci „x-vendor-feature” [...] Nie należy tworzyć nowych nazw elementów.
Ale te instrukcje są przede wszystkim skierowane do dostawców przeglądarek, którzy prawdopodobnie zapewnią styl wizualny i funkcjonalność dla dowolnych niestandardowych elementów, które zdecydują się stworzyć.
Jednak dla autora, chociaż osadzenie niestandardowego elementu na stronie (przynajmniej w serializacji XML) może być legalne, nie dostaniesz nic więcej niż węzeł w DOM. Jeśli chcesz, aby element niestandardowy faktycznie coś zrobił lub był renderowany w specjalny sposób, powinieneś przyjrzeć się specyfikacji Elementy niestandardowe .
Aby uzyskać bardziej delikatny podkład na ten temat, przeczytaj wprowadzenie do składników sieci Web , które zawiera również informacje o Shadow DOM i innych powiązanych specyfikacjach. Te specyfikacje są jeszcze projekty pracuje w tej chwili - można zobaczyć aktualny stan tutaj - ale są one aktywnie rozwijany.
Na przykład prosta definicja greeting
elementu może wyglądać mniej więcej tak:
<element name="greeting">
<template>
<style scoped>
span { color:gray; }
</style>
<span>Simon says:</span>
<q><content/></q>
</template>
</element>
Mówi to przeglądarce, aby wyświetlała treść elementu w cudzysłowach i poprzedzona tekstem „Simon mówi:”, który ma styl szary. Zazwyczaj taka niestandardowa definicja elementu jest przechowywana w osobnym pliku HTML, który importujesz za pomocą łącza.
<link rel="import" href="greeting-definition.html" />
Chociaż możesz również dołączyć go w linii, jeśli chcesz.
Stworzyłem roboczą demonstrację powyższej definicji za pomocą biblioteki wypełniaczy Polymer, którą można zobaczyć tutaj . Zauważ, że używa to starej wersji biblioteki Polymer - nowsze wersje działają zupełnie inaczej. Jednak ze względu na to, że specyfikacja jest wciąż w fazie rozwoju, i tak nie polecam go używać w kodzie produkcyjnym.