我正在使用XSLT 1.0。我的XML文件看起来像这样
<Results>
<comment>Test 1</comment>
<Action>
<Result>Passed</Result>
</Action>
<Action>
<Result>Passed/Result>
</Action>
<comment>Test 2</comment>
<Action>
<Result>Failed</Result>
</Action>
<Action>
<Result>Failed</Result>
</Action>
<comment>Test 3</comment>
<Action>
<Result>Failed</Result>
</Action>
<Action>
<Result>Passed</Result>
</Action>
<Action>
<Result>Failed</Result>
</Action>
<comment>Test 4</comment>
<Action>
<Result>Passed</Result>
</Action>
<Action>
<Result>Passed</Result>
</Action>
<Action>
<Result>Passed</Result>
</Action>
</Results>
如果测试用例失败,如何打印出失败,但每个测试用例只执行一次。我每次都可以使用for-each来打印失败。我这样做的方式,它会在某些情况下打印掉大量的失败,但是我不想看看只有失败的10多行。我尝试过使用count和number,但是我还没有想出任何看起来真的有用的东西。
我的代码看起来像
<xsl:for-each select="Results">
<xsl:for-each select="Action[Result='Failed']">
<tr title = "binit">
<td bgcolor="#CCCCCC">Failed </td>
</tr>
</xsl:for-each>
</xsl:for-each>
如何打印
Test 1
Test 2
Failed
Test 3
Failed
Test 4
而不是
Test 1
Test 2
Failed
Failed
Test 3
Failed
Failed
Test 4
html应该看起来像
<html>
<head>
</head>
<body>
<table>
<tbody>
<tr>
<td>Test 1</td>
</tr>
<tr>
<td>Test 2</td>
</tr>
<tr>
<td>Failed</td>
</tr>
<tr>
<td>Test 3</td>
</tr>
<tr>
<td>Failed</td>
</tr>
<tr>
<td>Test 4</td>
</tr>
</tbody>
</table>
</body>
</html>
答案 0 :(得分:0)
我想你想做点什么:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" version="1.0" encoding="utf-8" indent="yes"/>
<xsl:key name="actions" match="Action" use="generate-id(preceding-sibling::comment[1])" />
<xsl:template match="/Results">
<table>
<xsl:for-each select="comment">
<tr>
<td>
<xsl:value-of select="."/>
</td>
</tr>
<xsl:if test="key('actions', generate-id())[Result='Failed']">
<tr>
<td>Failed</td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:0)
对此感到抱歉..我需要在此处构建一个问题以获取格式..
我怀疑答案是一些丑陋的xslt因为xml输入的结构不能很好地解决问题:你能否将输入xml改为这两个选项之一:
<Results>
<comment>Test 1</comment>
<Actions>
<Action>
<Result>Passed</Result>
</Action>
<Action>
<Result>Passed/Result>
</Action>
</Actions>
...
</Results>
或
<Results>
<Test>
<comment>Test 1</comment>
<Action>
<Result>Passed</Result>
</Action>
<Action>
<Result>Passed/Result>
</Action>
</Test>
...
</Results>