Domanda

È possibile eseguire JavaScript incorporato in XML per assistere nelle trasformazioni XSL lato client (basate sul browser)?Come si fa e quanto è ufficiale?

Gli oggetti DOM XML di Microsoft lo consentono sul lato server (ad es.in ASP/ASP.NET).

Una precisazione:Non intendo lo scripting DOM HTML eseguito Dopo il documento viene trasformato, né intendo trasformazioni XSL iniziato tramite JavaScript nel browser (ad es.cosa mostra la pagina W3Schools).Mi riferisco ai blocchi di script effettivi situati all'interno dell'XSL durante la trasformazione.

È stato utile?

Soluzione

Per incorporare JavaScript per facilitare la trasformazione è possibile utilizzare <xsl:script>, but è limitato all'implementazione degli oggetti XML di Microsoft.Ecco un esempio:

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>

Il risultato in Internet Explorer (o se usi semplicemente MSXML da COM/.NET) è:

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

Non sembra supportare i soliti costrutti del modello XSL e l'aggiunta del nodo radice fa sì che MSXML entri in una sorta di modalità standard in cui non funzionerà.

Non sono sicuro che esista una funzionalità equivalente nell'XSL standard, ma posso sognare.

Altri suggerimenti

Non penso che tu possa eseguire codice JavaScript incorporato all'interno di documenti XML.Ad esempio, menzionato da Helios, puoi eseguire la trasformazione utilizzando JavaScript.

Nella maggior parte dei casi JavaScript è incorporato come CDATA, che viene solitamente utilizzato Dopo la trasformazione XSL è avvenuta.Se ho capito bene, vuoi avere un tag <script> eseguibile nel tuo XML.

Potresti utilizzare parametri e modelli XSL se hai bisogno di un maggiore controllo sulle tue trasformazioni.Puoi impostare questi valori nel tuo XSLT e poi passarli a exec().Mozilla supporta impostazione dei parametri in XSL, ma non sono sicuro di altri browser.

Inoltre, JavaScript/XSLT cross-browser è una seccatura. Interfaccia JavaScript/XSLT di Mozilla è molto diverso da IE, quindi potresti voler fare affidamento su una libreria indipendente dal browser come XSLT di jQuery.

SÌ.Dipende dal browser ma puoi utilizzare Javascript.C'è un piccolo ma pratico tutorial su w3schools.com.Fa parte del tutorial XSLT.

La pagina:

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

Il tutorial XSLT:

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

Quel sito sarà più utile di me.Buona fortuna!

Dubito che troverai quello che stai cercando se "ufficiale" significa "standard". Quello che descrivi è un linguaggio di scripting per utenti da analizzare ed eseguire durante un'analisi del foglio di stile.Se il tuo obiettivo è semplificare XSLT facendo il lavoro sporco in Javascript, potrebbe essere meglio provare a generare XSLT in Javascript e quindi utilizzare un wrapper di classe per analizzare il risultato tramite il parser XSLT del browser.

Ovviamente si tratta di molto più lavoro di quello per cui probabilmente hai firmato, ma se sei convinto di volerlo fare, darei un'occhiata a Micro-modelli Javascript di John Resig per memorizzare dinamicamente XSLT compatibile con i modelli nel tuo javascript.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top