我有以下 XML 代码,我正在尝试使用 xlst 对其进行转换:
<setting>
<type>house</type>
<context>roof</context>
<value>blue</value>
</setting>
<setting>
<type>house</type>
<context>kitchen</context>
<value>red</value>
</setting>
<setting>
<type>house</type>
<context>floor</context>
<value>black</value>
</setting>
<setting>
<type>apartment</type>
<context>roof</context>
<value>red</value>
</setting>
我想统计setting->type“apartment”是否有“context->floor”。
我试着这样做:
<xsl:if test="count(setting[type='apartment'] and setting[context='floor']) < 1">
<!-- do what ever !-->
</xsl:if>
但是好像不行。我在尝试将数字转换为 bool 值时遇到异常?有什么建议吗?
更新: 我发现我可以使用:
<xsl:if test="count(setting[type='apartment' and context='floor']) < 1">
最佳答案
count 中的语句返回不正确的 bool 值。 count() 需要节点集才能对节点进行计数。如果这是相同的设置元素,需要具有具有所需值的 type 和 appartment 元素,那么您可能正在查看:
count(setting[type='apartment' and context='floor']) < 1
否则,如果您需要具有 type=apartment 或 context=floor 的设置元素的总和(不包括具有两个元素都具有所需值的计数设置),您可能需要:
count(setting[type='apartment'] | setting[context='floor']) < 1
关于xml - 计算具有多个条件的 xml 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9185275/