MarkLogic:XQuery 从 XML 文档中获取值?
MarkLogic: XQuery to Get Values from XML Documents?
我在 MarkLogic 数据库中加载了以下 XML 文档:
<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 数据库中检索它一样?
输出:
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.
注意:不需要竖线分隔,但需要一些集合列表。
有人可以分享一些 link 或帮我写这个 XQuery 吗?我是新手。
XQuery 的序列构造将保存多个值,但它不是分层的 - 因此如果您创建一个序列序列,它会简单地将它们全部连接成一个大序列。
这会将所有子元素和属性值捕获到一个序列中,但是由于我刚才提到的 属性 序列,因此没有内置方法来获取第二本书的第一个值。您必须知道它是第 7 项。第三本书的第一个值将是第 14 项,依此类推:
$books/book/(*|@*)/string()
只是为了演示如何实现竖线分隔列表:
string-join($books/book[1]/(*|@*)/node-name() ! string(), ' | '), (: Create header row :)
for $book in $books/book
return string-join($book/(*|@*)/string(), ' | ')
@wst:非常感谢。出于某种原因,我不能 运行 在 marklogic 中使用相同的方法。可能适用于通用 XML Xquery。但是我找到了以下解决方案
for $x at $i in doc("bookstore.xml")/bookstore/book
return data($x)
我在 MarkLogic 数据库中加载了以下 XML 文档:
<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 数据库中检索它一样?
输出:
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.
注意:不需要竖线分隔,但需要一些集合列表。
有人可以分享一些 link 或帮我写这个 XQuery 吗?我是新手。
XQuery 的序列构造将保存多个值,但它不是分层的 - 因此如果您创建一个序列序列,它会简单地将它们全部连接成一个大序列。
这会将所有子元素和属性值捕获到一个序列中,但是由于我刚才提到的 属性 序列,因此没有内置方法来获取第二本书的第一个值。您必须知道它是第 7 项。第三本书的第一个值将是第 14 项,依此类推:
$books/book/(*|@*)/string()
只是为了演示如何实现竖线分隔列表:
string-join($books/book[1]/(*|@*)/node-name() ! string(), ' | '), (: Create header row :)
for $book in $books/book
return string-join($book/(*|@*)/string(), ' | ')
@wst:非常感谢。出于某种原因,我不能 运行 在 marklogic 中使用相同的方法。可能适用于通用 XML Xquery。但是我找到了以下解决方案
for $x at $i in doc("bookstore.xml")/bookstore/book
return data($x)