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 に答える