在XSLT 1.0中创建XPath函数

时间:2011-03-09 13:08:01

标签: xslt xpath xslt-1.0

我正在寻找如何在XSLT-1.0中创建自己的XPath函数。例如,我有一个简单的XPath表达式,我在我的XSLT模板中一次又一次地使用它。我想创建自己的XPath函数myOwnFunction($var),它调用XPath表达式。

示例表达式:

normalize-space(substring-after(substring-after($var, '-'), '-'))

3 个答案:

答案 0 :(得分:11)

前两个答案说明了一切:XSLT 1.0没有提供创建可以在XPath表达式中引用的函数的方法。

如果有人想要这样的功能,他们应该开始使用XSLT 2.0(并使用标准的 <xsl:function> 指令),或者:

  • 使用EXSLT提供的<func:function>扩展元素。请注意,很少有XSLT 1.0处理器实现此扩展元素。

  • 使用特定的XSLT处理器功能(如果存在)。对于.NET平台,可以使用XsltContext类,IXsltContextFunction接口和this等技术。

无论如何,所有这些都不是XSLT编程,所以我的建议是认真开始使用XSLT 2.0。

答案 1 :(得分:5)

如果您遇到1.0问题,可以检查您的处理器是否支持EXSLT Functions

答案 2 :(得分:4)

XSLT 1.0未定义此功能。 It was added in XSLT 2.0.您必须使用2.0或使用某些特定于实现的方法来执行此操作。