如何评估 XSL 构造的 XPath 表达式 [英] How to eval an XSL constructed XPath expression

查看:29
本文介绍了如何评估 XSL 构造的 XPath 表达式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗯……

<xsl:value-of select="$document/@*[name() eq $attrName]"/>

似乎是解决方案...问候,克里斯托夫

seems to be the solution... Regards, Christophe

我有一个包含要查询的属性名称的变量.我怎样才能写出这样的 XPath 表达式?这是我想做的一个例子

I have a variable that contains the name of an attribute to query. How can I wrote such an XPath expression ? Here is an example of what I would like to do

<xsl:variable name="attrName" select="$config//conf:document[@id=$docId]/@archive-ventil-attr"/>
<xsl:value-of select="$document/@{$attrName}"/>

我使用 XSLT 2.0

I use XSLT 2.0

非常感谢,克里斯托夫

推荐答案

对于完整的 XPath 表达式,您需要一个在 XSLT 1.0 和 2.0 中仅作为扩展可用的评估函数,请参阅 saxon:evaluate.此外,在 XSLT 3.0 (https://www.w3.org/TR/xslt-30/#element-evaluate)(自 Saxon 9.8 及更高版本 PE 和 EE、Altova XML 2017 R3 及更高版本)有一个名为 xsl:evaluate.

With a complete XPath expression you would need an evaluate function which is in XSLT 1.0 and 2.0 only available as an extension, see saxon:evaluate. Also, in XSLT 3.0 (https://www.w3.org/TR/xslt-30/#element-evaluate) (since Saxon 9.8 and later PE and EE, Altova XML 2017 R3 and later) there is an instruction element named xsl:evaluate.

只要你有一个带有本地名称的字符串,使用 <xsl:value-of select="$elements/@*[local-name() = $attrName]"/就足够了>.这假设 $elements 是元素节点的节点集 (XPath 1.0) 或序列 (XPath 2.0).

As long as you simply have a string with a local name it should suffice to use <xsl:value-of select="$elements/@*[local-name() = $attrName]"/>. This assumes $elements is a node-set (XPath 1.0) or sequence (XPath 2.0) of element nodes.

这篇关于如何评估 XSL 构造的 XPath 表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