2014-01-08 55 views
0

我有以下XML文件。我需要輸出TypeHeadlineEvent元素,它們的Headline中包含'step'和步驟編號。讀取XML文本並使用XSLT將其置於行中

<?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:16:33.335 PM" Type="General" Headline="_FRMWK.SystemLibrary.Sys_TmxProcesses logStepBegin: Step: 2.001; Action: ImportACU; Narrative:    Import ACU settings based on &apos;&apos; ; 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> 

我的XSLT代碼給了我一個包含「step」的標題列表。如果我想在單獨的行中獲得步驟號碼,我該如何實現它?

<?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> 
    </body> 
    </html> 
</xsl:template> 

</xsl:stylesheet> 
+0

什麼是 「步數」,即它在哪裏在你輸入XML? –

+0

其在頭條,標題=「_ FRMWK.SystemLibrary.Sys_TmxProcesses logStepBegin:步:2.001; 我想步驟編號(2.001)連續 – sagar

回答

0

下面的樣式表做你想要的。這條線:

<xsl:value-of select="substring-before(substring-after(@Headline,'Step: '),';')"/> 

提取Headline屬性,該屬性是步數的一部分,使用子串之後和substring-之前的組合。

此外,我已將您的列標題更改爲更有意義的內容。顯然,你已經從W3Schools中拿走了他們。在描述你的意圖時請小心:我不相信「不要在」單獨的行中輸入「步數」。你想要在同一行中的步驟號,並打算說「在一個單獨的列」,對吧?

樣式

<?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> 
      </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="substring-before(substring-after(@Headline,'Step: '),';')"/></td> 
       <td><xsl:value-of select="@Headline"/></td> 
       </tr> 
      </xsl:for-each> 
     </table> 
    </body> 
    </html> 
</xsl:template> 

</xsl:stylesheet> 

輸出

<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> 
    </tr> 
    <tr> 
     <td>General</td> 
     <td>INFORMATION</td> 
     <td>2.001</td> 
     <td>_FRMWK.SystemLibrary.Sys_TmxProcesses logStepBegin: Step: 2.001; Action: ImportACU; Narrative:    Import ACU settings 
      based on '' ; TestName: DseBalanceInquiry_FC_Test_003 
     </td> 
    </tr> 
    </table> 
</body> 
</html> 
+0

非常感謝您的回覆和時間 – sagar

+0

雅這是正確的,我想要的數字在一個柱 – sagar

相關問題