繁体   English   中英

XQuery:如何选择唯一的节点

[英]XQuery: How to select unique nodes

我必须得到某个节点的所有当前值。 我找到了这个问题。 我的XML文件看起来不一样。 所以我有多个具有相同名称的元素。

  <instance>
    <value>0</value>
    <value>0.72</value>
    <value>0</value>
    <value>0.72</value>
    <value>2</value>
    <value>22</value>
  </instance>
  <instance>
    <value>10000000</value>
    <value>0.72</value>
    <value>0</value>
    <value>0.72</value>
    <value>1</value>
    <value>22</value>
  </instance>
  <instance>
    <value>20000000</value>
    <value>0.64</value>
    <value>-0.04</value>
    <value>0.68</value>
    <value>1</value>
    <value>22</value>
  </instance>

以下查询是选择每个5th值:

new XQuery("doc('database/dataset.xml')/dataset/body/instances/instance/value[5]")

结果如下:

<value>2</value>

<value>1</value>

<value>1</value>

如何合并链接问题的已接受答案以获得所需的输出:

<value>2</value>

<value>1</value>

我觉得它看起来像

doc('database/dataset.xml')
/dataset
/body
/instances
/instance[ not(value[5] = preceding-sibling::instance/value[5]) ]
/value[5]

(使用编辑后接受的答案技巧)

我还建议另一个答案,因为这是XQuery,它允许元素构造函数。 但这仅适用于节点的标识不相关的情况:

for $value in distinct-values(
  doc('database/dataset.xml')/dataset/body/instances/instance/value[5]
)
return <value>{$value}</value>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM