首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MarkLogic:从XQuery文档中获取值?

MarkLogic:从XQuery文档中获取值?
EN

Stack Overflow用户
提问于 2016-04-08 23:38:59
回答 2查看 765关注 0票数 3

我在MarkLogic数据库中加载了以下XML文档:

代码语言:javascript
复制
<x:books xmlns:x="urn:books">
  <book id="bk001">
    <author>Writer</author>
    <title>The First Book</title>
    <genre>Fiction</genre>
    <price>44.95</price>
    <pub_date>2000-10-01</pub_date>
    <review>An amazing story of nothing.</review>
  </book>
  <book id="bk002">
    <author>Poet</author>
    <title>The Poet's First Poem</title>
    <genre>Poem</genre>
    <price>24.95</price>
    <review>Least poetic poems.</review>
  </book>
</x:books>

我是XQuery的新手。我如何从XML文档中检索值,就像从SQL数据库中检索它一样?

输出:

代码语言:javascript
复制
BookID | Author | Title | Genre | price | pub_date | review
bk001 | Writer | The First Book | Fiction | 44.95 | 2000-10-01
bk002 | Poet | The Poet's First Poem | Poem | 24.95 | Least poetic poems.

注意:不是必要的管道分隔,而是一些集合列表。

有人能分享一些链接或帮助我编写这个XQuery吗?我对这件事不熟悉。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-11 18:35:10

XQuery的序列构造将包含多个值,但它并不是分层的--因此,如果您创建一个序列序列,它将简单地将它们连接到一个大序列中。

这将将所有子元素和属性值捕获到一个序列中,但是由于我刚才提到的序列的属性,因此不需要构建第二本书的第一个值。你得知道这是第七项。第三本书的第一个价值将是第14项,等等:

代码语言:javascript
复制
$books/book/(*|@*)/string()

仅为了演示如何实现管道分隔列表:

代码语言:javascript
复制
string-join($books/book[1]/(*|@*)/node-name() ! string(), ' | '), (: Create header row :)
for $book in $books/book
return string-join($book/(*|@*)/string(), ' | ')
票数 4
EN

Stack Overflow用户

发布于 2016-04-11 20:19:19

@wst:非常感谢。由于某些原因,我无法在marklogic中运行相同的程序。可能它适用于一般的Xquery。但是我找到了下面的解决方案

代码语言:javascript
复制
for $x at $i in doc("bookstore.xml")/bookstore/book
return data($x)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36510984

复制
相关文章

相似问题

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