【问题标题】:Access C# methods in xslt在 xslt 中访问 C# 方法
【发布时间】:2013-09-05 10:04:47
【问题描述】:

我可以访问 GAC 中已经存在的 dll 中的方法,而不必在 msxsl:script 元素的 CDATA 部分中声明它们吗?

这是我不想要的一个例子:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-       result-prefixes="xsl in lang user"     xmlns:in="http://www.composite.net/ns/transformation/input/1.0" xmlns:lang="http://www.composite.net/ns/localization/1.0" xmlns:f="http://www.composite.net/ns/function/1.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="urn:my-scripts"> 
 <msxsl:script language="C#" implements-prefix="user"> 
    <msxsl:assembly name="System.Web" /> 
    <msxsl:using namespace="System.Web" />
<![CDATA[public string GetDate(string DateFormat){return DateTime.Now.ToString(DateFormat);}]]></msxsl:script> 
  <xsl:template match="/">  
      <sometag> 
          <xsl:value-of select="user:GetDate('dddd, dd MMMM yyyy')" /> 
      </sometag> 
  </xsl:template> 
</xsl:stylesheet>

我不想将我的函数放在 CDATA 中,我不能像上面的示例那样引用 dll 并在模板标签中调用我的函数吗?

【问题讨论】:

    标签: c# xslt dll reference gac


    【解决方案1】:

    这完全取决于您使用的 XSLT 处理器及其 API。 Microsoft 的XslCompiledTransform 允许您传入extension objects,请参阅http://msdn.microsoft.com/en-us/library/tf741884.aspxhttp://msdn.microsoft.com/en-us/library/system.xml.xsl.xsltargumentlist.addextensionobject.aspx。因此,您不必使用msxsl:script 元素,但您需要定义一个命名空间并确保将您的对象作为绑定到该命名空间的扩展对象传入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-08
      • 2015-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-09
      相关资源
      最近更新 更多