XSLT if语句具有多个属性的元素

时间:2018-09-04 00:40:58

标签: xml xslt xslt-1.0

我有以下XML代码:

<MainElement name = "apple">
   <Parameter variable1 = "foo" variable2 = "bar"/>
   <Parameter variable1 = "foo" variable2 = "notBar"/>

如果xsl包含同时包含MainElementvariable1 == "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语句在一个特定元素中而不是在两个元素中寻找条件条件?

1 个答案:

答案 0 :(得分:2)

将测试放在Parameter的单个谓词测试中。

例如,更改

Parameter/@variable1 = 'foo' and Parameter/@variable2 = 'bar'

Parameter[@variable1 = 'foo' and @variable2 = 'bar']

,以便测试涉及Parameter单个 MainElement子级,该子级既具有目标属性值,又可能具有可能单独限定的单独Parameter元素