473,538 Members | 4,523 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

xml to html (table)

I have a situation where I need to convert an xml file into two types
of tables in html. I have never done anything like this before, so I
have been reading up on it online. However, I am not 100 percent sure
where to begin.

Here is an example of an xml file I have:

<SquishReport version="1.2" >
<summary fatals="0" testcases="13" expected_fails="0"
unexpected_passes="0" warnings="0" tests="180" errors="0" fails="0"
passes="180" />
<testresult message="Start 'suite_second'" result="START"
time="2007-03-23T10:51:43" >Test 'suite_second' started</testresult>
<testresult fatals="0" expected_fails="0" unexpected_passes="0"
warnings="0" errors="0" message="Start 'tst_BooleanApp'"
result="START_TEST_CASE" fails="0" time="2007-03-23T10:51:43"
passes="16" >Test Case 'tst_BooleanApp' started</testresult>
<testresult line="../shared/scripts/common.py:1218"
message="Comparison" result="PASS" time="2007-03-23T10:51:49" >'False'
and 'False' are equal (Member Value test of Default_true at line 52)</
testresult>
<testresult line="test.py:140" message="Read Only Test: Object
property comparison of ':mw.mw->wf.mw->wf->app_spl.QFrame1.mw->wf-
>app_spl->panel.mw->wf->app_spl->panel->tab:f/t.tab pages.mw->wf-
app_spl->panel->tab:f/t-
scroll:all.QViewportWidget1.QFrame1.UI_Check_Box5 .mw->wf->app_spl-
panel->tab:f/t->scroll:all->check_box:read_only.enabled' passed"
result="PASS" time="2007-03-23T10:51:54" >'false' and 'false' are
equal (Read Only Test)</testresult>
<testresult message="End 'tst_BooleanApp'" result="END_TEST_CASE"
time="2007-03-23T10:52:02" >End of test case 'tst_BooleanApp'</
testresult>
<testresult fatals="0" expected_fails="0" unexpected_passes="0"
warnings="0" errors="0" message="Start 'tst_CadNoteApp'"
result="START_TEST_CASE" fails="0" time="2007-03-23T10:52:03"
passes="6" >Test Case 'tst_CadNoteApp' started</testresult>
<testresult line="../shared/scripts/common.py:1218"
message="Comparison" result="PASS" time="2007-03-23T10:52:18" >'test'
and 'test' are equal (Member Value test of Name at line 73)</
testresult>
<testresult line="../shared/scripts/common.py:1218"
message="Comparison" result="PASS" time="2007-03-23T10:52:19" >'test2'
and 'test2' are equal (Member Value test of Author at line 98)</
testresult>
<testresult message="End 'tst_CadNoteApp'" result="END_TEST_CASE"
time="2007-03-23T10:52:31" >End of test case 'tst_CadNoteApp'</
testresult>
<testresult message="End 'suite_second'" result="END"
time="2007-03-23T10:58:16" >End of test 'suite_second'</testresult>
</SquishReport>

I understand the xml file is poorly formated but this is the way test
cases are represented within this certain program. If it needs a
little more explanation: Every time a test suite is run, or a specific
test within that suite, it is represented as a testresult.

I need to make one table that will have every test suite that is run
(every START/END_TEST_CASE) with it's name, a icon of green or red
depending on if everything passed, # of tests run, # of tests passed.

I also need to make a table for each of these test suites that has
each test that resides in that suite. (every other testresult between
each START/END_TEST_CASE)

This tasks seems a little hard for my first try at this, especially
with how the tests are represented in xml. All the help is
appreciated, thanks!

Mar 23 '07 #1
1 3022
in message <11*********************@l77g2000hsb.googlegroups. com>,
fo***********@gmail.com ('fo***********@gmail.com') wrote:
I have a situation where I need to convert an xml file into two types
of tables in html. I have never done anything like this before, so I
have been reading up on it online. However, I am not 100 percent sure
where to begin.

Here is an example of an xml file I have:

