在 XSLT 1.0 中创建 XPath 函数
我正在寻找如何在 XSLT-1.0 中创建我自己的 XPath 函数。例如,我有一个简单的 XPath 表达式,我在 XSLT 模板中一次又一次地使用它。我想创建自己的 XPath 函数 myOwnFunction($var)
,它调用 XPath 表达式。
表达式示例:
normalize-space(substring-after(substring-after($var, '-'), '-'))
I'm looking how to create my own XPath function in XSLT-1.0. For example I have simple XPath expression which I'm using again and again in my XSLT template. I want to create my own XPath function myOwnFunction($var)
which calls XPath expression.
Example expression:
normalize-space(substring-after(substring-after($var, '-'), '-'))
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
前面的两个答案说明了一切:XSLT 1.0 不提供创建可从 XPath 表达式中引用的函数的方法。
如果有人想要这样的功能,他们应该开始使用 XSLT 2.0(并使用标准 指令),或者:
使用
由 EXSLT 提供的扩展元素。请注意,很少有 XSLT 1.0 处理器实现此扩展元素。使用特定的 XSLT 处理器功能(如果存在)。对于 .NET 平台,可以使用 XsltContext 类、IXsltContextFunction 接口和技术,例如此。
无论如何,这一切根本不是 XSLT 编程,所以我的建议是开始认真使用 XSLT 2.0。
The previous two answers said it all: XSLT 1.0 does not provide the means to create functions that can be referenced from within an XPath expression.
If someone wants such functionality they should start using XSLT 2.0 (and make use of the standard <xsl:function> instruction), or:
Use the
<func:function>
extension element provided by EXSLT. Note that very few XSLT 1.0 processors implement this extension element.Use a particular XSLT processor feature, if such exists. For the .NET platform one can use the XsltContext class, the IXsltContextFunction interface and techniques like this.
Anyway, all this is not at all XSLT programming, so my advice is to start using XSLT 2.0 seriously.
如果您坚持使用 1.0,您可以检查您的处理器是否支持 EXSLT 函数。
If you are stuck with 1.0, you can check if your processor supports EXSLT Functions.
XSLT 1.0 没有定义此功能。 它是在 XSLT 2.0 中添加的。 您要么必须使用 2.0,要么使用一些特定于实现的意思是做这件事。
XSLT 1.0 does not define this functionality. It was added in XSLT 2.0. You'll either have to use 2.0 or use some implementation-specific means to do this.