【问题标题】:How do you use a variable in xsl when trying to select a node?尝试选择节点时如何在 xsl 中使用变量?
【发布时间】:2010-09-05 13:03:35
【问题描述】:

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

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

例子:

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

那行不通。如果我将 {@myId} 替换为变量中的值,那么它确实找到了正确的节点,但以这种方式执行它不会产生任何结果。我确定我遗漏了一些东西,或者可能有其他方法可以做到这一点。

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

【问题讨论】:

    标签: xslt


    【解决方案1】:

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

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

    【讨论】:

    • 仍有一段不应该出现的引文。这是一个非常小的编辑,所以如果不更改文本(最少字符限制),我就无法做到这一点。
      谢谢,我认为现在是正确的。我最初也错过了结尾的双引号。
    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多