У меня есть файл XML, и я хочу вставить его в HTML. В XML есть теги <book>
, поэтому я хочу определить пользовательский элемент <book>
.
Однако кажется, что дефис (-
) в названии обязателен...
Я не хочу писать теги вроде <my-book>
в файле XML.
Есть ли способ?
пользовательские элементы должны содержать дефис...
Пользовательские элементы должны содержать дефис.
Но ничто не мешает вам использовать нотацию <book>
в вашем XML, а затем на стороне клиента преобразовать все эти неизвестные теги во что-то другое. Но вы получите FOUC
<my-book-elements>
<book id = "The World according to Garp" />
<book id = "The war of the worlds" />
<book id = "Around the world in eighty days" />
Bye Bye World
</my-book-elements>
<script>
customElements.define('my-book-elements', class extends HTMLElement {
connectedCallback() {
setTimeout(() => { // make sure we can work with the inner DOM nodes
this.append(...[...this.querySelectorAll("*")].map(node => {
let book = document.createElement("my-" + node.localName);
book.id = node.id;
//node.remove();// not required, innerHTML will replace everything
return book;
}));
});
}
});
customElements.define("my-book", class extends HTMLElement {
connectedCallback() {
this.innerHTML = `<div>${this.id}</div>`;
}
});
</script>
Используйте XSLT или какой-либо другой метод для преобразования XML после его загрузки.