出现此错误“使用Saxon9ee处理器从XSLT调用C#方法GetImageString(String)时,无法找到名为{urn:rend-scripts} GetImageString()。的匹配单参数函数。帮我解决这个问题。
代码:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xpp="http://www.sdl.com/xpp" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:rend="urn:rend-scripts" exclude-result-prefixes="xsl xpp msxsl rend">
<msxsl:script language="c#" implements-prefix="rend">
<msxsl:assembly href="C:\Users\velagasx\Desktop\dll4rtf\System.IO.dll"/>
<msxsl:assembly href="C:\Users\velagasx\Desktop\dll4rtf\System.Drawing.dll"/>
<msxsl:using namespace="System.IO"/>
<msxsl:using namespace="System.Drawing"/>
<![CDATA[
public string GetImageString(String path_to_image){
MemoryStream stream = new MemoryStream();
Image img = Image.FromFile(path_to_image);
img.Save(stream, System.Drawing.Imaging.ImageFormat.Tiff);
byte[] bytes = stream.ToArray();
string output = BitConverter.ToString(bytes, 0).Replace("-", string.Empty);
return output;
}
]]>
<xsl:template match="img">
<xsl:value-of select="rend:GetImageString(@path)"/>
</xsl:template>
谢谢
Srinadh
答案 0 :(得分:1)
msxsl:script
中的 urn:schemas-microsoft-com:xslt
是一个专有的扩展元素,最初由各种Microsoft MSXML版本支持,然后通过msxsl:assembly
和msxsl:using
为Microsoft {XslCompiledTransform
进行增强。 1}}。我不认为Saxon支持那个扩展元素。如果您想使用Saxon扩展程序,请选中http://www.saxonica.com/documentation/index.html#!extensibility/dotnetextensions。