使用XSLT中的条件计数记录

时间:2013-04-26 21:51:48

标签: xml xslt count conditional-statements cdata

我有一个这种结构的xml:

<emails>
<record>
    <field name="host"><![CDATA[yahoo]]></field>
    <field name="user"><![CDATA[abc]]></field>
</record>
<record>
    <field name="host"><![CDATA[gmail]]></field>
    <field name="user"><![CDATA[abc]]></field>
</record>
<record>
    <field name="host"><![CDATA[yahoo]]></field>
    <field name="user"><![CDATA[cdx]]></field>
</record>
</emails>

并且,我想计算host = yahoo的记录数。 我知道我需要使用count(),但我无法弄清楚如何。

1 个答案:

答案 0 :(得分:10)

假设您已定位在电子邮件元素上,这是您可能想要的表达式

<xsl:value-of select="count(record[field[@name='host']/text()='yahoo'])" />

例如,试试这个XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:template match="/emails">
      <xsl:value-of select="count(record[field[@name='host']/text()='yahoo'])" />
   </xsl:template>
</xsl:stylesheet>

假设您的XML格式正确,并且您的CDATA标记格式正确,则应输出3。