xml - 没有重复的排序表
问题描述
早上好,
我有一个具有以下结构的 XML 文件:
<Reports>
<UUTs>
<Results>
<SerialNumberToSearch></SerialNumberToSearch>
<Result ID="0">
<SerialNumber>1234</SerialNumber>
<Status>Fail</Status>
<Date>2021-03-05T08:15:21</Date>
</Result>
<Result ID="1">
<SerialNumber>1234</SerialNumber>
<Status>Fail</Status>
<Date>2021-03-05T08:23:23</Date>
</Result>
<Result ID="2">
<SerialNumber>1234</SerialNumber>
<Status>Fail</Status>
<Date>2021-03-05T08:16:23</Date>
</Result>
<Result ID="3">
<SerialNumber>6556175708</SerialNumber>
<Status>Pass</Status>
<Date>2021-03-05T09:15:21</Date>
</Result>
<Result ID="4">
<SerialNumber>1234</SerialNumber>
<Status>Pass</Status>
<Date>2021-03-05T08:17:21</Date>
</Result>
<Result ID="5">
<SerialNumber>11908817202</SerialNumber>
<Status>Pass</Status>
<Date>2021-03-05T07:11:21</Date>
</Result>
<Result ID="6">
<SerialNumber>2406339084</SerialNumber>
<Status>Pass</Status>
<Date>2021-03-05T08:15:21</Date>
</Result>
</Results>
</UUTs>
</Reports>
我想将此 XML 转换为按日期排序并且没有序列号重复的表。这就是我到目前为止所拥有的:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="UUTs/Results">
<fo:block >
<fo:table table-layout="fixed" width="100%">
<fo:table-header>
<fo:table-row keep-with-next="always" background-color="#EAEAEA">
<fo:table-cell xsl:use-attribute-sets="myBorder" padding-left="3mm">
<fo:block font-weight="bold" font-family="sans-serif">Serial Number</fo:block>
</fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding-left="3mm">
<fo:block font-weight="bold" font-family="sans-serif">Test Result</fo:block>
</fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding-left="3mm">
<fo:block font-weight="bold" font-family="sans-serif">Date</fo:block>
</fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding-left="3mm">
<fo:block font-weight="bold" font-family="sans-serif">Time</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-header>
<fo:table-body>
<xsl:for-each select="Result">
<xsl:sort select="./Date" order="descending"/>
<fo:table-row>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding-left="3mm">
<fo:block><xsl:value-of select="./SerialNumber"/></fo:block>
</fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding-left="3mm">
<fo:block><xsl:value-of select="./Status"/></fo:block>
</fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding-left="3mm">
<fo:block><xsl:value-of select="substring(./Date,0,11)"/></fo:block>
</fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding-left="3mm">
<fo:block><xsl:value-of select="substring(./Date,12,8)"/></fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:for-each>
</fo:table-body>
</fo:table>
</fo:block>
</xsl:template>
</xsl:stylesheet>
这是我要查找的表中的输出:
序列号 | 测试结果 | 日期 | 时间 |
---|---|---|---|
6556175708 | 经过 | 2021-03-05 | 09:15:21 |
1234 | 失败 | 2021-03-05 | 08:23:23 |
11908817202 | 经过 | 2021-03-05 | 07:11:21 |
2406339084 | 经过 | 2021-03-05 | 07:11:21 |
我现在需要以某种方式删除 SerialNumber 重复项,但我不知道该怎么做。我尝试了不同的解决方案,但由于我缺乏知识而失败了。
解决方案
推荐阅读
- python - 如何刷新 Python IO 流
- kubernetes - 如何查看 VS 2019 YAML 模板输出生成
- django - 从 shell 脚本运行测试时,Apache jena-fuseki 服务器拒绝连接
- excel - VBA 公式 R1C1 不接受方括号内的计算
- ruby-on-rails - 在 has_many 关系中进行分配是在数据库中进行更新
- python - 如何从列表中提取特征?
- flutter - Flutter:在最终构建时忽略文件夹
- sql-server - 报表查看器中的存储过程
- cypress - 我们希望在父窗口中找到全局赛普拉斯,但它不见了!柏树中的错误
- azure - 如果 Azure AKS 群集没有区域感知,这意味着什么?