[英]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的新手。 當我從SQL數據庫中檢索它時,如何從XML文檔中檢索這些值?
輸出:
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嗎? 我是新來的。
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.