我遇到了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>
答案 0 :(得分:2)
fn:distinct-values(...)
函数仅适用于原子值,如果您为它们提供隐式雾化的XML片段。
要解决原始问题,不要多次包含同一行,您必须将行表示为原子值(例如字符串)并以某种方式检查这些行的唯一性,或者您可以使用fn:deep-equal($seq1, $seq2)
进行比较XQL结构上。
如果选择具有原子标识符的方法,则可以使用带有已经看到的标识符的XQuery 3.0 映射来加速唯一性检查。另一个想法是使用group by
来收集等效行并为每组输出一行。