2014-01-08 3 views
-1

я следующий код XMLXSLT функция "подстрока-до"/"подстрока-после"

<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.Type 2.Result 3.'Step номер ', который я должен получить от заголовка 4.Headline 5.'Step Status', который я должен получить от заголовка, который после номера шага.

следующее xslt дает значения для типа, результата и заголовков. Но я не в состоянии получить (1) Номер шага (только число должно отображаться) (2) Шаг Статус (Зачет/Failed должен показывать не число)

<?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> 
+1

Уже ответили здесь http://stackoverflow.com/questions/20989136/how-to-call-a-xml-element-using-xslt и здесь HTTP: // stackoverflow.com/questions/20991331/reading-a-xml-text-and-placing-it-in-row-using-xslt –

+1

Сагар, пожалуйста, прекратите задавать в основном те же вопросы снова и снова. – Tomalak

ответ

0

Я думаю, вы должны гнездо substring- после того, как вызовы разбора номер шага и статус

<?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> 
+0

Спасибо за ваше время и ответ – sagar

Смежные вопросы