Как использовать пользовательские элементы без дефиса в их названии?

У меня есть файл XML, и я хочу вставить его в HTML. В XML есть теги <book>, поэтому я хочу определить пользовательский элемент <book>.

Однако кажется, что дефис (-) в названии обязателен...

Я не хочу писать теги вроде <my-book> в файле XML.

Есть ли способ?

Используйте XSLT или какой-либо другой метод для преобразования XML после его загрузки.

Heretic Monkey 10.12.2020 17:21

пользовательские элементы должны содержать дефис...

thebjorn 10.12.2020 17:24
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
2
367
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Пользовательские элементы должны содержать дефис.

Но ничто не мешает вам использовать нотацию <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>

Другие вопросы по теме