2

我可以访问 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 并在模板标签中调用我的函数吗?

4

1 回答 1

3

这完全取决于您使用的 XSLT 处理器及其 API。MicrosoftXslCompiledTransform允许您传入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元素,但您需要定义一个命名空间并确保将您的对象作为绑定到该命名空间的扩展对象传入。

于 2013-09-05T10:10:00.767 回答