代码之家  ›  专栏  ›  技术社区  ›  palehorse

在试图选择节点时,如何在XSL中使用变量?

  •  15
  • palehorse  · 技术社区  · 17 年前

    我本以为这对谷歌来说是件容易的事,但我没有成功。

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

    例子:

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

    那不管用。如果我将@myid替换为变量中的值,那么它会找到正确的节点,但这样做不会产生任何结果。我肯定我错过了一些东西,或者可能有不同的方法。

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

    2 回复  |  直到 17 年前
        1
  •  16
  •   palehorse    11 年前

    好吧,我终于明白了。真是个愚蠢的问题,我只需要去掉引号和大括号。有一次我 思想 我已经试过了。:d哦,我在第一个示例中错误地输入了@myid,代码实际上是$myid。

    <xsl:variable name="myId" select="@id" />
    <xsl value-of select="//Root/Some/Other/Path/Where[@id=$myId]/@Name" />
    
        2
  •  5
  •   samjudson    16 年前

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

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

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

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