2

msxsl:script 要素内の CDATA セクション内でメソッドを宣言しなくても、既に GAC にある dll のメソッドにアクセスできますか?

これが私が望まないものの1つの例です:

<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 に依存します。MicrosoftではXslCompiledTransform渡すことができextension objectsます。 xsltargumentlist.addextensionobject.aspx . したがって、要素を使用する必要はありませんが、名前空間を定義し、その名前空間にバインドされた拡張オブジェクトとしてオブジェクトを渡すようにする必要があります。msxsl:script

于 2013-09-05T10:10:00.767 に答える