2011-09-16 6 views
17

Come posso includere/importare file/libreria javaScript nel file xslt.Come includere il file javaScript in xslt

+0

Buona domanda, +1. Vuoi utilizzare il codice javascript come un insieme di funzioni di estensione chiamate durante la trasformazione o vuoi generare codice HTML che faccia riferimento a un file javascript o entrambi? Tutti questi sono scenari validi e significativi. –

risposta

19

Se è necessario utilizzare il javascript nella trasformazione (ad esempio, contiene un insieme di funzioni di estensione chiamate all'interno della trasformazione), è necessario inserire i contenuti di JavaScript (almeno quello di un file javascript) in un file di fogli di stile XSLT separato, utilizzando l'elemento di estensione corretto (ad esempio <msxml:script>) come genitore del nodo di testo che contiene il codice javascript.

Ecco un esempio molto semplice, utilizzando qualsiasi processore XSLT Microsoft (MSXML3/4/6, XslCompiledTransform o XslTransform):

file XSL-JS.xsl: XSL

<xsl:stylesheet version="1.0" 
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
     xmlns:user="http://mycompany.com/mynamespace"> 

<msxsl:script language="JScript" implements-prefix="user"> 
    function xml(nodelist) { 
     return "A B C"; 
    } 
</msxsl:script> 
</xsl:stylesheet> 

File -Main.xsl che è l'importazione della javascript:

<xsl:stylesheet version="1.0" 
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
     xmlns:user="http://mycompany.com/mynamespace"> 
<xsl:import href="XSL-JS.xsl"/> 

<xsl:template match="/"> 
    <xsl:value-of select="user:xml(.)"/> 
</xsl:template> 

</xsl:stylesheet> 

Quando la trasformazione, contenuta nel file XSL-Main.xsl viene applicato su qualsiasi documento XML (non utilizzati/ignorato), The Wanted, risultato corretto è prodotto:

A B C 

Un caso completamente diverso è se si desidera solo per generare con l'applicazione XSLT un file HTML che fa riferimento a un determinato file Javascript.

Poi si include questa nel codice XSLT e generare questo letteralmente come parte dell'output:

<script type="text/javascript" src="SomePath/SomeFileName.js"></script> 
9

Se si sta tentando di includere una fonte Javascript nel file HTML generato, il tag script è il modo . Ma molti processori XSLT si soffocheranno se il tag è vuoto. Se tutto sembra bene, ma hai trovato output vuoto quando si aggiungono i tag di script, provare ad inserire uno spazio unificatore all'interno del tag come in:

<script type="text/javascript" src="SomePath/SomeFileName.js">&#160;</script> 
+0

wow fantastico! Grazie, ho riscontrato problemi con l'utilizzo delle librerie .NET XsltTransform. –