【发布时间】:2012-07-06 13:43:55
【问题描述】:
我必须使用 xpath 1.0 在两个不同节点上使用两个标准在 xml 中找到一个值
我试着用一个例子来解释:如果我们有以下xml
<root>
<obj>
<index>5</index>
<datalist>
<data>
<code>X</code>
<value>AAA</value>
</data>
<data>
<code>Y</code>
<value>BBB</value>
</data>
</datalist>
</obj>
<obj>
<index>3</index>
<datalist>
<data>
<code>Z</code>
<value>CCC</value>
</data>
</datalist>
</obj>
<obj>
<index>4</index>
<datalist>
<data>
<code>X</code>
<value>DDD</value>
</data>
</datalist>
</obj>
<obj>
<index>2</index>
<datalist>
<data>
<code>Y</code>
<value>EEE</value>
</data>
</datalist>
</obj>
我们希望在<obj> 中检索<obj/data> 的<value> 和<code=X>,最小为<index>(在我们的例子中,我们将得到DDD)。
我尝试了以下表达式,但它似乎不起作用:
/root/obj[datalist/data/code='X'][not(preceding-sibling::obj/index <= index)
and not(following-sibling::obj/index <= index)]/datalist/data/value
但它不起作用
【问题讨论】:
-
请改写您的问题或检查语法,好像有些东西不见了...
-
当它的
obj/index是4 并且同时有一个obj/index =2时,“DDD”如何成为想要的结果?这种矛盾使这个问题毫无意义。请编辑并更正。 -
你说得对,我已经修复了示例,表明我正在找到最小的 obj/index 但 obj/datalist/data/code = X
标签: debugging xpath subquery predicate xpath-1.0