473,385 Members | 1,925 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,385 software developers and data experts.

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 3014
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
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...
10
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
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?...
20
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...
5
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...
1
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...
2
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>...
7
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....
2
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. ...
10
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...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
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...
0
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,...

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.