<SquishReport version="1.2" >
<summary fatals="0" testcases="13" expected_fails="0"
unexpected_passes="0" warnings="0" tests="180" errors="0" fails="0"
passes="180" />
<testresult message="Start 'suite_second'" result="START"
time="2007-03-23T10:51:43" >Test 'suite_second' started</testresult>
<testresult fatals="0" expected_fails="0" unexpected_passes="0"
warnings="0" errors="0" message="Start 'tst_BooleanApp'"
result="START_TEST_CASE" fails="0" time="2007-03-23T10:51:43"
passes="16" >Test Case 'tst_BooleanApp' started</testresult>
<testresult line="../shared/scripts/common.py:1218"
message="Comparison" result="PASS" time="2007-03-23T10:51:49" >'False'
and 'False' are equal (Member Value test of Default_true at line 52)</
testresult>
<testresult line="test.py:140" message="Read Only Test: Object
property comparison of ':mw.mw->wf.mw->wf->app_spl.QFrame1.mw->wf-
>>app_spl->panel.mw->wf->app_spl->panel->tab:f/t.tab pages.mw->wf-
app_spl->panel->tab:f/t-
scroll:all.QViewportWidget1.QFrame1.UI_Check_Box 5.mw->wf->app_spl-
panel->tab:f/t->scroll:all->check_box:read_only.enabled' passed"
result="PASS" time="2007-03-23T10:51:54" >'false' and 'false' are
equal (Read Only Test)</testresult>
<testresult message="End 'tst_BooleanApp'" result="END_TEST_CASE"
time="2007-03-23T10:52:02" >End of test case 'tst_BooleanApp'</
testresult>
<testresult fatals="0" expected_fails="0" unexpected_passes="0"
warnings="0" errors="0" message="Start 'tst_CadNoteApp'"
result="START_TEST_CASE" fails="0" time="2007-03-23T10:52:03"
passes="6" >Test Case 'tst_CadNoteApp' started</testresult>
<testresult line="../shared/scripts/common.py:1218"
message="Comparison" result="PASS" time="2007-03-23T10:52:18" >'test'
and 'test' are equal (Member Value test of Name at line 73)</
testresult>
<testresult line="../shared/scripts/common.py:1218"
message="Comparison" result="PASS" time="2007-03-23T10:52:19" >'test2'
and 'test2' are equal (Member Value test of Author at line 98)</
testresult>
<testresult message="End 'tst_CadNoteApp'" result="END_TEST_CASE"
time="2007-03-23T10:52:31" >End of test case 'tst_CadNoteApp'</
testresult>
<testresult message="End 'suite_second'" result="END"
time="2007-03-23T10:58:16" >End of test 'suite_second'</testresult>
</SquishReport>

I understand the xml file is poorly formated but this is the way test
cases are represented within this certain program. If it needs a
little more explanation: Every time a test suite is run, or a specific
test within that suite, it is represented as a testresult.
OK, no XML parser can parse that data as presented. The reason is that the
angle bracket characters '<' and '>' are irreducibly magic in XML. So the
first thing you need to do is to replace the right angle bracket
characters in the above which do not delimit markup with '&gt;'. Until you
do that, you can't do anything. If the above is an example which gives all
the problem cases, then passing it through

sed 's/\([ |-]\)>/\1&gt;/g'

would solve the problem.

Having done that, you want templates something like

<xsl:template match="SquishReport">
<html>
<head>
<title>
Froboz
</title>
</head>
<body>
<xsl:apply-templates select="summary"/>
<table>
<xsl:apply-templates select="testresult"/>
</table>
</body>
</html>
</xsl:template>

<xsl:template match="testresult">
<tr>
<th><xsl:value-of select="@message"/></th>
<td><xsl:value-of select="@time"/></td>
<td><xsl:value-of select="@result"></td>
<td><xsl:apply-templates/></td>
</tr>
</xsl:template>

Obviously, I haven't dealt with all your attributes, and I haven't dealt
with your summary - but that should give you a framework to get started.
>
I need to make one table that will have every test suite that is run
(every START/END_TEST_CASE) with it's name, a icon of green or red
depending on if everything passed, # of tests run, # of tests passed.

