我具有类似于以下内容的XML数据:
<?xml version="1.0" encoding="utf-8"?>
<Database>
<ResultsStore>
<Result Type="A">
<Info Value="3" />
</Result>
<Result Type="B">
<Info Value="0" />
</Result>
<Result Type="C">
<Info Value="1" />
</Result>
</ResultsStore>
<ResultsStore>
<Result Type="A">
<Info Value="3" />
</Result>
<Result Type="B">
<Info Value="0" />
</Result>
<Result Type="C">
<Info Value="0" />
</Result>
</ResultsStore>
<ResultsStore>
<Result Type="A">
<Info Value="3" />
</Result>
<Result Type="B">
<Info Value="1" />
</Result>
<Result Type="C">
<Info Value="1" />
</Result>
</ResultsStore>
<!-- etc. -->
</Database>
我需要计算具有非零信息值的结果B或结果C的结果存储的数量。在上面的代码示例中,三个ResultsStores的计数应为2。
我编写了以下代码,但由于它不仅只对B或C进行一次计数,因此给出了错误的3值:
<xsl:variable name="results_stores_count">
<xsl:value-of select="count(Database/ResultsStore/Result[@Type='A' or @Type='B']/Info[not(@Value=0)]) />
</xsl:variable>
任何帮助或解决方法将不胜感激。
答案 0 :(得分:1)
计算具有结果B或结果C且信息值不为零的结果存储的数量。
如果您要计算ResultsStores,则不要计算结果。另外,如果您要计算类型B和C,则不要计算类型A和B。
尝试:
<xsl:value-of select="count(Database/ResultsStore[Result[@Type='B']/Info/@Value!=0 or Result[@Type='C']/Info/@Value!=0]) "/>