繁体   English   中英

在尝试选择节点时如何在xsl中使用变量?

[英]How do you use a variable in xsl when trying to select a node?

我原本以为这对谷歌来说很容易,但我一直没有成功。

我想从属性中分配一个变量值(目前为止很容易),然后使用该变量根据该属性的值选择另一个节点。

例:

<xsl:variable name="myId" select="@id" />
<xsl value-of select="//Root/Some/Other/Path/Where[@id='{@myId}']/@Name />

这不起作用。 如果我用变量中的值替换{@myId},那么它确实找到了正确的节点,但是这样做就不会产生任何结果。 我确定我错过了一些东西,或者也许有不同的方法可以做到这一点。

上下文是在不同的顶级节点下存在共享相同id值的相关数据,因此我需要在模板中获取相关节点。

好吧,我终于明白了。 真的很傻问题,我只需要省略引号和括号。 其中一次,我以为我已经尝试过了。 :D哦,我在第一个例子中输错了@myId,代码实际上是$ myId。

<xsl:variable name="myId" select="@id" />
<xsl value-of select="//Root/Some/Other/Path/Where[@id=$myId]/@Name" />

您似乎对使用变量(只是$ variable)和属性值模板感到困惑,它允许您将任何XPath表达式放在某些属性中,例如

<newElement Id="{@Id}"/>

它们显然可以组合在一起,因此您可以在属性值模板中包含变量,例如:

<newElement Id="{$myId}"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM