嘿,我正在尝试编写一个xslt模板,该模板使用msxsl从web.config appSetting创建超链接。每次我尝试运行代码时,它都会告诉我,我已经在脚本中声明了两次c#方法。守则如下:
<?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: Type 'System.Xml.Xsl.CompiledQuery.Script1‘已经用相同的参数类型定义了一个名为'LinkFile’的成员。
发布于 2012-07-13 17:08:59
我对一个示例XML文件运行了XSLT,它运行得很好;这使我相信您可能会从其他XSLT文件中多次调用该XSLT。
处理此问题的最佳方法是,如果您有一个根转换调用其他转换,则从其中包含它,因此它仅被引用一次;其目的是确保该函数在转换过程中只包含一次,否则您将遇到所看到的错误。
或者,独立调用此转换--一种常见的方法是依次将XSLT应用于源文档,每次执行一组转换。
https://stackoverflow.com/questions/11460817
复制相似问题