1

i wrote code in xslt to convert xml file to html file. that html file contains tables(approximately 10 tables), and now

my requirement is i need to display how many times the words such as "action","trace","verification" occured in the table. i managed to do with the jquery

the link for jsfiddle to see my work is: http://jsfiddle.net/trinathguptha89/s3Ppq/1/

i need to know is there any way arround i can do that with either xslt or javascript alone

and my xslt code is:

 <?xml version="1.0" encoding="UTF-8"?>
 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="Report/Scripts">
<html>
   <head>
   <title>Mobiuss.rtp Test Execution Results</title>
   <script type="text/javascript" src="jquery.js"></script>
   <style>
   .sortable {table-layout: fixed; width:100%; height:25px; border:1px solid #ccc; background-color:#8B7D7B}
   .sortable th {padding:4px 6px 6px; background:#444; color:#fff; text-align:center; color:#ccc}
   .sortable td {padding:2px 4px 4px; background:#fff; border-bottom:1px solid #ccc;}
   .sortable tr {text-overflow:scroll}
   .sortable tr:hover {color:#FFB90F}
   </style>
   </head>
   <body>
   <xsl:for-each select="Script">
   <h1><xsl:value-of select="@File"/></h1>
    Execution log
   <br>
   </br>
   <div></div>
   <table class="sortable">
   <tr>
   <th>Time</th>
   <th>Position</th>
   <th>Type</th>
   <th>Message</th>
   </tr>
   <xsl:for-each select="Message">
   <tr>
   <td> <xsl:value-of select="@Time"/></td>
   <td>Line <xsl:value-of select="@Line"/></td>
   <td> <xsl:value-of select="@Type"/></td>
   <td> <xsl:value-of select="@Message"/></td>
   </tr>
   </xsl:for-each>
   </table>
   </xsl:for-each>       
   </body>
   </html>   
</xsl:template>
 </xsl:stylesheet>

and the table formed out of the above code can be seen in the jsfiddle link i gave above

My xml file goes here

 <?xml version="1.0" encoding="utf-8"?>
 <Report App="RIATest" Version="4.7" Project="D:\Projects\Automation\RIATest\Nomura\Nomura.rtp">
  <Startup>
  <Message Time="2012-08-30 15:32:38.578" Type="Info" Message="Launching iexplore.exe &quot;http://mobiuss-dev.operasolutions.com:8080/nomura-test/&quot;"/>
  <Message Time="2012-08-30 15:32:38.625" Type="Info" Message="Application launched (process id=4108)."/>
  <Message Time="2012-08-30 15:32:38.625" Type="Info" Message="Waiting for connection from agent..."/>
  <Message Time="2012-08-30 15:32:46.453" Type="Info" Message="Agent connection accepted. Application id=nomura-ui, index=0"/>
</Startup>
<Scripts>
<Script File="Login.rts" Time="2012-08-30 15:32:46.468">
  <Message Time="2012-08-30 15:32:46.531" Type="Verification" Line="8" Col="58"  Message="Verification passed: SparkApplication(&quot;nomura-ui&quot;)=&gt;visible is equal to true"/>
  <Message Time="2012-08-30 15:32:46.578" Type="Verification" Line="10" Col="50" Message="Verification passed: FlexForm(&quot;loginForm&quot;)=&gt;visible is equal to true"/>
  <Message Time="2012-08-30 15:32:46.625" Type="Verification" Line="12" Col="65" Message="Verification passed: FlexLabel(&quot;Username::Username:&quot;)=&gt;text is equal to &quot;Username:&quot;"/>
  <Message Time="2012-08-30 15:32:46.656" Type="Verification" Line="14" Col="65" Message="Verification passed: FlexLabel(&quot;Password::Password:&quot;)=&gt;text is equal to &quot;Password:&quot;"/>
  <Message Time="2012-08-30 15:32:46.671" Type="Verification" Line="17" Col="39" Message="Verification passed: comp=&gt;label is equal to &quot;Log In&quot;"/>
  <Message Time="2012-08-30 15:32:46.703" Type="Verification" Line="18" Col="35" Message="Verification passed: comp=&gt;enabled is equal to true"/>
  <Message Time="2012-08-30 15:32:46.718" Type="Verification" Line="19" Col="35" Message="Verification passed: comp=&gt;visible is equal to true"/>
  <Message Time="2012-08-30 15:32:46.734" Type="Verification" Line="22" Col="35" Message="Verification passed: comp=&gt;enabled is equal to true"/>
  <Message Time="2012-08-30 15:32:46.750" Type="Verification" Line="23" Col="54" Message="Verification passed: comp=&gt;label is equal to &quot;Forgot your password?&quot;"/>
  <Message Time="2012-08-30 15:32:46.765" Type="Verification" Line="24" Col="36" Message="Verification passed: comp=&gt;selected is equal to false"/>
  <Message Time="2012-08-30 15:32:46.781" Type="Verification" Line="25" Col="35" Message="Verification passed: comp=&gt;visible is equal to true"/>
  <Message Time="2012-08-30 15:32:46.796" Type="Verification" Line="28" Col="61" Message="Verification passed: comp=&gt;text is equal to &quot;CORPORATE BOND SPREAD SIGNAL&quot;"/>
  <Message Time="2012-08-30 15:32:46.812" Type="Verification" Line="29" Col="35" Message="Verification passed: comp=&gt;visible is equal to true"/>
  <Message Time="2012-08-30 15:32:46.906" Type="Action" Line="32" Col="64" Message="SparkTextInput(&quot;Username::userName&quot;)=&gt;textSelectionChange(0,0)"/>
  <Message Time="2012-08-30 15:32:47.000" Type="Action" Line="33" Col="63" Message="SparkTextInput(&quot;Username::userName&quot;)=&gt;textInput(&quot;arun.sekar&quot;)"/>
  <Message Time="2012-08-30 15:32:47.031" Type="Action" Line="35" Col="61" Message="SparkTextInput(&quot;Password::password&quot;)=&gt;textInput(&quot;opera100&quot;)"/>
  <Message Time="2012-08-30 15:32:47.093" Type="Action" Line="36" Col="32" Message="SparkButton(&quot;Log In&quot;)=&gt;click()"/>
  </Script>
 </Scripts>
 <Results>
<Summary scripts="2" time="8.515" errors="2"/>
<Script name="Login.rts" time="0.625" errors="0"/>
<Script name="NOM_0002.rts" time="50.000" errors="2" message="Verification failed: comp=&gt;selected is not equal to expected value true, it is actually equal to false"/>
 </Results>
</Report>

1 Answer 1

1

You can do this easily in xslt

example all of Action Type:

<xsl:value-of select="count(Script/Message[@Type='Action'])"/>

example of each table:

<xsl:for-each select="Script">
    Table - <xsl:value-of select="position()"/>
    <xsl:value-of select="count(Message[@Type='Action'])"/>
</xsl:for-each>

for row colors you can use this:

<xsl:variable name="Colour">
<xsl:choose>
  <xsl:when test="contains(@message,'Verification failed:')">background-color:red;</xsl:when>
  <xsl:when test="contains(@message,'Verification passed:')">background-color:green</xsl:when>
  <xsl:otherwise> </xsl:otherwise>
</xsl:choose>
</xsl:variable>

 <tr style="{$Colour}">
   <td> <xsl:value-of select="@Time"/></td>
   <td>Line <xsl:value-of select="@Line"/></td>
   <td> <xsl:value-of select="@Type"/></td>
   <td> <xsl:value-of select="@Message"/></td>
 </tr>
Sign up to request clarification or add additional context in comments.

11 Comments

but i want it for each table and also as a whole.
for example it should disply the word action occured 30 times in total and also it should show the word action occured 10 times in the first table
updated my question with xml file and i had another problem. as you see in my code that the table has class "sortable" i dont know for some reason the first table in the html file created listens to the css and all other tables do not follow the css(except the first one in the same file).. plz help me how to solve this problem
Thanks for the solution. worked like a charm for me :) and i think this is exactly the answer i need. Thanks for spending your time in understanding my problem and writing back the solution. Thank you once again :)
you are really awesome... and again your answer worked like a charm :) thank you once again.(need to change the case of the letter "m" in message for exact answer). But you Rock Man..You seriously Rock and once again thanks for spending time in answering me :)
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.