2011-12-23 11 views
10

Pracuję na starej witrynie, która używa java i xsl. Jak mogę wkleić plik skryptu do pliku xsl? Początek pliku:jak dołączyć znacznik skryptu do pliku 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> 

przerwy Aplikacja

- AKTUALIZACJA -

Jest jeszcze inny plik o nazwie pageHeader.xsl który posiada wszystkie tagi skryptu wewnątrz

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

Odpowiedz

9

Wydaje się, że istnieje rozwiązanie:

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

Put kodu JavaScript pomiędzy <xsl:text> tag coś jak poniżej

<script type="text/javascript"> 

<xsl:text> 

javascript here 

</xsl:text> 

</script> 
+0

Proste i przydatne, dodać podwójny cudzysłów na końcu type = "text/javascript –

+0

@contam Może powinieneś sugerować, że do członka forum, który to opublikował, ponieważ jest to bezpośredni cytat z nich;) – annonymously

+0

masz rację ... Muszę zbadać, czy kod źródłowy forum jest wklejony z innego forum :-) –

2

trzeba wstawić tag skryptu w bloku szablonu lub pęknie ...

tj

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

Dzięki Treemonkey. Próbowałem Twojego rozwiązania, ale nadal jest eaks. Czy muszę mieć skrypt wewnątrz ? Jednak na jednej stronie możesz mieć tylko jedną metodę wyjściową? –

+0

Sądzę więc, że mógłbym dodać skrypt do głównego pliku pageHeader i zawinąć go w taki sposób, aby skrypt ładował się tylko wtedy, gdy dopasowanie jest spełnione? –

0

EDYTOWANY

Ją e jest rozwiązaniem, które działa

Zakładając, że jest to twój xsl i dołączasz xsl, o czym wspomniałeś. W tym przypadku nazwałem to include.xsl. Po prostu wywołuję szablon o nazwie nagłówki, które wypierają odwołanie do javascript.

główna XSLT pliku:

<?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> 

wyjściowa:

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

Dzięki. Właśnie wydrukowano jako ciąg na ekranie –

+0

Edytowany i inny kod, przetestowałem to i działa. Zasadniczo możesz po prostu zadzwonić do szablonu, który ma to lub zestaw javascripts –

+1

Używając CDATA, przetestowałem to, możesz również zrobić ']]> 'spowoduje wyprowadzenie go do pliku –

8

Spójrz na moją odpowiedź XSLT wont allow me to use self-closing img and br tags

SAMOZAMYKACZ tagów skryptu do (<script src="code.js"/>) może spowodować, że pliki JavaScript nie będą ładowane, więc wewnątrz twojego XSLT, możesz potrzebować jakiegoś tekstu wewnątrz znacznika skryptu, aby nie zamykał się samoczynnie i nie działał.

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

Oh, robię tak:

... ... 
     </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> 
Powiązane problemy