在 XSLT 1.0 中创建 XPath 函数

发布于 2024-10-20 22:08:05 字数 256 浏览 3 评论 0原文

我正在寻找如何在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

玉环 2024-10-27 22:08:05

前面的两个答案说明了一切: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.

少女七分熟 2024-10-27 22:08:05

如果您坚持使用 1.0,您可以检查您的处理器是否支持 EXSLT 函数

If you are stuck with 1.0, you can check if your processor supports EXSLT Functions.

油饼 2024-10-27 22:08:05

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文