16

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

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

例子:

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

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

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

4

2 回答 2

17

好的,我终于想通了。真是愚蠢的问题,我只需要省略引号和大括号。有一次我以为我已经尝试过了。:D 哦,我在第一个例子中打错了@myId,代码实际上是$myId。

<xsl:variable name="myId" select="@id" />
<xsl value-of select="//Root/Some/Other/Path/Where[@id=$myId]/@Name" />
于 2008-08-07T23:16:07.947 回答
5

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

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

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

<newElement Id="{$myId}"/>
于 2008-08-19T15:19:25.887 回答