Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml XSLT函数;“前的子字符串”&引用;“后的子字符串”;_Xml_Xslt_Xpath - Fatal编程技术网

Xml XSLT函数;“前的子字符串”&引用;“后的子字符串”;

Xml XSLT函数;“前的子字符串”&引用;“后的子字符串”;,xml,xslt,xpath,Xml,Xslt,Xpath,我有以下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"&

我有以下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.结果 3.“步骤编号”,我必须从标题中获得 4.标题 5.“步骤状态”,我必须从标题中获取,标题位于步骤编号之后

下面的xslt给出了类型、结果和标题的值。 但是我无法得到 (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-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>

报告
类型
结果
步骤号
大字标题
步骤状态

萨加尔已经回答了这里和这里的问题,请停止反复问本质上相同的问题。感谢您的时间和回复
<?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>