【发布时间】:2015-10-23 08:46:26
【问题描述】:
我想使用 Saxon 创建从多个 xml 文件到只有一个 xml(输出。xml)的转换。 xml 文件将由我的测试工具生成,因此可用的 xml 数量没有限制。假设在一个文件夹中我有几个文件:
Summaryfile001.xml
Summaryfile002.xml
Detailsfile001.xml
Detailsfile002.xml
SummaryandDetailsAllFiles.html
我只想获取摘要文件。 SummaryFiles001.xml 内:
<SummaryFile>
<testname>file001</testname>
<Error>1</Error>
<test>1</test>
<skipped>1</skipped>
<failures>0</failures>
<dateAndTime>15082015093021</dateAndtime>
</SummaryFile>
我使用saxon将Junit格式报告转换为一个输出匹配,所以模板:
JUnitFormat.xslt
<xsl:output indent="yes" method="xml"/>
<xsl:param name="fileName" select="'output.xml'" />
<xsl:template match="/">
<xsl:apply-templates mode="inFile" select="collection('file:///C:/Users/Documents/Resultfiles?select=*.xml;recurse=yes')"/>
</xsl:template>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="SummaryFile">
<xsl:variable name="testName" select="//SummaryFile/testname"/>
<xsl:variable name="test" select="//SummaryFile/test"/>
<xsl:variable name="Error" select="//SummaryFile/Error"/>
<xsl:variable name="skipped" select="//SummaryFile/skipped"/>
<xsl:variable name="dateAndtime" select="//SummaryResultsFile/dateAndtime"/>
<xsl:variable name="failures" select="//SummaryFile/failures"/>
<testsuites>
<testsuite name="{$testName}"
tests="{$test}"
time="{$dateAndTime}"
failures="{$failures}"
errors="{$Error}"
skipped="{$skipped}">
</testsuite>
</testsuites>
</xsl:template>
但是,当我尝试使用 saxon 执行此命令时:
java -jar saxon9he.jar -xslt:JUnitTemplate.xslt -s:C:/Users/Documents/Resultfiles -o:Output.xml
我无法进行转换。它说转型失败。我只能对单个 xml 进行转换,但不能对多个 xml 进行转换。所以 xslt 的想法:
1. Look for only Summary Files
2. Get all the data from Summary file.xml
3. Create one output xml contain all summary result file in JUnit format
有人知道我该如何解决这个问题吗?
【问题讨论】:
标签: xml xslt junit automated-tests saxon