2011-12-23 12 views
10

Sto lavorando su un vecchio sito che utilizza java e xsl. Come posso inserire un file di script in un file xsl? All'inizio del file:come includere tag script in un file xsl?

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:include href="shipmentPackageInfo.xsl"/> 

<script src="/fs/scripts/shipment/shipment.js"></script> 

rompe l'app

- AGGIORNAMENTO -

C'è un altro file chiamato pageHeader.xsl che ha tutti i tag di script all'interno di

<xsl:output method="html"/> 
    <xsl:template match="PageHeaderData"> 

risposta

9

Sembra esserci una soluzione qui:

http://www.webdeveloper.com/forum/archive/index.php/t-20815.html

Put codice javascript tra <xsl:text> tag qualcosa di simile sotto

<script type="text/javascript"> 

<xsl:text> 

javascript here 

</xsl:text> 

</script> 
+0

semplice e utile, aggiungere un segno di virgolette doppie alla fine del type = "text/javascript –

+0

@contam Forse si dovrebbe suggerire che al membro del forum che ha postato questo, poiché questa è una citazione diretta da loro;) – annonymously

+0

hai ragione ... Devo indagare se il codice sorgente del forum è stato incollato da un altro forum :-) –

2

è necessario inserire il tag script all'interno di un blocco modello o si romperà ...

cioè

<xsl:template match="/"> 
    <script src="/fs/scripts/shipment/shipment.js"></script> 
</xsl:template> 
+0

Grazie Treemonkey. Ho provato la tua soluzione ma è ancora br eaks. Devo avere lo script dentro ? Tuttavia, puoi avere solo un metodo di output per pagina? –

+0

Quindi immagino che potrei aggiungere lo script al file main pageHeader e avvolgerlo in una corrispondenza in modo che lo script si carichi solo quando quella corrispondenza è soddisfatta? –

0

EDITED

Lei e è una soluzione che funziona

Supponendo che questo sia il tuo xsl e che tu stia includendo xsl come hai detto. In questo caso l'ho chiamato include.xsl. Ho appena chiamato un modello chiamato intestazioni che rimuove il riferimento javascript.

principale del file XSLT:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
version="1.0"> 
    <xsl:include href="include.xsl"/> 

    <xsl:template match="/"> 
     <xsl:call-template name="headers"/> 
     <bar> 
      <xsl:value-of select="root"/> 
     </bar> 
    </xsl:template> 
</xsl:stylesheet> 

include.xsl

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
version="1.0"> 
    <xsl:template name="headers"> 
     <script src="/fs/scripts/shipment/shipment.js"></script> 
    </xsl:template> 
</xsl:stylesheet> 

uscita:

<?xml version="1.0" encoding="utf-8"?> 
<script src="/fs/scripts/shipment/shipment.js"/> 
<bar>foo</bar> 
+0

Grazie. Ha appena stampato come una stringa sullo schermo –

+0

modificato e un codice diverso, l'ho provato e funziona. Essenzialmente puoi semplicemente chiamare un template che ha questo o un set di javascript –

+1

Usando CDATA, ho provato questo, puoi anche fare ']]> 'questo lo invierà al file –

8

Date un'occhiata alla mia risposta a XSLT wont allow me to use self-closing img and br tags

chiusura Auto tag script (<script src="code.js"/>) può causare il caricamento dei file JavaScript, quindi all'interno del tuo XSLT, potrebbe essere necessario avere del testo all'interno del tag dello script per impedirgli di chiudersi automaticamente e farlo funzionare.

<script src="code.js>//</script> 
0
<script type="text/javascript" src="/Scripts/script.js"> 
    <xsl:comment>script</xsl:comment> 
</script> 
5

Oh, mi piace questo:

... ... 
     </body> 
<script language="javascript"><![CDATA[ 
var a_patch = function(){ 
    var links = document.getElementsByTagName("a"); 
    for (var i=0; i<links.length; i++){ 
     var link = links[i]; 
     var text = link.innerHTML; 
     ... ... 
    } 
}; 
a_patch(); 
]]></script> 
</html> 
Problemi correlati