【问题标题】:Parse a collection of XML files to generate synthesis report解析一组 XML 文件以生成综合报告
【发布时间】:2023-03-04 04:09:02
【问题描述】:

我必须根据一组 xml 文件生成报告。 每天都会从系统中提取一些统计信息,我想生成一个 HTML 报告,该报告读取当前目录中的所有 xml 输入文件(由“Daily Request*.xml”之类的掩码标识)。

“每日请求文件”示例:每日请求Extract_20130205-130822.xml

<?xml version="1.0" encoding="UTF-8"?>
<tasks startDate="2013/02/04 13:08:21" endDate="2013/02/05 13:08:21" environment="Q000">
  <task create="2013/02/04 20:44:15" type="deliverDistrib" jobName="TUAJW1W0" mode="Batch" synch="false" status="Completed" duration="633.44" />
  <task create="2013/02/05 08:18:36" type="deliverDistrib" jobName="LVAJW1W0" mode="Online" synch="true" status="Completed" duration="48.35" />
  <task create="2013/02/05 08:19:21" type="deliverDistrib" jobName="LVAJW1W0" mode="Online" synch="false" status="Completed" duration="17.36" />
  <task create="2013/02/05 08:19:21" type="deliverDistrib" jobName="LVAJW1W0" mode="Online" synch="false" status="Completed" duration="2.93" />
  <task create="2013/02/05 08:19:26" type="deliverDistrib" jobName="LVAJW1W0" mode="Online" synch="true" status="Completed" duration="9.57" />
  <task create="2013/02/05 08:19:34" type="deliverDistrib" jobName="LVAJW1W0" mode="Online" synch="false" status="Completed" duration="8.67" />
  <task create="2013/02/05 08:19:34" type="deliverDistrib" jobName="LVAJW1W0" mode="Online" synch="false" status="Completed" duration="2.95" />
  <task create="2013/02/05 08:21:23" type="deliverDistrib" jobName="LVAJW1W0" mode="Online" synch="true" status="Completed" duration="7.87" />
  <task create="2013/02/05 08:21:30" type="deliverDistrib" jobName="LVAJW1W0" mode="Online" synch="false" status="Completed" duration="5.87" />
</tasks>

我已经阅读了文档和一些示例,我们可以使用函数 document() 检索外部文件。但显然它不支持通配符。 我发现另一个线程说我们必须使用 Xpath 函数:collection()

类似

collection('file:///./?select=Daily*.xml')

我想开始将所有元素连接到一个流中,以便我可以从中编写报告。

我建议的代码:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet exclude-result-prefixes="xs" version="2.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="*">
  <xsl:for-each select="collection('file:///./?select=Daily*.xml')/tasks">
     <xsl:copy-of select="."/>
  </xsl:for-each>
</xsl:template>
</xsl:stylesheet>

但是 id 没有输出任何东西 :-/

有没有可能做到这一点?

【问题讨论】:

    标签: xml xpath wildcard xslt-2.0


    【解决方案1】:

    我显然用这个 xsl 明白了:

    <xsl:stylesheet exclude-result-prefixes="xs" version="2.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="*">
      <xsl:for-each select="collection('./?select=Daily*.xml')/tasks">
         <xsl:copy-of select="task"/>
      </xsl:for-each>
    </xsl:template>
    </xsl:stylesheet>
    

    【讨论】:

      猜你喜欢
      • 2020-07-27
      • 1970-01-01
      • 2011-01-28
      • 1970-01-01
      • 2021-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多