私は、それぞれが大きなXMLファイルで機能する多くの複雑なXSL変換で構成されるシステムを使用しています。独自のプログラムは、XMLファイルをデータベースに渡す前に、各XMLファイルでXSLTをコンパイルします。
XSL変換には、ほとんどの場合、<msxsl>
タグ内のC#関数が含まれます。これらの関数の多くは、コードを手動でコピーして複数のファイル間で繰り返されます。<msxsl>
関数の一般的なリポジトリが1つのファイルに格納され、タグによって読み取られる前にXSLTファイルにロードされるシステムを実装しようとしています。
私の問題は<msxsl>
、外部ファイルからコードをロードする方法を見つけることができなかったことです。これが私が意味することの例です:
ハードコードされた関数を使用した変換:
...
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:cs="urn:my-scripts-csharp">
...
<msxsl:script language="C#" implements-prefix="cs">
<![CDATA[
public string emphasise(string input) {
return input+"!";
}
]]>
</msxsl:script>
...
関数を外部にロードしたいのですが:
...
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:cs="urn:my-scripts-csharp">
...
<msxsl:script language="C#" implements-prefix="cs">
<--- file loaded here --->
</msxsl:script>
...
ソースファイルは次のようになります。
<![CDATA[
public string emphasise(string input) {
return input+"!";
}
]]>
これは可能ですか?関数は一般に(この例とは異なり)複雑であり、XSLTコードで再現することはできません。外部ファイルのキーワードを読み取るのでしょうか、それとも外部ファイルの外にタグnamespace
を付けて含める必要があるのでしょうか。using
<msxsl:using>
私は<msxsl>
タグの使用にまったく慣れていません。基本的なことを誤解している場合は、お知らせください。