我正在寻找如何在XSLT-1.0中创建自己的XPath函数。例如,我有一个简单的XPath表达式,我在我的XSLT模板中一次又一次地使用它。我想创建自己的XPath函数myOwnFunction($var)
,它调用XPath表达式。
示例表达式:
normalize-space(substring-after(substring-after($var, '-'), '-'))
答案 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或使用某些特定于实现的方法来执行此操作。