Возможно ли выполнение встроенного в XML кода JavaScript для помощи в преобразованиях XSL на стороне клиента (на основе браузера)? Как это делается и насколько это официально?
Объекты Microsoft XML DOM позволяют это на стороне сервера (то есть в ASP / ASP.NET).
Уточнение: Я не имею в виду выполнение сценария HTML DOM после, документ преобразован, и я не имею в виду преобразования XSL инициированный с помощью JavaScript в браузере (например, что показывает страница W3Schools). Я имею в виду фактические блоки сценария, расположенные внутри XSL во время преобразования.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Да. Это зависит от браузера, но вы можете использовать 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 эквивалентная функциональность, но я могу мечтать.