2012-07-07 130 views
0

我已经在XML文件的一部分中存储了一个变量($ ResId)中的特定数字,并且我在不同部分中具有以下内容。如何选择一个没有属性但具有特定值的XML节点

<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]" > 

+0

似乎没问题,您面临的问题是什么? – 2012-07-07 07:58:36

回答

1

缺乏一个具体的问题,这是我立刻看到为错误的是,你不需要“// StrategyPool /策略/“在xsl中的测试部分:if。此时的上下文节点已经是策略元素。另外,如果您打算选择StrategyName的值,请确保它是Strategy节点的CalculatedWho节点/直接子节点的兄弟节点。除此之外,取决于$ ResId的价值/类型,您可能会遇到一些奇怪的强制行为。

相关问题