2015-08-19 3 views
2

Имея функцию, как это показано ниже:XSLT2.0 | Saxon HE | проходя сепаратор, как пары

<xsl:function name="fn:get-hierachy"> 

    <xsl:param name="hierarchy" required="yes" as="node()"/> 
    <xsl:param name="separator0" required="no" as="xs:string"/> 

    <xsl:value-of select="$hierarchy/*" separator="$separator0"/> 

</xsl:function> 

Я получаю «separator0» в качестве разделителя для вывода, например.

<xsl:value-of select="fn:get-hierarchy($place, ' > ')"/> результат:

Earth$separator0Africa$separator0Egypt

Я передаю свой собственный разделитель в качестве второго аргумента функции = ' > ', но это игнорируется, и имя переменной используется вместо этого.

Желаемый результат: Earth > Africa > Egypt

Можно ли передать значение аргумента разделитель в качестве параметра?

+0

Вы, кажется, наткнулись на саксонскую ошибку здесь: Saxon игнорирует 'xsl: function/xsl: param [@ required = 'no']', когда он должен отклонять его как ошибку. Всегда требуются параметры функции. –

+0

Ошибка теперь исправлена, см. Https://saxonica.plan.io/issues/2448 (Saxon теперь сообщит об ошибке для вашей примерной функции). –

+0

Благодарим за информацию. Хотя @Martin Honnen обеспечил рабочий процесс. –

ответ

2

Для атрибута separator, вам нужно использовать шаблон <xsl:value-of select="$hierarchy/*" separator="{$separator0}"/> значение атрибута.

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