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

问题描述 投票:1回答:1

我有以下XML代码:

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

我使用xsl打印出MainElement的名称,如果它包含variable1 == "foo"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语句在一个特定元素中查找属性条件,而不是两者之间?

xml xslt xslt-1.0
1个回答
2
投票

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

例如,改变

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

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

所以测试涉及Parameter的一个MainElement孩子,它有两个目标属性值,而不是可能单独符合资格的Parameter元素。

© www.soinside.com 2019 - 2024. All rights reserved.