0
嘿,我試圖編寫一個xslt模板,它使用msxsl從web.config appSetting創建一個超鏈接。每次我嘗試運行代碼時,它都會告訴我,我已經在腳本中聲明瞭兩次c#方法。代碼如下:msxsl:cs在xslt函數中的腳本聲明瞭兩次錯誤
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:files="urn:my-script" >
<msxsl:script implements-prefix="files" language="CSharp">
<msxsl:assembly name="System.Configuration"/>
<msxsl:using namespace="System.Configuration"/>
<![CDATA[
public string LinkFile()
{
string link = System.Configuration.ConfigurationManager.AppSettings["fileUrl"];
return link;
}
]]>
</msxsl:script>
<xsl:template name="GenerateLinkFile">
<xsl:param name="fileName"/>
<xsl:param name="fileId"/>
<xsl:choose>
<xsl:when test="$fileName = ''">
<xsl:value-of select="$fileName"/>
</xsl:when>
<xsl:otherwise>
<a href="files:LinkFile()">
<xsl:value-of select="$fileName"/>
</a>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
我得到的錯誤是作爲運行如下當它試圖生成超鏈接: System.Xml.Xsl.XslLoadException:類型「System.Xml.Xsl .CompiledQuery.Script1'已經使用相同的參數類型定義了一個名爲'LinkFile'的成員。
這絕對是您使用的XSLT嗎?它形成嚴重;例如,xsl:stylesheet元素不以'>'結尾,並且沒有匹配的 xsl:stylesheet>。當我添加這些時,你的XSLT編譯並運行 - 這讓我想知道它是否是一個數據問題。你有一個示例web.config文件,你正在運行這個?你在用什麼版本的.Net? – dash 2012-07-12 22:02:03
我忘了關閉這兩個標籤,這些標籤都包含在我的代碼中,我不能包含web.config,但錯誤顯示它是代碼中的這個位置(行號是方法聲明和下面的行)。這不是數據問題,因爲它試圖調用該方法,並認爲有多個 – GFXGunblade 2012-07-13 12:17:07
我將其與一個示例XML文件進行了對比,它對我來說很有用,這也讓我想知道您正在使用的.Net版本是什麼,如果您是在變換中引用其他XSLT模板 - 其中一個可能會聲明該函數? – dash 2012-07-13 13:43:51