I also need to make a table for each of these test suites that has
each test that resides in that suite. (every other testresult between
each START/END_TEST_CASE)
Someone cleverer than me may be able to solve this for you; I can't. One
cannot in principle introduce unbalanced markup in XSL, so

<xsl:template select="testresult[@result='END_TEST_CASE']">
</table>
<table>
</xsl:template>

is not going to work. Essentially the thing which generates the XML in the
first place needs to generate a

<SquishReport ...>
<summary ../>
<testcase>
<testresult ...></testresult>
<testresult ...></testresult>
<testresult ...></testresult>
</testcase>
<testcase>
<testresult ...></testresult>
<testresult ...></testresult>
<testresult ...></testresult>
</testcase>
...
</SquishReport>

pattern - or, at least, that would make life MUCH easier for you.

--
si***@jasmine.org.uk (Simon Brooke) http://www.jasmine.org.uk/~simon/

Error 1109: There is no message for this error

Mar 24 '07 #2

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

0
2207
by: SteveJ | last post by:
All, Can someone help me solve the next step. First of all let me say I'm new to php. I pieced the following code together from samples I found on the net and a book I bought called PHP Cookbook. So please forgive me if this isn't the best approach - I'm open to suggestions I finally got my code to work that logs into another site and...
10
26849
by: john T | last post by:
Is there anyway to vertically center a html table using css in such a way it does not alter the html table. When I tryied it just screws up.
10
2278
by: Peter Kirk | last post by:
Hi there can someone please help me with creating dynamic content in a table? For example, see the below javascript and html - why is a new row not created in the table when I click the button? (I am using Internet Explorer 6). <html> <head> <title>TEST</title> <script language="javascript">
20
5595
by: Guadala Harry | last post by:
In an ASCX, I have a Literal control into which I inject a at runtime. litInjectedContent.Text = dataClass.GetHTMLSnippetFromDB(someID); This works great as long as the contains just client-side HTML, CSS, etc. What I want to do is somehow insert a *server control* into the , then set the server control's properties at runtime.
5
4068
by: Andrew | last post by:
Hi, friends, In ASP, we use obj = CreateObject("com.dll") obj.GetHTMLText(inVal, outHTMLTxt1, outHTMLTxt2) to get different HTML strings based on input values. Then, we insert them into proper location of HTML something like the following: <table>
1
16937
by: since | last post by:
I figured I would post my solution to the following. Resizable column tables. Search and replace values in a table. (IE only) Scrollable tables. Sortable tables. It is based on a lot examples I found on the web. Works in IE and mozilla. http://www.imaputz.com/cssStuff/bigFourVersion.html
2
2138
by: lynx129 | last post by:
Hi there , I have php script that works fine under my server but I dont know how to put the html code inside my site. feedback.html <html dir="rtl"> <head> <title> ????? ??? </title> </head> <body>
7
3592
by: imtmub | last post by:
I have a page, Head tag Contains many Scripts and style sheet for Menu and Page. This code working fine and displaying menus and page as i wanted. Check this page for reference. http://www.marco.com.cn/web-content/marco_re10.html -------------------------------------------------------------- <head> <!-- InstanceBeginEditable...
2
3039
by: sateeshchandrasanga | last post by:
Hi All, My HTML code is working fine in Firefox.But its not displaying any thing in IE.Can you help me in this problem.And in Google crown its displaying but not properly. contactus.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html...
10
6934
by: happyse27 | last post by:
Hi All, I got this apache errors(see section A1 and A2 below) when I used a html(see section b below) to activate acctman.pl(see section c below). Section D below is part of the configuration of section c. Not sure where went wrong as the web page displayed internal server error. Also, what is the error 543? and error 2114....
0
7365
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main...
0
7308
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language...
0
7536
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. ...
0
7694
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that...
0
7650
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the...
0
5829
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then...
0
3353
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
933
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
0
591
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.