我有以下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语句在一个特定元素中查找属性条件,而不是两者之间?
将测试放在Parameter
的单个谓词测试中。
例如,改变
Parameter/@variable1 = 'foo' and Parameter/@variable2 = 'bar'
至
Parameter[@variable1 = 'foo' and @variable2 = 'bar']
所以测试涉及Parameter
的一个MainElement
孩子,它有两个目标属性值,而不是可能单独符合资格的Parameter
元素。