我有一个以下的xml。
<Result>
<Message>
<Type>Error</Type>
<Description>ABC</Description>
</Message>
<Message>
<Type>Warning</Type>
<Description>DEF</Description>
</Message>
<Message>
<Type>Error</Type>
<Description>GHI</Description>
</Message>
<Message>
<Type>Information</Type>
<Description>IJK</Description>
</Message>
</Result>
我希望结果像
ABC
DEF
GHI
JKL
Total Error: 2
Total warning: 1
Total Information:1
我能够使用count(// Message / Type)获得子记录的总数,结果是4。
我想得到错误的总数,我试过
count(//消息/类型&amp; eq;&#34;错误&#34;)
但它没有用。
这是我的xsl。
<ul>
<xsl:for-each select="Message">
<li>
<xsl:value-of select="./Type" />
</li>
</xsl:for-each>
</ul>
Total Count Error:<xsl:value-of select="(count(//Error/Type &eq; "Error"))"/>
有人可以帮忙吗?
答案 0 :(得分:2)
首先,如果要输出每个消息元素的描述,则需要引用描述元素,而不是类型
<xsl:for-each select="Message">
<li>
<xsl:value-of select="Description" />
</li>
</xsl:for-each>
在累加总误差方面,表达式如下(假设您位于父结果元素上。
<xsl:value-of select="count(Message[Type = 'Error'])"/>
试试这个XSLT
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="html" indent="yes"/>
<xsl:template match="Result">
<ul>
<xsl:for-each select="Message">
<li>
<xsl:value-of select="Description" />
</li>
</xsl:for-each>
</ul>
Total Count Error:<xsl:value-of select="count(Message[Type = 'Error'])"/><br />
Total Count Warning:<xsl:value-of select="count(Message[Type = 'Warning'])"/><br />
Total Count Information:<xsl:value-of select="count(Message[Type = 'Information'])"/><br />
</xsl:template>
</xsl:stylesheet>