这是我的xml:
<root>
<a>
<b>
<t>1</t>
</b>
<b>
<t>2</t>
</b>
</a>
</root>
我想问:那告诉我是否存在但是我想要真正的答案onky如果b exsit并且他有t = 1
罐
答案 0 :(得分:1)
您正在寻找的测试是
//b/t[text() = '1']
此测试现在可以在template
中用作匹配项,在for-each
循环中用作选择器,或在if
语句中用作测试 - 例如:
<xsl:template match="//b/t[text() = '1']">
<!-- all t children of b with a content of 1 -->
</xsl:template>
<xsl:for-each select="//b/t[text() = '1']">
<!-- all t children of b with a content of 1 -->
</xsl:for-each>
<xsl:if test="//b/t[text() = '1']">
<!-- This is the true case -->
</xsl:if>
注意:
//
函数连接所有后代节点的文本内容,即如果您可以确定没有其他后代,则仅以上述方式使用它。答案 1 :(得分:1)
使用强>:
boolean(/*/*/b[t=1])
根据提供的XML文档进行评估时,结果为:
true()
请记住:始终尝试避免使用//
缩写,因为这会导致遍历上下文节点的整个(子)树的极低效率遍历。