我有以下XML代码
<Testlog>
<Event Type="General"
Headline="Sys_TmxProcesses: Step: 1; Action:"
Result="INFORMATION">
</Event>
<Event Type="General"
Headline="Test_013 testMain: Step 1 Passed"
Result="INFORMATION">
</Event>
<Event Type="General"
Headline="logStepBegin: Step: 1.001; Action:"
Result="INFORMATION">
</Event>
<Event Type="General"
Headline="onErrorExit: Step 4.001 Failed"
Result="WARNING">
</Event>
<Event Type="Script End"
Headline="Script end [DSE.DseBalanceInquiry_FC_Test_013]"
Result="WARNING">
</Event>
<Event Type="Script End"
Headline="Script end [DSE.DseBalanceInquiry_FC_Test_001]"
Result="FAIL">
</Event>
</Testlog>
现在我只想抓住 1.型号 2.Result 3.'Step number'我必须从标题获得 4.Headline 5.'步骤状态',我必须从标题获取,这是在步骤编号之后。
以下xslt给出了Type,Result和Headlines的值。 但我无法得到 (1)步骤编号(仅显示编号) (2)步骤状态(通过/失败应显示不是数字)
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>Report</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th style="text-align:left">Type</th>
<th style="text-align:left">Result</th>
<th style="text-align:left">Step Number</th>
<th style="text-align:left">Headline</th>
<th style="text-align:left">Step Status</th>
</tr>
<xsl:for-each select="Testlog/Event[@Result='WARNING' or @Result='FAIL' or contains(@Headline, 'Step ')]">
<tr>
<td><xsl:value-of select="@Type"/></td>
<td><xsl:value-of select="@Result"/></td>
<td><xsl:value-of select="substring-after(@Headline,'Step ')"/></td>
<td><xsl:value-of select="@Headline"/></td>
<td><xsl:value-of select="substring-after(@Headline,'Step ')"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:0)
我认为你应该在调用后嵌套子字符串来解析步骤编号和状态
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>Report</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th style="text-align:left">Type</th>
<th style="text-align:left">Result</th>
<th style="text-align:left">Step Number</th>
<th style="text-align:left">Headline</th>
<th style="text-align:left">Step Status</th>
</tr>
<xsl:for-each select="Testlog/Event[@Result='WARNING' or @Result='FAIL' or contains(@Headline, 'Step ')]">
<tr>
<td><xsl:value-of select="@Type"/></td>
<td><xsl:value-of select="@Result"/></td>
<td><xsl:value-of select="substring-before(substring-after(@Headline,'Step '),' ')"/></td>
<td><xsl:value-of select="@Headline"/></td>
<td><xsl:value-of select="substring-after(substring-after(@Headline,'Step '),' ')"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>