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

XPath

來(lái)自站長(zhǎng)百科
跳轉(zhuǎn)至: 導(dǎo)航、? 搜索

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

簡(jiǎn)介[ ]

XPath 是一門(mén)在 XML 文檔中查找信息的語(yǔ)言。XPath 用于在 XML 文檔中通過(guò)元素和屬性進(jìn)行導(dǎo)航。

什么是 XPath?

  • XPath 使用路徑表達(dá)式在 XML 文檔中進(jìn)行導(dǎo)航
  • XPath 包含一個(gè)標(biāo)準(zhǔn)函數(shù)庫(kù)
  • XPath 是 XSLT 中的主要元素
  • XPath 是一個(gè) W3C 標(biāo)準(zhǔn)

XPath 表示法[ ]

最常見(jiàn)的XPath表達(dá)式是路徑表達(dá)式(XPath這一名稱(chēng)的另一來(lái)源)。路徑表達(dá)式是從一個(gè)XML節(jié)點(diǎn)(當(dāng)前的上下文節(jié)點(diǎn))到另一個(gè)節(jié)點(diǎn)、或一組節(jié)點(diǎn)的書(shū)面步驟順序。這些步驟以“/”字符分開(kāi),每一步有三個(gè)構(gòu)成成分:

  • 軸描述(用最直接的方式接近目標(biāo)節(jié)點(diǎn))
  • 節(jié)點(diǎn)測(cè)試(用于篩選節(jié)點(diǎn)位置和名稱(chēng))
  • 節(jié)點(diǎn)描述(用于篩選節(jié)點(diǎn)的屬性和子節(jié)點(diǎn)特征)

一般情況下,我們使用簡(jiǎn)寫(xiě)后的語(yǔ)法。雖然完整的軸描述是一種更加貼近人類(lèi)語(yǔ)言,利用自然語(yǔ)言的單詞和語(yǔ)法來(lái)書(shū)寫(xiě)的描述方式,但是相比之下也更加羅嗦。

簡(jiǎn)寫(xiě)后的語(yǔ)法最簡(jiǎn)單的XPath如下:

  • /A/B/C

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

這里還有一個(gè)復(fù)雜一些的例子,包含了全部構(gòu)成成分(請(qǐng)?jiān)敿?xì)的看):

  • A//B/*[1]

此時(shí)選擇的元素是:在B節(jié)點(diǎn)下的第一個(gè)節(jié)點(diǎn)(B/*[1]),不論節(jié)點(diǎn)的名稱(chēng)如何(*);而B(niǎo)節(jié)點(diǎn)必須出現(xiàn)在A節(jié)點(diǎn)內(nèi),不論和A節(jié)點(diǎn)之間相隔幾層節(jié)點(diǎn)(//B);與此同時(shí)A節(jié)點(diǎn)還必須是當(dāng)前節(jié)點(diǎn)的子節(jié)點(diǎn)(A,前邊沒(méi)有/)。

啰嗦的語(yǔ)法在未縮寫(xiě)語(yǔ)法里,兩個(gè)上述范例可以寫(xiě)為:

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

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

XPath 標(biāo)準(zhǔn)函數(shù)[ ]

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

XPath 節(jié)點(diǎn)[ ]

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

XPath 術(shù)語(yǔ)

節(jié)點(diǎn)(Node)

在 XPath 中,有七種類(lèi)型的節(jié)點(diǎn):元素、屬性、文本、命名空間、處理指令、注釋以及文檔(根)節(jié)點(diǎn)。XML 文檔是被作為節(jié)點(diǎn)樹(shù)來(lái)對(duì)待的。樹(shù)的根被稱(chēng)為文檔節(jié)點(diǎn)或者根節(jié)點(diǎn)。

XPath存取函數(shù)[ ]

名稱(chēng) 說(shuō)明

fn:node-name(node) 返回參數(shù)節(jié)點(diǎn)的節(jié)點(diǎn)名稱(chēng)。

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

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

fn:base-uri()

fn:base-uri(node)

返回當(dāng)前節(jié)點(diǎn)或指定節(jié)點(diǎn)的 base-uri 屬性的值。

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

函數(shù)與運(yùn)算符XPath[ ]

1.0定義四種數(shù)據(jù)型別:節(jié)點(diǎn)型(本身無(wú)序的節(jié)點(diǎn)組)、字符串型、數(shù)字型、與布爾型。

有效的運(yùn)算符有:

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

函數(shù)有:

  • 文字運(yùn)算函數(shù)

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

  • 數(shù)學(xué)運(yùn)算函數(shù)

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

  • 節(jié)點(diǎn)屬性取得函數(shù)

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

  • 處理上下文數(shù)據(jù)取得函數(shù)

position(), last()

  • 類(lèi)型轉(zhuǎn)換函數(shù)

string(), number(), boolean()

XPath 2.0[ ]

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

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

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

XPath 2.0實(shí)際上是XQuery 1.0的子集合。它提供了一個(gè)for表達(dá)式。該式是XQuery里“FLWOR”表達(dá)式的縮減版。利用列出XQuery省去的部分來(lái)描述該語(yǔ)言是可能的。主要范例是查詢(xún)前導(dǎo)語(yǔ)(query prolog)、元素和屬性建構(gòu)式、“FLWOR”語(yǔ)法的余項(xiàng)式、以及typeswitch表達(dá)式。

相關(guān)條目[ ]

參考來(lái)源[ ]