Mengutip dari bagian Extensibility dari spesifikasi HTML5 :
Untuk fitur tingkat markup yang dapat terbatas pada serialisasi XML dan tidak perlu didukung dalam serialisasi HTML, vendor harus menggunakan mekanisme namespace untuk menentukan ruang nama kustom di mana elemen dan atribut non-standar didukung.
Jadi jika Anda menggunakan serialisasi XML dari HTML5, legal bagi Anda untuk melakukan sesuatu seperti ini:
<greeting xmlns="http://example.com/customNamespace">Hello!</greeting>
Namun, jika Anda menggunakan sintaks HTML Anda jauh lebih terbatas dalam apa yang dapat Anda lakukan.
Untuk fitur tingkat markup yang dimaksudkan untuk digunakan dengan sintaks HTML, ekstensi harus dibatasi pada atribut baru dari bentuk "fitur x-vendor-fitur" [...] Nama elemen baru tidak boleh dibuat.
Tetapi instruksi tersebut terutama diarahkan pada vendor browser, yang dianggap akan menyediakan gaya visual dan fungsionalitas untuk elemen kustom apa pun yang mereka pilih untuk dibuat.
Untuk seorang penulis, meskipun mungkin legal untuk menyematkan elemen khusus di halaman (setidaknya dalam serialisasi XML), Anda tidak akan mendapatkan apa pun selain sebuah simpul di DOM. Jika Anda ingin elemen kustom Anda benar-benar melakukan sesuatu, atau diberikan dengan cara khusus, Anda harus melihat spesifikasi Elemen Kustom .
Untuk primer yang lebih lembut pada subjek, baca Pengenalan Komponen Web , yang juga mencakup informasi tentang DOM Bayangan dan spesifikasi terkait lainnya. Spesifikasi ini masih dalam konsep saat ini - Anda dapat melihat status saat ini di sini - tetapi sedang dikembangkan secara aktif.
Sebagai contoh, definisi sederhana untuk greeting
elemen mungkin terlihat seperti ini:
<element name="greeting">
<template>
<style scoped>
span { color:gray; }
</style>
<span>Simon says:</span>
<q><content/></q>
</template>
</element>
Ini memberitahu browser untuk membuat konten elemen dalam tanda kutip, dan diawali dengan teks "Simon berkata:" yang ditata dengan warna abu-abu. Biasanya definisi elemen khusus seperti ini akan disimpan dalam file html terpisah yang akan Anda impor dengan tautan.
<link rel="import" href="greeting-definition.html" />
Meskipun Anda juga bisa memasukkannya secara inline jika Anda mau.
Saya telah membuat demonstrasi yang berfungsi dari definisi di atas menggunakan perpustakaan Polyfill Polymer yang dapat Anda lihat di sini . Perhatikan bahwa ini menggunakan versi lama dari perpustakaan Polymer - versi yang lebih baru bekerja sangat berbeda. Namun, dengan spesifikasi yang masih dalam pengembangan, ini bukan sesuatu yang saya sarankan untuk digunakan dalam kode produksi.