[xquery-talk] Xquery+ reduce two docs into one

David Carlisle davidc at nag.co.uk
Sat Jan 13 00:58:55 PST 2007


a slight tweak of the code I suggested seems to produce the desired
result (I hadn't allowed for multiple value2 with the same value1)

<FF>
{doc('doc1.xml')/FNumber/meta[FileName=doc('doc2.xml')/FocalLength/meta/FileName]/
(
let $f := FileName
 return
doc('doc2.xml')/FocalLength/meta[FileName=$f]/Value1/
<meta>
 {(.,$f/../Value2,
 ../FileName[.=$f])}
  </meta>
)}
</FF>


$ saxon8q docmerge.xq 
<?xml version="1.0" encoding="UTF-8"?>
<FF>
   <meta>
      <Value1>70.0mm</Value1>
      <Value2>8.0</Value2>
      <FileName>file11</FileName>
   </meta>
   <meta>
      <Value1>55.0mm</Value1>
      <Value2>6.3</Value2>
      <FileName>file12</FileName>
   </meta>
   <meta>
      <Value1>6.13mm</Value1>
      <Value2>5.6</Value2>
      <FileName>file6</FileName>
   </meta>
   <meta>
      <Value1>6.0mm</Value1>
      <Value2>4.9</Value2>
      <FileName>file3</FileName>
   </meta>
   <meta>
      <Value1>5.7mm</Value1>
      <Value2>4.9</Value2>
      <FileName>file2</FileName>
   </meta>
   <meta>
      <Value1>7.90mm</Value1>
      <Value2>4.0</Value2>
      <FileName>file1</FileName>
   </meta>
   <meta>
      <Value1>10.0mm</Value1>
      <Value2>4.0</Value2>
      <FileName>file10</FileName>
   </meta>
   <meta>
      <Value1>5.7mm</Value1>
      <Value2>2.9</Value2>
      <FileName>file4</FileName>
      <FileName>file5</FileName>
   </meta>
   <meta>
      <Value1>7.90mm</Value1>
      <Value2>2.8</Value2>
      <FileName>file7</FileName>
      <FileName>file8</FileName>
      <FileName>file9</FileName>
      <FileName>file14</FileName>
      <FileName>file15</FileName>
      <FileName>file16</FileName>
      <FileName>file17</FileName>
      <FileName>file18</FileName>
      <FileName>file19</FileName>
   </meta>
   <meta>
      <Value1>12.0mm</Value1>
      <Value2>16.0</Value2>
      <FileName>file13</FileName>
   </meta>
</FF>



More information about the talk mailing list