我使用的系統由許多複雜的XSL轉換組成,每個轉換對大型XML文件都有效。在將XML文件傳遞到我們的數據庫之前,專有程序將編譯每個XML文件上的XSLT。引用msxsl標記中的外部文件中的C#代碼
的XSL變換幾乎總是內<msxsl>
標籤,其中許多是若干文件之間重複手動複製代碼涉及C#的功能。我試圖實現一個系統,其中一個函數的常規存儲庫存儲在一個文件中,然後在被<msxsl>
標籤讀取之前加載到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>
標籤,如果我誤解的東西基本那麼就請讓我知道!
非常感謝。我研究過'XsltArgumentList',但暫時我無法訪問讀取變換的源代碼。 –
@Overlord_Dave:不客氣。 –