XSLT: как объявить пользовательскую функцию
У меня есть таблица стилей XSLT для преобразования. В этом я должен указать пользовательскую функцию, используя <xsl:function>
, Когда я собираюсь сделать это в этом <xsl:stylesheet></xsl:stylesheet>
это выдает ошибку.
Вот функция:
<xsl:function name="functx:pad-string-to-length" as="xs:string"
xmlns:functx="http://www.functx.com" >
<xsl:param name="stringToPad" as="xs:string?"/>
<xsl:param name="padChar" as="xs:string"/>
<xsl:param name="length" as="xs:integer"/>
<xsl:sequence select="
substring(
string-join (
($stringToPad, for $i in (1 to $length) return $padChar)
,'')
,1,$length)
"/>
</xsl:function>
2 ответа
Функция, определенная в вопросе, является синтаксически правильной и имеет смысл.
Следовательно, ошибка в коде, который вы забыли показать нам - более конкретно, как эта функция используется с какими аргументами.
Помимо этого, есть очевидные возможности рефакторинга, такие как замена ненужных string-join()
с concat()
,
Как сказал @Джон Митчелл, объяснение ошибки может быть полезным. Тем не менее, я вижу, у вас есть пространство имен, объявленное в функции - убедитесь, что xmlns:functx="http://www.functx.com"
также объявлено в <xsl:stylesheet>
элемент в верхней части таблицы стилей.
Очевидно, что еще одна вещь, которую нужно проверить, заключается в том, что вы правильно вводите свои аргументы в вызове функции: ваши первые два параметра будут нуждаться в кавычках, а третий - нет (например, <xsl:value-of select="functx:pad-string-to-length('boo', '-', 12)"/>
).