Написание D HTML с XSLT - PullRequest
       7

Написание D HTML с XSLT

0 голосов
/ 28 апреля 2020

HTML пишется XSLT.

  • Как разработчик XSLT-любитель

  • Я хочу записать блок javascript в HTML (голова или тело)

  • Так что сценарий может быть выполнен при визуализации HTML (и вот, D HTML).

Я знаю, как использовать скрипт в самом XSLT, но не так, как XSLT может записать блок скрипта в D HTML. Я знаю, как написать HTML от руки, но, конечно, я хочу, чтобы XSLT выполнял тяжелую работу.

Приведенный ниже код - это то, что я ожидал, но не смогу. Он просто отображает код в верхней части страницы.

<head>
    <title>My HTML</title>
    <msxsl:script type="text/javascript" version="1.3">
        <![CDATA[
            var coll = document.getElementsByClassName("collapsible");
            var i;

            for (i = 0; i < coll.length; i++) {
                coll[i].addEventListener("click", function() {
                this.classList.toggle("active");
                var content = this.nextElementSibling;
                if (content.style.display === "block") {
                    content.style.display = "none";
                    } else {
                    content.style.display = "block";
                    }
                });
            }
        ]]>
    </msxsl:script>
</head>

Сценарий отображается в виде текста

Это для работы NHS, так что, пожалуйста, очень приятно ... спасибо.

1 Ответ

0 голосов
/ 28 апреля 2020

Если предполагается, что HTML, создаваемый вашим XSLT, содержит элемент HTML script, то вы буквально вставляете его так же, как вы использовали элемент head или title. В XSLT, XSLT равен XML, вам необходимо убедиться, что ваш встроенный код Javascript не нарушает правила XML, как вы это делали с разделом CDATA, но элемент script будет простым * Элемент 1005 *, а не элемент msxsl:script.

Кроме этого и с использованием xsl:output method="html", в этом нет ничего особенного.

Сомнительно, какой ваш конкретный код в head раздел, использующий var coll = document.getElementsByClassName("collapsible"); и пытающийся обработать эту коллекцию, должен быть достигнут до того, как будут проанализированы какие-либо элементы, но это скорее вопрос правильного использования Javascript и, возможно, обработчика событий или вызова функции вместо встроенного кода.

В зависимости от того, где выполняется ваш XSLT (клиент или сервер), все взаимодействие XSLT и Javascript может быть хрупким, добавление сценария динамически, даже без XSLT, может быть сложной кросс-браузерной задачей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...