共用方式為


比較

若要比較 XPath 中的兩個物件,請使用 = 符號來測試是否相等,或使用 != 測試是否不相等。

若是比較運算,必須確定只提供兩個運算元。接下來評估每個運算元以進行比較,再視需要予以轉換,讓它們擁有相同的型別。這個動作會根據下述<比較優先順序>中的處理程序執行。

所有項目和屬性都是字串,但對於數字比較,則會自動轉換成整數值。在比較運算期間,常值數值會轉換成 long 或 double 型別,如下表所示。

如需有關 < 及其他二進位比較運算子的詳細資訊,請參閱底下的<二進位比較運算子>。

常值型別 比較 範例

String

text(lvalue) op text(rvalue)

a < GGG

Integer

(long) lvalue op (long) rvalue

a < 3

Real

(double) lvalue op (double) rvalue

a < 3.1

可在運算式中將單引號或雙引號當作字串分隔符號。這會使得從指令碼語言中建構和傳遞模式變得更加容易。

如需如何使用 XPath 執行比較的詳細資訊,請參閱 XML 路徑語言 (XPath) 1.0 版<W3C 建議事項 1999 年 11 月 16 日>(英文) 的第 3.4 節<布林值>,其位於 www.w3.org/TR/xpath。

範例

運算式 代表意義

author[last-name = "Bob"]

至少包含一個 <last-name> 項目 (包含值 Bob) 的所有 <author> 項目。

author[last-name[1] = "Bob"]

其第一個 <last-name> 子項目的所有 <author> 項目的值為 Bob

author/degree[@from != "Harvard"]

包含 <degree> 項目 (含有不等於 "Harvard"from 屬性) 的所有 <author> 項目。

author[last-name = /editor/last-name]

包含 <last-name> 項目 (該項目與根項目下的 <editor> 項目內部之 <last-name> 項目相同) 的所有 <author> 項目。

author[. = "Matthew Bob"]

其字串值為 Matthew Bob 的所有 <author> 項目。

比較優先順序

與資料型別相關的比較會遵循優先順序。

  • 若至少有一個運算元是布林值,則會先將每一個運算元轉換成布林值。

  • 否則,若至少有一個運算元是數字,則會先將每一個運算元轉換成數字。

  • 否則,若至少有一個運算元是日期,則會先將每一個運算元轉換成日期。

  • 否則,會先將兩個運算元轉換成字串。

二進位比較運算子

一組二進位比較運算子會比較數字並傳回布林值結果。&lt;&lt;=&gt;&gt;= 運算子分別用於小於、小於或等於、大於,以及大於或等於。可在運算式中將單引號或雙引號當作字串分隔符號。這會使得在指令碼語言中建構和傳遞模式變得更加容易。

請注意,這些比較運算子僅適用於數字。您可以比較字串是否相等,但是如果您想要比較字串來決定哪一個會在排序順序中先出現,您必須使用 Microsoft XPath 擴充程式函式

範例

運算式 代表意義

author[last-name = "Bob" and price &gt; 50]

內含 <last-name> 項目 (含值 Bob) 和 <price> 項目 (其值大於 50) 的所有 <author> 項目。

degree[@from != "Harvard"]

包含不等於 "Harvard"from 屬性的所有 <degree> 項目。

book[position() &lt;= 3]

XML 檔中的前三個 <book> 項目 (1、2、3)。

範例

XML 檔 (test.xml)

XSLT 檔 (test.xsl)

下列 XSLT 樣式表會選取其為文件順序中同層級之第一個項目的所有 <x> 項目。

格式化輸出

以上的 XML 檔轉換會產生下列結果:

<x a="1">
  <x a="2" b="B">
     <x>
        <y>y31</y>
        <y>y32</y>
     </x>
   </x>
</x>
<x a="2" b="B">
   <x>
      <y>y31</y>
      <y>y32</y>
   </x>
</x>
<x>
   <y>y31</y>
   <y>y32</y>
</x>

另請參閱

參考

XPath 範例

概念

XPath 的 XML 檔範例語法 (inventory.xml)