在XSLT 1.0中创建XPath函数

7

我正在学习如何在XSLT-1.0中创建自己的XPath函数。例如,我有一个简单的XPath表达式,在我的XSLT模板中反复使用。我想创建自己的XPath函数myOwnFunction($var)来调用XPath表达式。

示例表达式:

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

好问题,+1。请看我的答案,其中包括解释、具体示例和建议。 :) - Dimitre Novatchev
感谢大家的回答。对我来说,XSLT 2.0 很不错,但是在我正在工作的项目中,我只能使用 1.0 版本。 - michal.kreuzman
@Michal-Kreuzman:我的回答中最后一个链接没有显示——现在已经修正。 - Dimitre Novatchev
3个回答

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。

5

如果您被困在1.0版本中,您可以检查您的处理器是否支持EXSLT函数


链接失效了,这里是一个可用的网络存档链接:http://web.archive.org/web/20220107204028/http://exslt.org/func/index.html - undefined

4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接