是否可以從xQuery打開2個文檔並對它們進行連接?XQuery多個xml文件?
6
A
回答
9
是的,這裏是從XQuery specan example:。
「連接,結合來自多個來源的數據到一個結果,是查詢的一個非常重要的類型在本節中,我們將說明如何將幾個類型的連接都可以在XQuery中表示,我們將立足於以下三個文件我們的例子:
- 名爲
parts.xml
包含許多part
內容的文件;反過來每個part
元素包含partno
和description
子元素。 - 一個名爲
suppliers.xml
的文檔,其中包含許多supplier
元素;每個supplier
元素又包含suppno
和suppname
子元素。 - 一個名爲
catalog.xml
的文檔,其中包含有關供應商和零件之間關係的信息。目錄文件包含許多item
元素,每個元素又包含partno
,suppno
和price
子元素。
傳統(「內部」)連接返回來自兩個或多個相關源的信息,如以下示例所示,該示例組合來自三個文檔的信息。該示例生成從目錄文檔派生的「描述性目錄」,但包含部分描述而不是部件號和供應商名稱,而不是供應商編號。新目錄是由部分描述其次是由供應商名稱的字母順序排列。*
<descriptive-catalog>
{
for $i in fn:doc("catalog.xml")/items/item,
$p in fn:doc("parts.xml")/parts/part[partno = $i/partno],
$s in fn:doc("suppliers.xml")/suppliers
/supplier[suppno = $i/suppno]
order by $p/description, $s/suppname
return
<item>
{
$p/description,
$s/suppname,
$i/price
}
</item>
}
</descriptive-catalog>
前面的查詢只返回大約有供應商和有零部件供應商的零部件信息。 外連接是保留來自一個或多個參與源的信息的連接,包括其他源中沒有匹配元素的元素。例如,留下的供應商和零件之間的外部聯接可能返回有關沒有匹配的零部件供應商的信息。」
請注意,XQuery不具有標準的文件()函數(它是一個XSLT function)而是有doc()功能,這是對「XQuery 1.0 and XPath 2.0 Functions and Operators」部分
有克里斯是在至少回答兩個錯誤:
- XQuery is case sensitive - 在Chris示例中使用的大寫關鍵字不會被符合規範的XQuery處理器所允許。
- 像doc()這樣的標準函數沒有必要加前綴,我只是引用了XQuery規範,它有前綴。否則,在我自己的代碼中,我會忽略「
fn
」前綴。 - 函數document()不是標準的XQuery/XPath函數。應該使用doc()函數。
0
在XQuery中,如果你寫的東西像下面這樣:
for $x in doc('doc1.xml')//a
for $y in doc('doc2.xml')//a
where $x/@name = $y/@name
return $x
那麼你的XQuery處理器應該足夠聰明地發現,這是一個連接。
你永遠不會在XQuery中顯式指定某件事是連接。 XQuery的常見主題是你的程序說你想要什麼信息,而不是如何來計算它。
儘管它看起來像是在實踐中循環遍歷第二個文檔,但真正的XQuery處理器會更智能地執行此操作,大致類似於以下SQL語句(我的SQL非常生鏽,所以如果此語法完全致謝,我表示歉意錯)
SELECT doc1.a
FROM doc1 INNER JOIN doc2
WHERE doc1.name = doc2.name
的XMark基準包含幾個示例查詢,這些都是非常值得一看。特別是查詢9到12執行連接。
0
它是比這更容易(至少使用SAXON):
let $items := (
doc("file1.xml") ,
doc("file2.xml") ,
doc("file3.xml")
)
for $x in $items ...
相關問題
- 1. XML XQuery的多個子元素
- 2. 多個XML「文件」
- 3. 在某些XML文件中收集XQuery
- 4. XQuery查詢,使用兩個xml文檔
- 5. XQuery:將XML文檔插入到第二個XML文檔中
- 6. 如何將多個文件上傳到xquery中的文件夾?
- 7. 帶有三個獨立XML文件的XQuery
- 8. 如何動態地指一個XML文件XQuery中撒克遜
- 9. 如何使用Qt 5和XQuery從另一個XML文件
- 10. Log4j XML - 多個文件appender
- 11. 合併多個XML文件
- 12. 轉換多個XML文件
- 13. 讀取多個XML文件
- 14. xmlhttp.open多個XML文件
- 15. 下載多個XML文件
- 16. 多個tiles-def xml文件
- 17. 導入多個xml文件
- 18. XQuery-將單個文件或多個文件在任何XML數據庫中都很好
- 19. 用於將CSV文件轉換爲XML文件的Xquery
- 20. 使用XQuery將xml文件存儲到eXist xml數據庫中
- 21. 附加多個文件的XML文件
- 22. 將XML拆分爲多個xml文件
- 23. SAS XML映射 - 與多個XML文件
- 24. 將多個xml文件合併爲單個xml文件
- 25. 拆分一個XML文件到多個XML文件,XSLT
- 26. xquery - 文件測試
- 27. 用於eclipse的xquery插件允許我對xml文檔運行xquery代碼
- 28. XQUERY在多個標籤
- 29. 將XML文件分解成多個XML文件
- 30. 在一批xml文件上運行saxon xquery併爲每個輸入文件生成一個輸出文件
這可能是一個錯字,但你打開`file1.xml` 3倍。 – 2012-10-25 17:40:05