Вопрос

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

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

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

Это было полезно?

Решение

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

скрипт.xml:

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

сценарий.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, но я могу помечтать.

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

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

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

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

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

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

Страница:

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

Учебное пособие по XSLT:

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top