我有以下XML代码:
<MainElement name = "apple">
<Parameter variable1 = "foo" variable2 = "bar"/>
<Parameter variable1 = "foo" variable2 = "notBar"/>
如果xsl包含同时包含MainElement
和variable1 == "foo"
的参数,我将使用xsl打印出variable2 == "bar"
的名称,如下所示:
<xsl:for-each select = "MainElement">
<xsl:if test = "Parameter/@variable1 = 'foo' and Parameter/@variable2 = 'bar'">
...
</xsl:if>
<xsl:if test = "Parameter/@variable1 = 'foo' and Parameter/@variable2 = 'notBar'">
</xsl:for-each>
问题在于,此xsl代码不会检查一个Parameter
元素是否包含两个适当的属性,而是查看两个Parameter元素以查看其中一个是否包含适当的属性。
我知道我可以尝试不使用if
的另一种方法,但是现在出于我的好奇心,我想知道如何让if语句在一个特定元素中而不是在两个元素中寻找条件条件?
答案 0 :(得分:2)
将测试放在Parameter
的单个谓词测试中。
例如,更改
Parameter/@variable1 = 'foo' and Parameter/@variable2 = 'bar'
到
Parameter[@variable1 = 'foo' and @variable2 = 'bar']
,以便测试涉及Parameter
的单个 MainElement
子级,该子级既具有目标属性值,又可能具有可能单独限定的单独Parameter
元素