2011-09-16 32 views
17

xsltファイルにjavaScript file/libaryをインクルード/インポートするにはどうしたらいいですか?xsltにjavaScriptファイルを含めるには

+0

良い質問、1。変換中に呼び出される拡張関数のセットとしてjavascriptコードを使用したいのですか、またはjavascriptファイルを参照するHTMLコードを生成するか、あるいはその両方ですか?これらはすべて有効かつ有意義なシナリオです。 –

答えて

19

変換でのjavascriptを使用する必要がある場合(たとえば、変換内で呼び出される一連の拡張関数が含まれている場合)、javascriptの内容(少なくとも1つのjavascriptファイル)を別のXSLTスタイルシートファイルに入れて、適切な拡張要素(<msxml:script>など)をJavaScriptコードを含むテキストノードの親として使用します。ここ

任意のMicrosoft 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ジャバスクリプトをインポートしている:変換は、ファイルに含ま

<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文書に適用され、望んでいた、正しい結果がを生産している:あなたは自分のXSLTアプリケーションで生成する場合は

A B C 

完全に異なる場合があります指定されたJavascriptファイルを参照するHTMLファイル。

その後、あなたの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ライブラリを使用して問題を抱えていました。 –

関連する問題