当前时间的真假总和 [英] Total of true and false in current time

查看:27
本文介绍了当前时间的真假总和的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个 XML 文档.有没有办法按升序时间和品牌对节点进行排序,然后从开始时间(始终是组中的最低时间)计算这个时间有多少汽车(样本),真假?

I have got this XML document. Is there way how to sort the nodes by ascending time and by brand and then count how many cars (samples), true and false was in this time from start time (always the lowest time in the group)?

<?xml version="1.0" encoding="UTF-8"?>
<trade>
    <car time="1950" brand="audi" trend="true">
    </car>
    <car time="1200" brand="renault" trend="true">
    </car>
    <car time="1000" brand="audi" trend="true">
    </car>
    <car time="2800" brand="renault" trend="true">
    </car>
    <car time="2000" brand="audi" trend="true">
    </car>
    <car time="1500" brand="renault" trend="true">
    </car>
    <car time="1900" brand="audi" trend="false">
    </car>
    <car time="2300" brand="audi" trend="false">
    </car>
    <car time="2100" brand="renault" trend="false">
    </car>
</trade>

想要的 HTML 结果

Wanted result in HTML

推荐答案

考虑在问题文本中包含您下次获得的内容.如果您已经知道如何分组和如何排序,那么您可以轻松处理已排序的序列并获取子序列直到每个项目并检查具有特定趋势的项目的计数,如下所示:

Consider to include what you have got next time in the question text. If you already know how to group and how to sort you can then easily process the sorted sequence and take the subsequence until each item and check the count of the items with a certain trend as follows:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    expand-text="yes"
    version="3.0">


  <xsl:output method="html" indent="yes" html-version="5"/>

  <xsl:template match="/">
    <html>
      <head>
        <title>.NET XSLT Fiddle Example</title>
      </head>
      <body>
        <xsl:apply-templates/>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="trade">
      <xsl:for-each-group select="car" group-by="@brand">
          <h2>{current-grouping-key()}</h2>
          <table>
              <thead>
                  <tr>
                      <th>Total of samples</th>
                      <th>Time</th>
                      <th>Total of TRUE</th>
                      <th>Total of FALSE</th>
                  </tr>
              </thead>
              <xsl:variable name="sorted-cars" as="element(car)*">
                  <xsl:perform-sort select="current-group()">
                      <xsl:sort select="xs:integer(@time)"/>
                  </xsl:perform-sort>
              </xsl:variable>
              <tbody>
                  <xsl:for-each select="$sorted-cars">
                      <tr>
                          <td>{position()}</td>
                          <td>{@time}</td>
                          <xsl:variable name="car-group" select="subsequence($sorted-cars, 1, position())"/>
                          <td>{count($car-group[@trend = 'true'])}</td>
                          <td>{count($car-group[@trend = 'false'])}</td>
                      </tr>
                  </xsl:for-each>
              </tbody>
          </table>
      </xsl:for-each-group>
  </xsl:template>

</xsl:stylesheet>

https://xsltfiddle.liberty-development.net/nc4NzQ1

这篇关于当前时间的真假总和的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