how to union, intersection, set-difference and cross-product for xml document? -


i have 3 files xml:

instance s1 sailors (s1.xml):

<xml>      <data>        <sid>22</sid>        <sname>dustin</sname>        <rating>7</rating>        <age>45</age>      </data>       <data>        <sid>31</sid>        <sname>lubber</sname>        <rating>8</rating>        <age>55</age>      </data>       <data>        <sid>58</sid>        <sname>rusty</sname>        <rating>10</rating>        <age>35</age>      </data> </xml> 

instance s2 sailors (s2.xml):

 <xml>      <data>        <sid>28</sid>        <sname>yuppy</sname>        <rating>9</rating>        <age>35</age>      </data>       <data>        <sid>31</sid>        <sname>lubber</sname>        <rating>8</rating>        <age>55</age>      </data>       <data>        <sid>44</sid>        <sname>gruppy</sname>        <rating>5</rating>        <age>35</age>      </data>      <data>        <sid>58</sid>        <sname>rusty</sname>        <rating>10</rating>        <age>35</age>      </data> </xml> 

instance r1 reserves (r1.xml):

 <xml>      <data>        <sid>22</sid>        <bid>101</bid>        <day>10/10/96</day>      </data>      <data>        <sid>58</sid>        <bid>103</bid>        <day>11/12/96</day>      </data> </xml> 

im trying use operator algebra xml file : union (∪), intersection (∩), set-difference (-), , cross-product (×)

im trying search s1 ∪ s2, s1 ∩s2, s1-s2, s1 x r1

for example im trying make new document consisting of s1 ∪ s2 :

<xml>      <data>        <sid>22</sid>        <sname>dustin</sname>        <rating>7</rating>        <age>45</age>      </data>       <data>        <sid>31</sid>        <sname>lubber</sname>        <rating>8</rating>        <age>55</age>      </data>       <data>        <sid>58</sid>        <sname>rusty</sname>        <rating>10</rating>        <age>35</age>      </data>      <data>        <sid>28</sid>        <sname>yuppy</sname>        <rating>9</rating>        <age>35</age>      </data>      <data>        <sid>44</sid>        <sname>gruppy</sname>        <rating>5</rating>        <age>35</age>      </data> </xml> 

anyone can me please ?? i'm trying using xslt..

thanks..

best regards,

rijal

there example functions perform these operations (using xslt 2.0 or xquery 1.0) in w3c functions , operators specification at

http://www.w3.org/tr/xpath-functions/#union-intersect-except-on-values

for example set difference coded in xquery as:

declare function eg:value-except (   $arg1 xs:anyatomictype*,   $arg2 xs:anyatomictype*) xs:anyatomictype*  {   fn:distinct-values($arg1[not(.=$arg2)]) } 

Comments