JavaScript в обработке XSL на стороне клиента?

Возможно ли выполнение встроенного в XML кода JavaScript для помощи в преобразованиях XSL на стороне клиента (на основе браузера)? Как это делается и насколько это официально?

Объекты Microsoft XML DOM позволяют это на стороне сервера (то есть в ASP / ASP.NET).

Уточнение: Я не имею в виду выполнение сценария HTML DOM после, документ преобразован, и я не имею в виду преобразования XSL инициированный с помощью JavaScript в браузере (например, что показывает страница W3Schools). Я имею в виду фактические блоки сценария, расположенные внутри XSL во время преобразования.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
14 237
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Да. Это зависит от браузера, но вы можете использовать Javascript. На w3schools.com есть небольшой, но практический учебник. Это часть учебника XSLT.

Страница:

http://www.w3schools.com/xsl/xsl_client.asp

Учебник XSLT:

http://www.w3schools.com/xsl/default.asp

Этот сайт будет более полезным, чем я. Удачи!

Я не думаю, что вы можете выполнять код JavaScript, встроенный в XML-документы. Как упоминалось в helios, вы можете выполнить преобразование с помощью JavaScript.

В большинстве случаев JavaScript встраивается как CDATA, который обычно используется после, если преобразование XSL имело место. Если я правильно понимаю, вы хотите иметь исполняемый тег <script> в вашем XML.

Вы можете использовать параметры и шаблоны XSL, если вам нужно больше контроля над вашими преобразованиями. Вы можете установить эти значения в своем XSLT, а затем передать их в exec (). Mozilla поддерживает установка параметров в XSL, но насчет других браузеров я не уверен.

Кроме того, кроссбраузерный JavaScript / XSLT - это головная боль. Интерфейс Mozilla JavaScript / XSLT сильно отличается от IE, поэтому вы можете полагаться на независимую от браузера библиотеку, такую ​​как XSLT jQuery.

Я сомневаюсь, что вы найдете то, что ищете, если «официальный» означает «основанный на стандартах». Вы описываете язык сценариев пользовательского агента, который будет анализироваться и выполняться во время синтаксического анализа таблицы стилей. Если ваша цель - упростить XSLT, выполнив грязную работу в Javascript, вам может быть лучше попытаться сгенерировать XSLT в javascript, а затем использовать оболочку класса для анализа результата через собственный синтаксический анализатор XSLT браузера.

Это, конечно, намного больше работы, чем вы, вероятно, подписались, но если вы уверены, что хотите это сделать, я бы посмотрел на Микро-шаблоны Javascript Джона Ресига, чтобы динамически хранить дружественный к шаблону XSLT в вашем javascript.

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

Чтобы встроить JavaScript для помощи в преобразовании, вы можете использовать <xsl: script>, но это ограничено для реализации XML-объектов Microsoft. Вот пример:

scripted.xml:

<?xml version = "1.0"?>
<?xml-stylesheet type = "text/xsl" href = "scripted.xsl"?>
<data a = "v">
    ding dong
</data>

scripted.xsl:

<?xml version = "1.0" encoding = "ISO-8859-1"?>
<html xmlns:xsl = "http://www.w3.org/TR/WD-xsl">
<xsl:script implements-prefix = "local" language = "JScript"><![CDATA[

    function Title()
    {
        return "Scripted";
    }

    function Body(text)
    {
        return "/" + text + "/";
    }

]]></xsl:script>
<head>
    <title><xsl:eval>Title()</xsl:eval></title>
</head>
<body>
    <xsl:for-each select = "/data"><xsl:eval>Body(nodeTypedValue)</xsl:eval></xsl:for-each>
</body>
</html>

Результат в Internet Explorer (или если вы просто используете MSXML из COM / .NET):

<html>
<head>
    <title>Scripted</titlte>
</head>
<body>
    /ding dong/
</body>
</html>

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

Я не уверен, есть ли в стандартном XSL эквивалентная функциональность, но я могу мечтать.

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