我有以下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-&gt;类型“apartment”是否有“context-&gt; floor”。
我试着这样做:
<xsl:if test="count(setting[type='apartment'] and setting[context='floor']) < 1">
<!-- do what ever !-->
</xsl:if>
但它似乎不起作用。关于尝试将数字转换为布尔值我有一个例外吗?有什么建议吗?
更新: 我发现我可以使用:
<xsl:if test="count(setting[type='apartment' and context='floor']) < 1">
答案 0 :(得分:2)
count内部的语句返回布尔值,这是不正确的。 count()要求node-set能够计算节点。如果这是需要具有所需值的type和appartment元素的相同设置元素,那么您可能正在查看:
count(setting[type='apartment' and context='floor']) < 1
否则,如果您需要一个设置元素的总和,其中type = apartment或context = floor(不包括具有所需值的两个元素的计数设置),您可能需要:
count(setting[type='apartment'] | setting[context='floor']) < 1
答案 1 :(得分:0)
如何使用类似的级联谓词?:
count(setting[type='apartment'][context='floor']) < 1