我正在尝试实现一个 .NET xslt 扩展对象,以检查是否存在以下示例中的xml文件。我还思考了一些没有太大帮助的相关 SO 帖子。
当我尝试使用以下代码片段查找扩展时,它显示“扩展功能不可用”:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:XsltExtensionObject="urn:XsltExtensionObject"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
exclude-result-prefixes="msxsl XsltExtensionObject">
...
<xsl:choose>
<xsl:when test="function-available('XsltExtensionObject:getFile')">
Extension function is available
</xsl:when>
<xsl:otherwise>
Extension function is not available
</xsl:otherwise>
</xsl:choose>
...
我在相同的 VS 2012 解决方案中创建了一个名为 XsltExtensionObject 的单独类库,如下所示(在 VB 中是否与第一个示例一致):
Public Class FileExist
Private exist As Boolean
Public Sub New()
exist = False
End Sub
Public Function getFile(ByVal myFile As String) As Boolean
exist = System.IO.File.Exists(myFile)
Return exist
End Function
End Class
我执行 xsl 转换如下:
protected void Page_Load(object sender, EventArgs e)
{
XmlDocument xmldoc = new XmlDocument();
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(MapPath("homepage.xslt"));
XsltArgumentList xslArgs = new XsltArgumentList();
XsltExtensionObject.FileExist obj = new XsltExtensionObject.FileExist();
xslArgs.AddExtensionObject("urn:XsltExtensionObject", obj);
xmldoc.Load(MapPath("lists.xml"));
StringWriter sw = new StringWriter();
xslt.Transform(new XmlNodeReader(xmldoc), null, sw);
content.InnerHtml = sw.ToString();
}
为什么找不到扩展名?我在这里想念什么?装配参考?