2013-05-23 2 views
1

Я хочу создать функцию для XSL для разрешения текста типа «Вставлено {0} в {1}» в «Введено администратором в 2013-05-13T10: 02: 17». Я использую XSL 1.0 и определяю свои собственные функции в .NET. Я стараюсь это какПользовательская функция xsl с параметрическим массивом

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', ...))

ответ

0

Вы можете сделать это в XSL:

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

Это возможность для этого примера. Но мне нужно что-то общее для других строк, которое также содержит некоторые владельцы мест. – mburm

+0

Если вы определяете свои параметры как '', вы должны иметь возможность использовать любое количество заполнителей, которые вам нравятся. Вам не нужно передавать все параметры функции в XSLT, только те, которые вы используете. – venite

Смежные вопросы