XQuery:如何选择唯一的节点

时间:2017-02-14 00:36:05

标签: xml xquery

我必须得到某个节点的所有现值。 我发现this已回答了问题。 我的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>

2 个答案:

答案 0 :(得分:0)

我认为它看起来像

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

(使用已编辑的已接受回答技巧)

答案 1 :(得分:0)

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

<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<section class='wrapper__banner'>
			<div class='screens'>
				<div class='screen screen--1 is-visible'>
					screen--1
					<a href="screen--2">to screen 2</a>
				</div>
				<div class='screen screen--2 right'>
					screen--2
						<a href="screen--3">to screen 3</a>
						<a href="screen--5">show screen 5</a>
				</div>
				<div class='screen screen--3 right'>
					screen--3
						<a href="screen--4">to screen 4</a>
				</div>
				<div class='screen screen--4 right'>
					screen--4
				</div>
				<div class='screen screen--5 top'>
					screen--5
				</div>
			</div>
</section>