【问题标题】:Custom xsl function with parameter array带参数数组的自定义 xsl 函数
【发布时间】:2013-05-18 12:19:59
【问题描述】:

我想为 XSL 创建一个函数来解析“由管理员在 2013-05-13T10:02:17 插入”中的“由 {0} 在 {1} 插入”之类的文本。我使用 XSL 1.0 并在 .NET 中定义自己的函数。我试试这个

Public Class MyStringExtension

    Public Function Format(ByVal value As String, ByVal ParamArray args As String()) As String
        Return String.Format(value, args)
    End Function
End Class
<xsl:value-of select="MyStringExtensionNamespace:Format('Inserted by {0} at {1}', 'Admin', '2013-05-13T10:02:17')" />

似乎ParamArray 选项不起作用,或者在这种情况下可能是不允许的。使用任何其他功能我都没有问题。有没有一种方法可以定义一个允许多个参数的函数,而无需为每个可能的函数定义。 (类似于concat('Param 1', ' Param 2', 'Param 3', 'Param 4', 'Param 5', ...)

【问题讨论】:

    标签: vb.net string xslt extension-methods xslt-1.0


    【解决方案1】:

    您可以在 XSL 中执行此操作:

    <func:function name = "formatMyString">
      <xsl:param name="firstParam" />
      <xsl:param name="secondParam" />
      <func:result select="concat('Inserted by ', $firstParam,' at ', $secondparam)"/>
    </func:function>
    

    【讨论】:

    • 这是本示例的一种可能性。但我需要一些通用的其他字符串也包含一些占位符。
    • 如果您将参数定义为&lt;xsl:param name="firstParam" select="null"/&gt;,您应该可以使用任意数量的占位符。您不必将所有参数传递给 XSLT 中的函数,只需传递您使用的参数即可。
    猜你喜欢
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多