2011-09-16 91 views
17

如何在xslt文件中包含/導入javaScript文件/庫文件。如何在xslt中包含javaScript文件

+0

問得好,+1。您是否想將JavaScript代碼用作轉換過程中調用的一組擴展函數,或者是否想要生成引用JavaScript文件的HTML代碼或兩者?所有這些都是有效且有意義的場景。 –

回答

19

如果您需要在轉換中使用JavaScript(例如,它包含一組在轉換中調用的擴展函數),則需要將javascript內容(至少是一個JavaScript文件)放在單獨的XSLT樣式表文件中,使用適當的擴展元素(如<msxml:script>)作爲包含JavaScript代碼的文本節點的父項。

這裏是一個非常簡單的例子,使用微軟的任何XSLT處理器(MSXML3/4/6,XslCompiledTransform或的XslTransform)

文件XSL-JS.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> 

XSL文件-Main.xsl被導入的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> 

當文件中包含的改造, XSL-Main.xsl是在任何XML文檔(不使用/忽略)應用中,想要的東西,正確的結果產生

A B C 

一個完全不同的情況是,如果你只是想與你的XSLT應用程序生成一個HTML文件,引用給定的Javascript文件

然後你有這個在您的XSLT代碼字面生成此作爲輸出的一部分:

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

如果你想在生成的HTML文件中的JavaScript源,腳本標籤的方式。但是如果標籤爲空,許多XSLT處理器將會窒息。如果一切看起來不錯,但你得到空的輸出,當您添加腳本標記,請嘗試將標籤內的非打破空間中:

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

哇哇!謝謝,我在使用.NET XsltTransform庫時遇到問題。 –

相關問題