Hi,
Have couple of problems with XML:
1. How to eliminate first newline. Take a look at SQL*Plus SET parameters closer?
2. How to eliminate newlines after every 80 symbols (SET LINESIZE 2000 maximum don't work). Use ClOBs?
3. I see some extra symbols in names which cause xsl run to fail with LPX-00200: could not convert from encoding UTF-8 to UCS2. How to deal with them? I already tried XMLCDATA.
I try to make code below works as a script run:
SET LONG 20000000
SET LONGCHUNKSIZE 20000000
SET FEEDBACK OFF
SET HEADING OFF
spool report.xml
select '<?xml version="1.0" encoding="UTF-8"?>'||XMLElement("Report", XMLAgg(ReportView)) AS EntireDoc from (
select ReportView from
(SELECT XMLElement("View", XMLAgg(XMLElement("Step", XMLAttributes(stepname AS "Stepname", SUM(obj_count) AS "TotalCount"),
XMLAgg(XMLElement("StepDetail", XMLElement("WorkOrder", wo_name), XMLElement("Count", obj_count))
ORDER BY wo_name
)))) AS ReportView
FROM wo_object
group by stepname
order by stepname));
spool off
exit
It returns output:
<?xml version="1.0" encoding="UTF-8"?><Report><View><Step Stepname="AL009
" TotalCount="36"><StepDetail><WorkOrder>MONTELIN01.01341545_2 EDICION</WorkOrde
r><Count>1</Count></StepDetail><StepDetail><WorkOrder>SDE.DEFAULT</WorkOrder><Co
unt>35</Count></StepDetail></Step><Step Stepname="AL012" TotalCount="367"><StepD
etail><WorkOrder>SDE.DEFAULT</WorkOrder><Count>332</Count></StepDetail><StepDeta
il><WorkOrder>T099372.5908440</WorkOrder><Count>2</Count></StepDetail><StepDetai
l><WorkOrder>T105016.1348784</WorkOrder><Count>2</Count></StepDetail><StepDetail
<WorkOrder>VDSATEL1.5842735</WorkOrder><Count>2</Count></StepDetail><StepDetail
<WorkOrder>VDSATEL2.05822364</WorkOrder><Count>12</Count></StepDetail><StepDeta
il><WorkOrder>ZGZSATEL2.5854594</WorkOrder><Count>1</Count></StepDetail><StepDet
ail><WorkOrder>ZGZSATEL2.5858610</WorkOrder><Count>7</Count></StepDetail><StepDe
tail><WorkOrder>ZGZSATEL2.5869832</WorkOrder><Count>3</Count></StepDetail><StepD
etail><WorkOrder>ZGZSATEL2.5871126</WorkOrder><Count>6</Count></StepDetail></Ste
p><Step Stepname="AL017" TotalCount="510"><StepDetail><WorkOrder>SDE.DEFAULT</Wo
rkOrder><Count>391</Count></StepDetail><StepDetail><WorkOrder>T099372.5908440</W
orkOrder><Count>2</Count></StepDetail><StepDetail><WorkOrder>T105016.1348784</Wo
rkOrder><Count>2</Count></StepDetail><StepDetail><WorkOrder>VDSATEL1.5842735</Wo
rkOrder><Count>24</Count></StepDetail><StepDetail><WorkOrder>VDSATEL2.05822364</
WorkOrder><Count>38</Count></StepDetail><StepDetail><WorkOrder>ZGZSATEL2.5854594
</WorkOrder><Count>1</Count></StepDetail><StepDetail><WorkOrder>ZGZSATEL2.585861
0</WorkOrder><Count>22</Count></StepDetail><StepDetail><WorkOrder>ZGZSATEL2.5867
594</WorkOrder><Count>3</Count></StepDetail><StepDetail><WorkOrder>ZGZSATEL2.586
9832</WorkOrder><Count>12</Count></StepDetail><StepDetail><WorkOrder>ZGZSATEL2.5
871126</WorkOrder><Count>15</Count></StepDetail></Step><Step Stepname="AL019" To
talCount="6"><StepDetail><WorkOrder>SDE.DEFAULT</WorkOrder><Count>6</Count></Ste
pDetail></Step></View></Report>
I have in mind follwoing workflow:
1. Application generates log info.
2. XML report file generated based on log info from step 1.
3. Based on XSL file transform XML report file from step 2 to HTML report.
I like to do it that way to separate data generation and data representation.
PS: I know solution is somewhere close, but can not gaspe it.
Thanks,
Sergiy