Like Share Discussion Bookmark Smile

J.J. Huang   2022-11-22   XML 2.延伸介紹   瀏覽次數:次   DMCA.com Protection Status

XML教學 | XML 和 XQuery

XSLT是什麼?

XQuery(XML 查詢)是一種查詢和函數式編程語言,用於查詢和轉換結構化非結構化資料的集合,
通常採用XML、文本和其他資料格式(JSON、二進制等)的供應商特定擴展的形式。

該語言由W3CXML Query工作組開發。該工作與XSL工作組的XSLT開發密切協調;
這兩個小組共同負責XPath,它是XQuery的一個子集。

註:圖片截取於w3schools - XML and XPath

  • XQuery是查詢XML資料的語言。
  • 用於XMLXQuery就像用於資料庫的SQL
  • XQuery建立在XPath表達式之上。
  • 所有主要資料庫都支持XQuery
  • XQueryW3C推薦標準。

簡單來說:

1
2
XML Query 項目的使命是提供靈活的查詢工具,從 World Wide Web(全球資訊網)上的真實和虛擬文件中提取資料,
從而最終提供 Web 世界和資料庫世界之間所需的交互。最終,XML 文件的集合將像資料庫一樣被訪問。

XQueryXPath

XQuery是一種為XML所設計,類似SQL的程式語言,包含ForLetWhereSortbyReturn等表達式,
整數、浮點數、字串、日期、時間及XML相關的資料型態,也可設定序列,可說是Xpath的延伸。

Xpath不同的是,XQuery提供一系列的資料類型和控制結構的程式編輯環境,可從XML文件與包含XML的資料庫中,查詢或擷取資料。
XPath是一種可以尋找節點位置的路徑語言,如同硬碟資料夾的檔案路徑,使用一系列的字串,用以描述XML文件中各種元素或節點的位置。

XQuery 1.0XPath 2.0共享相同的資料模型並支持相同的函數和運算符。


簡單的範例

回想一下我們XML教學 | XML 和 XPath用來獲取書籍列表的以下XPath表達式。

1
/bookstore/book

這裏給出了三個版本的XQuery語句,它們實現了顯示價格值大於30的書名。

範例使用 w3schools - Books.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?xml version="1.0" encoding="UTF-8"?>

<bookstore>

<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>

<book category="children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>

<book category="web">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>

<book category="web">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>

</bookstore>
  • 版本一:
    1
    2
    3
    for $x in /bookstore/book
    where $x/price > 30
    return $x/title
  • 版本二:
    1
    2
    3
    4
    for $x in /bookstore
    for $y in $x/book
    where $y/price > 30
    return $y/title
  • 版本三:
    1
    2
    for $x in /bookstore/book[price > 30]
    return $x/title

範例執行效果:
此處使用Pattern matching / XPath 3.1 / XQuery 3.1 / CSS 3 Selector Online Tester

結語

此章節「簡單」介紹了XQuery,使用簡單範例其訪問與操作。
只是因為與XML相關,所以介紹了XQuery,後面會在另外開XQuery的教學。


註:以上參考了
iThome - XQuery
Pattern matching / XPath 3.1 / XQuery 3.1 / CSS 3 Selector Online Tester
w3resource.com - XML and XQuery
億聚網- XQuery XPath
維基百科-XML
維基百科-XQuery
Family with 220 icons by inipagi