Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 如何根据节点值获取子节点的计数?_Xml_Xslt_Xpath - Fatal编程技术网

Xml 如何根据节点值获取子节点的计数?

Xml 如何根据节点值获取子节点的计数?,xml,xslt,xpath,Xml,Xslt,Xpath,我有一个如下的xml <Result> <Message> <Type>Error</Type> <Description>ABC</Description> </Message> <Message> <Type>Warning</Type> <Description>DEF</Descr

我有一个如下的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>
我可以使用count(//Message/Type)获得子记录的总数,结果是4

我想得到错误的总数,我试过了

计数(//消息/类型&eq;“错误”)

但它不起作用

这是我的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"))"/>
总计数错误:

有人能帮忙吗?

首先,如果您想输出每个消息元素的描述,您需要引用描述元素,而不是键入

  <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>
    
    
    
    总计数错误:
    总计数警告:
    总计数信息:
    <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>