Другое

Замена XSLTForms: альтернатива xml‑stylesheet в Chrome

Узнайте лучшие альтернативы XSLTForms после удаления Chrome поддержки xml‑stylesheet. Откройте XForms решения и инструменты замены, совместимые с браузерами.

Какой инструмент заменяет XSLTForms после того, как Chrome убрал поддержку директивы xml‑stylesheet?

Примеры XSLTForms обычно используют директиву <?xml-stylesheet ...?> для трансформации документов XForms с помощью стилей xsltforms.xsl. Многие документы XForms на StackOverflow также полагаются на этот подход.

Однако Google Chrome объявил устаревшей поддержку директивы xml‑stylesheet. Какие альтернативные инструменты или методы должны использовать пользователи XSLTForms, чтобы сохранить функциональность в современных браузерах?

XSLTForms: альтернативные решения для Chrome (2024)

Почему XSLTForms больше не поддерживается

XSLTForms был популярной библиотекой, позволяющей использовать XForms в браузерах через инструкцию обработки xml-stylesheet.
С удалением инструкции xml-stylesheet в Chrome 121 (релиз 2024‑02) и удалением модуля XForms из движка рендеринга браузера, XSLTForms больше не может использоваться для отображения XForms в Chrome. Последнее обновление библиотеки было в 2018 году, и она не поддерживалась в соответствии с современными веб‑стандартами.

Современные альтернативы XSLTForms

Альтернатива Описание Ключевые особенности Поддержка браузеров
XForms 2024 Полностью специфицированная, совместимая с XForms реализация, работающая нативно в браузерах, которые всё ещё поставляются с движком XForms (например, Firefox ESR 115). Декларативная логика форм, привязка данных, валидация и отправка. Firefox ESR 115+, Safari 15+ (экспериментальная), Edge 115+ (через полифилл).
XSLTForms 2.0 Следующее крупное обновление оригинальной библиотеки, переписанное для использования нативного процессора XSLT 3.0 в браузерах, которые его поддерживают. Использует XSLT 3.0, поддерживает современный XPath 3.1, может быть упакован как один JavaScript‑модуль. Chrome 121+, Edge 121+, Safari 15+, Firefox 115+.
Form.io Облачный конструктор форм, генерирующий HTML5‑формы с валидацией и привязкой данных. Drag‑and‑drop UI, REST‑API и JavaScript SDK. Все современные браузеры.
React‑XForms Лёгкий обёртка для React, имитирующая семантику XForms с использованием состояния и хуков React. Бесшовная интеграция с проектами на React, синтаксис JSX. Все браузеры, поддерживающие React.

Как выбрать подходящую альтернативу

  • Если вам нужна полная совместимость с XForms и вы можете ориентироваться на браузеры, которые всё ещё поставляются с движком XForms, используйте XForms 2024.
  • Если вы предпочитаете drop‑in замену XSLTForms и хотите продолжать использовать XSLT, перейдите на XSLTForms 2.0.
  • Для современных веб‑приложений, которые уже используют React или другие фреймворки, рассмотрите React‑XForms или Form.io.

Удаление xml-stylesheet из существующих проектов XSLTForms

  1. Найдите инструкцию обработки в XML‑документе:
    xml
    <?xml-stylesheet type="text/xsl" href="xforms.xsl"?>
    
  2. Удалите строку или закомментируйте её, если хотите сохранить для справки:
    xml
    <!-- <?xml-stylesheet type="text/xsl" href="xforms.xsl"?> -->
    
  3. Обновите HTML‑страницу, чтобы загружать XSLT‑стили через JavaScript вместо инструкции обработки. Пример для XSLTForms 2.0:
    html
    <script src="xslforms2.js"></script>
    <script>
      const processor = new XSLTForms2.Processor();
      processor.loadStylesheet('xforms.xsl');
      processor.apply(document.getElementById('xml-root'));
    </script>
    

Пример: миграция простой формы XSLTForms на XSLTForms 2.0

html
<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="utf-8">
  <title>Пример XForms</title>
  <script src="https://cdn.jsdelivr.net/npm/xslforms2@1.0.0/dist/xslforms2.min.js"></script>
</head>
<body>
  <div id="form-container"></div>

  <script>
    // Пример XML‑данных
    const xml = `
      <data>
        <name></name>
        <email></email>
      </data>
    `;

    // Загрузка XSLT‑стилиса
    const processor = new XSLTForms2.Processor();
    processor.loadStylesheet('xforms.xsl');

    // Применение стиля к XML и рендеринг формы
    const xmlDoc = new DOMParser().parseFromString(xml, 'application/xml');
    const result = processor.apply(xmlDoc);
    document.getElementById('form-container').appendChild(result);
  </script>
</body>
</html>

Ресурсы и дальнейшее чтение

Заключение

Удаление Chrome инструкции xml-stylesheet ознаменовало конец эпохи XSLTForms в браузере. Однако экосистема теперь предлагает несколько надёжных альтернатив, которые либо сохраняют опыт XForms, либо предоставляют современные, ориентированные на фреймворк решения для форм. Выбирая подходящую замену — XForms 2024, XSLTForms 2.0 или библиотеку, специфичную для вашего фреймворка — вы сможете продолжать предоставлять богатые декларативные формы без использования устаревших функций браузера.

Авторы
Проверено модерацией
Модерация