0

我已经在一个 XML 文件的一部分的变量 ($ResId) 中存储了一个特定数字,并且我在不同的部分中有以下内容。

<CalculatedWho>
  <ResourceId>85</ResourceId>
  <ResourceId>49</ResourceId>
  <ResourceId>43</ResourceId>
  <ResourceId>41</ResourceId>
</CalculatedWho>

如果其中任何一个与存储在变量中的数字匹配,我将执行一项特定任务。我已经尝试了以下和其他几件事,但还没有做对。

<xsl:for-each select="//StrategyPool/Strategy">
  <xsl:if test="//StrategyPool/Strategy/CalculatedWho/ResourceId[text()=$ResId]" >
    <xsl:value-of select="StrategyName"/>
  </xsl:if>
</xsl:for-each>

问题是 IF 测试从不返回值,尽管我知道有匹配项。我还尝试了以下作为 if 测试:

  <xsl:if test="/CalculatedWho/ResourceId[text()=$ResId]" >

4

1 回答 1

1

缺少一个特定的问题,我立即认为是错误的事情是您不需要 xsl:if 中测试的“//StrategyPool/Strategy/”部分。此时的上下文节点已经是一个策略元素。此外,如果您打算选择 StrategyName 的值,请确保它是 CalculatedWho 节点的兄弟/Strategy 节点的直接子节点。除此之外,根据 $ResId 的值/类型,您可能会得到一些奇怪的强制行为。

于 2012-07-07T08:07:50.623 回答