XQuery - distinct-values()正在摆脱我的表

时间:2016-11-09 16:33:55

标签: xml xquery

我遇到了distinct-values()函数。

BOOT-INF/classes/static/docs

上面的代码为我提供了以下html输出:

 data = xlsread('test_1.xlsx');
 average_values_1 = data(:,4);
 a = [average_values_1];
 data_cells = num2cell(a);
 column_header ={'Average Value 1'};
 row_header(1,1) ={'File 1'}
 output = [{' '} column_header; row_header data_cells];
 xlswrite('Test Averages.xls', output);

它有3列,但是当我使用distinct-values()时:

for $b in doc("KS0.xml") /bncDoc/stext/div/u/s/w
   let $c := normalize-space(lower-case($b))
   where $c = "has"
   return <tr><td>{$c}</td><td>{$b/following-sibling::w[1]}</td><td></td></tr>

我明白了:

<?xml version="1.0" encoding="UTF-8"?>
<table>
   <tr>
      <th>Target</th>
      <th>Successor</th>
      <th>Frequency</th>
   </tr>
   <tr>
      <td>has</td>
      <td>
         <w c5="AV0" hw="there" pos="ADV">there</w>
      </td>
      <td/>
   </tr>
   <tr>
      <td>has</td>
      <td>
         <w c5="AT0" hw="a" pos="ART">a </w>
      </td>
      <td/>
   </tr>
</table>

1 个答案:

答案 0 :(得分:2)

fn:distinct-values(...)函数仅适用于原子值,如果您为它们提供隐式雾化的XML片段。

要解决原始问题,不要多次包含同一行,您必须将行表示为原子值(例如字符串)并以某种方式检查这些行的唯一性,或者您可以使用fn:deep-equal($seq1, $seq2)进行比较XQL结构上。

如果选择具有原子标识符的方法,则可以使用带有已经看到的标识符的XQuery 3.0 映射来加速唯一性检查。另一个想法是使用group by来收集等效行并为每组输出一行。