我的Xml有以下数据。 我需要获得类型,标题,其中包含标题中的“步骤”和步骤编号
<?xml version="1.0" encoding="ISO-8859-1"?>
<Testlog>
<Event Timestamp="27-Dec-2012 04:25:12.247 PM" Type="Script End" Headline="Script end [DSE.DSEBalanceInquiry_FC.DseBalanceInquiry_FC_Test_003]" Result="WARNING">
<Property script_name="DSE.DSEBalanceInquiry_FC.DseBalanceInquiry_FC_Test_003"/>
<Property script_id="DSE.DSEBalanceInquiry_FC.DseBalanceInquiry_FC_Test_003.java"/>
</Event>
<Event Timestamp="27-Dec-2012 04:25:10.747 PM" Type="Export Event" Headline="getProperty on the List ABC: Trace Facility" Result="PASS">
<Property line_number="434"/>
<Property script_name="DSE.DSEBalanceInquiry_FC.DseBalanceInquiry_FC_Test_003"/>
</Event>
<Event Timestamp="27-Dec-2012 04:16:33.226 PM" Type="General" Headline="_FRMWK.SystemLibrary.Sys_TmxProcesses logStepBegin: Step: 2; Action: node; Narrative: Node: 'DseBalanceInquiry_FC.RST_ACU_DEF(T)' 'Use ACU to Import the default ACU settings xml file. When importing, all the checkboxes are checked in the Application list. i.e. Perform the RestoreAcuDefaults keyword '; TestName: DseBalanceInquiry_FC_Test_003" Result="INFORMATION">
<Property script_name="DSE.DSEBalanceInquiry_FC.DseBalanceInquiry_FC_Test_003"/>
<Property line_number="61"/>
<Property script_id="DSE.DSEBalanceInquiry_FC.DseBalanceInquiry_FC_Test_003.java"/>
</Event>
<Event Timestamp="27-Dec-2012 04:16:33.335 PM" Type="General" Headline="_FRMWK.SystemLibrary.Sys_TmxProcesses logStepBegin: Step: 2.001; Action: ImportACU; Narrative: Import ACU settings based on '' ; TestName: DseBalanceInquiry_FC_Test_003" Result="INFORMATION">
<Property script_name="DSE.DSEBalanceInquiry_FC.DseBalanceInquiry_FC_Test_003"/>
<Property line_number="64"/>
<Property script_id="DSE.DSEBalanceInquiry_FC.DseBalanceInquiry_FC_Test_003.java"/>
</Event>
</Testlog>
编辑了代码。这给了我带有步骤的标题列表,如果我想在单独的行中获取步骤编号,我该如何实现它?
<?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">Title</th>
<th style="text-align:left">Artist</th>
<th style="text-align:left">Step</th>
<th style="text-align:left">Headline</th>
</tr>
<xsl:for-each select="Testlog/Event[contains(@Headline, 'Step:')]">
<tr>
<td><xsl:value-of select="@Type"/></td>
<td><xsl:value-of select="@Result"/></td>
<td><xsl:value-of select="@Step"/></td>
<td><xsl:value-of select="@Headline"/></td>
</tr>
</xsl:for-each>
</table>
答案 0 :(得分:0)
如果您的意思是要添加标题包含&#34;步骤:&#34;将报告作为附加表行,然后替换此行:
<xsl:for-each select="Testlog/Event[@Result='WARNING']">
使用:
<xsl:for-each select="Testlog/Event[@Result='WARNING' or contains(@Headline, 'Step:')]">
如果没有,那么请澄清一些。
还有一个问题,如果我想在单独的行中获取步骤编号, 我怎么能实现它? -
我认为你的意思是单独的列,而不是行?如果是,请在表中添加另一个<td>
元素(在for-each
循环中):
<td><xsl:value-of select="substring-before(substring-after(@Headline, 'Step:'), ';')"/></td>
然后在上面的表格标题中添加相应的<th>
元素。