Question

Est-il possible d'exécuter du code JavaScript incorporé au format XML pour faciliter les transformations XSL côté client (sur le navigateur)? Comment se fait-il et à quel point est-il officiel?

Les objets DOM XML de Microsoft le permettent côté serveur (c'est-à-dire dans ASP / ASP.NET).

Clarification: je ne veux pas dire que les scripts HTML DOM sont exécutés après après la transformation du document, pas plus que les transformations XSL lancées par JavaScript dans le navigateur (par exemple ce que W3Schools page montre). Je fais référence aux blocs de script réels situés dans le fichier XSL au cours de la transformation.

Était-ce utile?

La solution

Pour intégrer JavaScript à l'aide de la transformation, vous pouvez utiliser < xsl: script > ;, mais il est limité à la mise en oeuvre des objets XML de Microsoft. Voici un exemple :

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>

Le résultat dans Internet Explorer (ou si vous utilisez simplement MSXML à partir de COM / .NET) est:

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

Il ne semble pas prendre en charge les constructions de modèle XSL habituelles et l'ajout du nœud racine oblige MSXML à passer en quelque sorte en mode standard où cela ne fonctionnera pas.

Je ne sais pas s'il existe une fonctionnalité équivalente dans le format XSL standard, mais je peux rêver.

Autres conseils

Je ne pense pas que vous puissiez exécuter du code JavaScript incorporé dans des documents XML. Comme mentionné dans helios, vous pouvez effectuer la transformation à l’aide de JavaScript.

JavaScript est dans la plupart des cas incorporé sous la forme CDATA, qui est généralement utilisé après que la transformation XSL a eu lieu. Si je comprends bien, vous voulez un exécutable & Lt; script & Gt; balise dans votre XML.

Vous pouvez utiliser des paramètres et des modèles XSL si vous souhaitez davantage de contrôle sur vos transformations. Vous pouvez définir ces valeurs dans votre XSLT, puis les transmettre à exec (). Mozilla supporte les paramètres de réglage en XSL, mais je ne suis pas sûr de savoir autres navigateurs.

De plus, JavaScript / XSLT inter-navigateurs est une douleur au cou. L'interface JavaScript / XSLT de Mozilla est très différente de IE's , vous voudrez peut-être vous fier à une bibliothèque indépendante du navigateur, telle que XSLT de jQuery .

Oui. Cela dépend du navigateur, mais vous pouvez utiliser Javascript. Il existe un petit tutoriel pratique sur w3schools.com. Cela fait partie du tutoriel XSLT.

La page:

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

Le didacticiel XSLT:

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

Ce site sera plus utile que moi. Bonne chance!

Je doute que vous trouviez ce que vous cherchez si & "officiel &"; signifie " basé sur des standards. " Ce que vous décrivez est un langage de script agent-utilisateur qui doit être analysé et exécuté lors de l'analyse d'une feuille de style. Si votre objectif est de simplifier XSLT en effectuant le sale boulot en Javascript, vous feriez peut-être mieux d'essayer de générer le XSLT en javascript, puis d'utiliser un wrapper de classe pour analyser le résultat via son propre analyseur XSLT.

C’est bien sûr beaucoup plus de travail que celui auquel vous avez probablement souscrit, mais si vous êtes convaincu de le vouloir, je jetterai un coup d’œil à Micro-modèles Javascript de John Resig pour stocker de manière dynamique XSLT compatible avec les modèles dans votre javascript.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top