雖然 XPath 和 XQuery 都能實現一些相同的功能,但是 XPath 比較簡潔而 XQuery 更加強大和靈活。對於很多查詢來說 XPath 非常合適。比如,從 XML 文 檔中的部分記錄建立電話號碼的無序列表,使用 XPath 實現最簡單。但是如果需 要表達更複雜的記錄選擇條件的運算式、轉換結果集或者進行遞迴查詢,則需要 使用 XQuery。
XPath
XPath 是一種領域專用語言(Domain- Specific Language, DSL),並很快成為了其他更通用語言的重要組成部分。程式設計語言通過模組和類把 XPath 結合進來,有時候甚至直接進入語言的文法。這種 情況和以前Regex的情況類似。
由於從 XML 文檔中提取特定的資料 時,XPath 能夠為開發人員節省大量的時間和精力,XPath 得以流行起來。即使 從未接觸過 XPath 的人也能很快利用其強大的功能。比如清單 1 中的 XML 片段 。
清單 1. XML 文檔
<users>
<user>
<name>
<first>Lola</first>
<last>Solis</last>
</name>
<age>2</age>
</user>
<user>
<name>
<first>Nina</first>
<last>Serafina</last>
</name>
<age>4</age>
<visits>
<first>2008-01-15</first>
<last>2008-02 -15</last>
</visits>
</user>
<user>
<name>
<first>Tracy</first>
<last>Keller</last>
</name>
<age>35</age>
</user>
</users>
如果需要獲得文檔中青少年的姓氏列表,可使用 下面的 XPath 運算式。
清單 2. 選擇 18 歲以下使用者的姓氏
/user[age lt 18]/name/last/text()
(: Result
Solis
Serafina
:)