首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在xquery中使用xpath获取不同值中的‘`for $a’子元素

在xquery中使用xpath获取不同值中的‘`for $a’子元素
EN

Stack Overflow用户
提问于 2014-05-22 23:56:25
回答 1查看 160关注 0票数 0

简单的例子:

sample.xml

代码语言:javascript
复制
<customers>
  <customer>
    <name>Tony</name>
    <order>Burger</order>
    <id>1234</id>
  </customer>
  <customer>
    <name>Kate</name>
    <order>Soda</order>
    <id>5678</id>
  </customer>
</customers

使用XQuery

代码语言:javascript
复制
for $a in distinct-values(doc("sample.xml")/customers/customer)
return
$y

将会返回

代码语言:javascript
复制
Tony
Burger
1234

Kate
Soda
5678

但是,如果我这样做了:

代码语言:javascript
复制
for $a in distinct-values(doc("sample.xml")/customers/customer)
return
$y/name

为了只返回名字,它抛出了一个错误。有谁能解释一下原因吗?我想要访问某些值,而不是整个树。同样,如果我尝试用$y/(某物)做任何事情,比如在where表达式中使用它。

更新:通过使用distinct-values()作为返回表达式,我想出了在某种程度上绕过整体问题的方法,但是我仍然不明白为什么不允许我访问distinct-values for循环中的子元素

EN

回答 1

Stack Overflow用户

发布于 2014-05-23 00:09:37

distinct- values ()将把输入转换成原子值。这意味着只返回内容,因此xml表示将丢失。

如果你真的想这样做,你可以使用像这样的定制函数: functx:distinct-deep:http://www.xqueryfunctions.com/xq/functx_distinct-deep.html

但请记住,在大多数情况下,您不希望这样做,这可能会对性能造成很大的影响

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23811792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档