merging 2 xml into 1

M

Mael Guillemot

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
 
K

Klaus Johannes Rusch

Mael said:
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???

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]" />
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,990
Messages
2,570,211
Members
46,796
Latest member
SteveBreed

Latest Threads

Top