久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

XPath

來自站長百科
Wutingting討論 | 貢獻2012年3月1日 (四) 11:36的版本
(差異) ←上一版本 | 最后版本 (差異) | 下一版本→ (差異)
跳轉至: 導航、? 搜索

XPath即為XML路徑語言(XML Path Language),它是一種用來確定XML文檔中某部分位置的語言。

簡介[ ]

XPath 是一門在 XML 文檔中查找信息的語言。XPath 用于在 XML 文檔中通過元素和屬性進行導航。

什么是 XPath?

  • XPath 使用路徑表達式在 XML 文檔中進行導航
  • XPath 包含一個標準函數庫
  • XPath 是 XSLT 中的主要元素
  • XPath 是一個 W3C 標準

XPath 表示法[ ]

最常見的XPath表達式是路徑表達式(XPath這一名稱的另一來源)。路徑表達式是從一個XML節(jié)點(當前的上下文節(jié)點)到另一個節(jié)點、或一組節(jié)點的書面步驟順序。這些步驟以“/”字符分開,每一步有三個構成成分:

  • 軸描述(用最直接的方式接近目標節(jié)點)
  • 節(jié)點測試(用于篩選節(jié)點位置和名稱)
  • 節(jié)點描述(用于篩選節(jié)點的屬性和子節(jié)點特征)

一般情況下,我們使用簡寫后的語法。雖然完整的軸描述是一種更加貼近人類語言,利用自然語言的單詞和語法來書寫的描述方式,但是相比之下也更加羅嗦。

簡寫后的語法最簡單的XPath如下:

  • /A/B/C

在這里選擇所有符合規(guī)矩的C節(jié)點:C節(jié)點必須是B的子節(jié)點(B/C),同時B節(jié)點必須是A的子節(jié)點(A/B),而A是這個XML文檔的根節(jié)點(/A)。此時的這種描述法類似于磁盤中文件的路徑(URI),從盤符開始順著一級一級的目錄最終找到文件。

這里還有一個復雜一些的例子,包含了全部構成成分(請詳細的看):

  • A//B/*[1]

此時選擇的元素是:在B節(jié)點下的第一個節(jié)點(B/*[1]),不論節(jié)點的名稱如何(*);而B節(jié)點必須出現在A節(jié)點內,不論和A節(jié)點之間相隔幾層節(jié)點(//B);與此同時A節(jié)點還必須是當前節(jié)點的子節(jié)點(A,前邊沒有/)。

啰嗦的語法在未縮寫語法里,兩個上述范例可以寫為:

  • /child::A/child::B/child::C
  • child::A/descendant-or-self::B/child::node()[1]

在XPath的每個步驟里,通過完整的軸描述(例如:child或descendant-or-self)進行明確的指定,然后使用::,它的后面跟著節(jié)點測試的內容,例如上面范例所示的A以及node()。

XPath 標準函數[ ]

XPath 含有超過 100 個內建的函數。這些函數用于字符串值、數值,日期和時間比較、節(jié)點和 QName 處理、序列處理、邏輯值等等。

XPath 節(jié)點[ ]

在 XPath 中,有七種類型的節(jié)點:元素、屬性、文本、命名空間、處理指令、注釋以及文檔節(jié)點(或稱為根節(jié)點)。

XPath 術語

節(jié)點(Node)

在 XPath 中,有七種類型的節(jié)點:元素、屬性、文本、命名空間、處理指令、注釋以及文檔(根)節(jié)點。XML 文檔是被作為節(jié)點樹來對待的。樹的根被稱為文檔節(jié)點或者根節(jié)點。

XPath存取函數[ ]

名稱 說明

fn:node-name(node) 返回參數節(jié)點的節(jié)點名稱。

fn:nilled(node) 返回是否拒絕參數節(jié)點的布爾值。

fn:data(item.item,...) 接受項目序列,并返回原子值序列。

fn:base-uri()

fn:base-uri(node)

返回當前節(jié)點或指定節(jié)點的 base-uri 屬性的值。

fn:document-uri(node) 返回指定節(jié)點的 document-uri 屬性的值。

函數與運算符XPath[ ]

1.0定義四種數據型別:節(jié)點型(本身無序的節(jié)點組)、字符串型、數字型、與布爾型。

有效的運算符有:

  • /、//以及..運算符,一般用于軸描述。
  • 合集運算符 | 把兩個節(jié)點形成聯(lián)集。
  • 布爾運算符 and、or以及not()函數
  • 數學運算符 +、-、*、div(除)以及mod(取余數)
  • 比較操作子 =、!=(不等于)、<、>、<=、>=

函數有:

  • 文字運算函數

concat(), substring(), contains(), substring-before(), substring-after(), translate(), normalize-space(), string-length()

  • 數學運算函數

sum(), round(), floor(), ceiling()

  • 節(jié)點屬性取得函數

name(), local-name(), namespace-uri()

  • 處理上下文數據取得函數

position(), last()

  • 類型轉換函數

string(), number(), boolean()

XPath 2.0[ ]

在W3C建議下,XPath 1.0于1999年11月16日發(fā)表。XPath 2.0目前正在W3C審核過程的最終階段。XPath 2.0表達了XPath語言在大小與能力上顯著的增加。

最值得大書特書的改變是XPath 2.0有了更豐富的型別系統(tǒng);XPath 2.0支持不可分割型態(tài),如在XML Schema內建型態(tài)定義一樣,并且也可自綱要(schema)導入用戶自定型別?,F在每個值都是一個序列(一個單一不可分割值或節(jié)點都被視為長度一的序列)。XPath 1.0節(jié)點組被節(jié)點序列取代,它可以是任何順序。

為了支持更豐富的型別組,XPath 2.0提供相當延展的函式與操作子群。

XPath 2.0實際上是XQuery 1.0的子集合。它提供了一個for表達式。該式是XQuery里“FLWOR”表達式的縮減版。利用列出XQuery省去的部分來描述該語言是可能的。主要范例是查詢前導語(query prolog)、元素和屬性建構式、“FLWOR”語法的余項式、以及typeswitch表達式。

相關條目[ ]

參考來源[ ]