我有一个用于转换的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>
答案 0 :(得分:1)
问题中定义的函数在语法上是正确的,看起来很有意义。
因此,错误出现在您忘记向我们展示的代码中 - 更具体地说,该函数如何与哪些参数一起使用。
除此之外,还有明显的重构可能性 - 例如用string-join()
替换不必要的concat()
。
答案 1 :(得分:0)
正如@John Mitchell所说,告诉我们错误是什么可能会有所帮助。但是,我看到你在函数上声明了名称空间 - 确保xmlns:functx="http://www.functx.com"
也在样式表顶部的<xsl:stylesheet>
元素中声明。
显然,要检查的另一件事是你在函数调用中正确输入你的参数:前两个参数需要引号但第三个参数不需要(例如<xsl:value-of select="functx:pad-string-to-length('boo', '-', 12)"/>
)。