Connecting Tech Pros Worldwide Forums | Help | Site Map

merging 2 xml into 1

Mael Guillemot
Guest
 
Posts: n/a
#1: Jul 20 '05
Hi,

I have one xml looking like this:

=========================
<video>
<shot id="1">
<timestampbegin>000030.90</timestampbegin>
<feature>blabla</feature>
<timestampbegin>000045.20</timestampbegin>
</shot>
<shot id="2">
.....
</video>
=========================

Another xml gives simple information about the clustering of video shots
into scenes looking like that:

=========================
<video>
<scene id="1">
<shot id="1"></shot>
<shot id="4"></shot>
<shot id="5"></shot>
</scene>
<scene id="2">
<shot id="2"></shot>
<shot id="3"></shot>
<shot id="6"></shot>
<shot id="7"></shot>
</scene>
.....
</video>
=========================

I wish to merge both XML into one like:

=========================
<video>
<scene id="1">
<shot id="1">
<timestampbegin>000030.90</timestampbegin>
<feature>blabla</feature>
<timestampbegin>000045.20</timestampbegin>
</shot>
<shot id="4">
.......................
</shot>
<shot id="5">
......................
</shot>
</scene>
<scene id="2">
<shot id="2"> ............................... </shot>
<shot id="3"> ............................... </shot>
<shot id="6"> ............................... </shot>
<shot id="7"> ............................... </shot>
</scene>
........
</video>
=========================

Does anybody know how this kind of simple merging can be done?? using
simple perl with XML::simple or xerces or xalan???

thanks for any hints,

Maël



Klaus Johannes Rusch
Guest
 
Posts: n/a
#2: Jul 20 '05

re: merging 2 xml into 1


Mael Guillemot wrote:
[color=blue]
> I have one xml looking like this:
>
> =========================
> <video>
> <shot id="1">
> <timestampbegin>000030.90</timestampbegin>
> <feature>blabla</feature>
> <timestampbegin>000045.20</timestampbegin>
> </shot>
> <shot id="2">
> ....
> </video>
> =========================
>
> Another xml gives simple information about the clustering of video shots
> into scenes looking like that:
>
> =========================
> <video>
> <scene id="1">
> <shot id="1"></shot>
> <shot id="4"></shot>
> <shot id="5"></shot>
> </scene>
> <scene id="2">
> <shot id="2"></shot>
> <shot id="3"></shot>
> <shot id="6"></shot>
> <shot id="7"></shot>
> </scene>
> ....
> </video>
> =========================
>
> I wish to merge both XML into one like:
>
> =========================
> <video>
> <scene id="1">
> <shot id="1">
> <timestampbegin>000030.90</timestampbegin>
> <feature>blabla</feature>
> <timestampbegin>000045.20</timestampbegin>
> </shot>
> <shot id="4">
> ......................
> </shot>
> <shot id="5">
> .....................
> </shot>
> </scene>
> <scene id="2">
> <shot id="2"> ............................... </shot>
> <shot id="3"> ............................... </shot>
> <shot id="6"> ............................... </shot>
> <shot id="7"> ............................... </shot>
> </scene>
> .......
> </video>
> =========================
>
> Does anybody know how this kind of simple merging can be done?? using
> simple perl with XML::simple or xerces or xalan???[/color]

XSLT looks like a good choice for this problem (of course you can do this in
Perl as well by parsing the documents and processing the document trees in
Perl).

I would recommend the following approach: Use the second document (scenes)
as your primary document, process each scene in sequence and pull in shot
information from the other file using the document() function, something
like

<xsl:copy-of select="document('shots.xml')/video/shot[@id = $thisid]" />



--
Klaus Johannes Rusch
KlausRusch@atmedia.net
http://www.atmedia.net/KlausRusch/


Closed Thread