我必须根据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>
我已经在doc和一些例子中读过,我们可以使用函数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不会输出任何内容: - /
有可能实现这个目标吗?
答案 0 :(得分:0)
我明白这个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>