我有一个这种结构的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(),但我无法弄清楚如何。
答案 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。