国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

關于XPATH的文章

2019-11-18 16:22:55
字體:
來源:轉載
供稿:網友
  在XSL中我們有時候需要取出文檔中特定的一個元素集合,但是如何指定這個元素集合呢?這樣就需要用到XPath標準。
  XPath是在1999年11月16日和XSLT一起成為正式標準的。XPath是用作XSLT和XPointer的對xml文檔各部分進行定位的語言。它給XSLT和XPointer(XML文件內部鏈接語言)提供一個共同、整合的定位語法,用來定位XML文件中各個部位。XPath除了提供一套定位語法之外,還包括一些函數,它們提供基本的數字運算、布爾運算和字符串處理功能。

  XPath使用一個緊湊的、非XML的語法來方便實現XPath在XML屬性值中的使用,它基于XML文檔的邏輯結構,在該結構中進行導航。除了用于定位,XPath 自身還有一個子集能用于進行匹配,它能驗證一個節點是否匹配某個模式。XPath把一個XML文檔看成一個樹或節點的模型。節點的類型可以有多種,包括元素節點、屬性節點和文本節點。

  XPath的基本語法由表達式構成。在計算表達式的值之后產生一個對象,這種對象有以下四種基本類型:節點集合、布爾型、數字型和字符串型 。

  表達式的計算依據上下文的出現,XSLT和XPointer中分別規定了XPath表達式將在怎樣的情況下出現。這些上下文的關系包括:節點、一對正整數(表明位置和大小)、一套變量綁定集合、函數庫以及規定表達式范圍的名域聲明。其中,變量綁定是從標量名稱到變量值的映射。變量的值是一個對象,可以是表達式可能得到的各種類型,也可以是其他沒有規定的類型。在函數庫中,每個函數有零個或多個參數,并返回一個結果。XPath定義了所有支持工具都必須實現的核心函數庫。其中的函數的參數和結果都是上面涉及的四種基本類型。當然XSLT 和XPointer中還對XPath的核心函數庫進行了擴展,有些函數的參數和返回結果數據類型超出了四種基本類型。

  XPath基本上和在文件系統中尋找文件類似,如果路徑是以"/"開頭的,就表明該路徑表示的是一個絕對路徑,這和在UNIX系統中關于文件路徑的定義是一致的。

  當然XPath本身有一套完整的語法說明,類似巴克斯-諾爾范式。這里我們不想列出所有嚴格的定義表達式,而采用實際例子的方法來說明如何使用XPath語言。

  1.關于"/,"http://"的使用,見下面的例子:

   1 /網站 表示選擇根目錄下的元素網站

   2 /網站/中文網站表示選擇根目錄下元素網站下面的所有元素名稱為中文網站的元素

   3 /網站/中文網站/門戶網站表示選擇所有的名稱為門戶網站的元素,它的父節點為中文網站,而中文網站是根節點元素中文網站的孩子。

   4 file://體育網站 表示選擇所有元素名稱為體育網站的元素。它可以在XML文檔節點的任何位置。

  2.關于"*"的使用,見下面的例子:

   1 file://*表示所有的元素。

   2 file://體育網站/足球網站表示選擇所有元素名稱為足球網站的元素,但是它的父節點必須是體育網站。

   3 /網站/中文網站/門戶網站/*表示選擇節點/網站/中文網站/門戶網站/下的所有元素。

   4 /*/*/娛樂網站表示選擇所有名稱為娛樂網站的元素,前提是該元素的祖先有兩層。如果和武林中門派弟子輩分相類比的話,就是表示所有第三代弟子。

3.關于XPath函數的使用

   1 file://網站/中文網站[1]就是選擇元素網站下的第一個中文網站元素。比如王重陽有七個弟子,按次序分別為王一、王二、….王七的話,這里相當于我們就選王一。

   2 file://網站/中文網站[last()]就是選擇元素網站下的最后一個中文網站元素。繼續上面的比喻的話,這里相當于選王七。

   3 file://網站[@id]表示選擇帶有屬性id的名稱為網站的元素。

   4 file://網站[@name]表示選擇具有屬性名稱為name的名稱為網站的元素。

   5 file://網站[@*]表示選擇元素網站,它具有一些屬性,但可以是任意屬性。

   6 file://網站[not(@*)]表示選擇元素網站,該元素不具有任何屬性。

   7 file://網站[@id='WebSite']表示選擇元素網站,該元素的屬性id的值為WebSite。

   8 file://體育網站[@name='www.football.com']表示選擇元素體育網站,該元素有一個屬性名稱為name,值為'www.football.com'。

   9 file://*[count(體育網站)=2]表示選擇有兩個子元素,并且子元素名稱為體育網站的元素。

   10 file://*[count(*)=n]表示選擇有n個子元素的元素。

   11 file://*[name()='體育網站']選擇所有名稱為體育網站的元素,等效于//體育網站

   12 file://*[start-with(name()='網站')]選擇所有元素名稱開始為網站的元素

   13 file://*contains(name),'網站')]選擇所有名稱包括網站這個單詞的元素

   14 file://*[string-length(name())=n]選擇所有有n個字符的元素

   15 file://*[string-length(name())
   16 file://*][string-length(name())=n]選擇所有字符個數大于n的元素

   17 position()函數表示選擇特定位置的元素,比如//網站[position() mod 2=0]表示所有位置在偶數行的元素。

   18 file://網站//BBS 選擇所有元素名稱為網站或者BBS的元素

4.關于XPath中軸的概念的使用

   1 file://child::網站等效于//網站

   2 descendant表示當前上下文節點下的所有子元素,這里的子元素不僅包括該節點直接的子元素,還包括它所有子元素的子元素。也就是這個節點下的所有元素。

    比如:/descendant::*等效于//*,也就是表示所有的元素。

   3 parent表示當前節點的父元素,例子://體育網站/parent::*表示體育網站這個元素的所有父節點的集合。

   4 Ancestor表示當前節點的所有祖先節點,所以不僅包括該元素的直接父節點,還包括父節點的父節點等等。用一棵樹表示節點層次關系的話,所有該節點的上層都叫做Ancestor。例子://足球網站/ancestor::*就表示所有足球網站元素的祖先節點。

   5 Following-sibling表示當前節點的所有在它之后的兄弟節點:例子://體育網站/follwing-sibling::*表示所有和體育網站這個元素在一個層次上的元素集合。

   6 PReceding-sibling表示當前節點的所有在它之前的兄弟節點:例子://體育網站/follwing-sibling::*表示所有在體育網站這個元素之前的一個層次上的元素集合。

   7 Following表示在文檔中后出現的所有節點,不包括屬性節點和名字空間(namespace)節點。

   8 Preceding表示在文檔中前面出現的所有節點,不包括屬性節點和名字空間(namespace)節點。

   9 Descendant-or-self和descendant的區別在于它同時包括了上下文節點本身。ancestor-or-self和ancestor的區別在于它同時包括了上下文節點本身。注意下面的一行代碼,它表示了文檔中的所有節點。

  file://XXX/ancestor::* XXX/descendant::* XXX/following::* XXX/preceding::* XXX/self::*進入討論組討論。

(出處:http://m.survivalescaperooms.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 张北县| 东莞市| 页游| 卓资县| 綦江县| 临武县| 东方市| 北辰区| 巨野县| 尉犁县| 饶阳县| 乌拉特前旗| 静乐县| 平乡县| 岢岚县| 同仁县| 田阳县| 盘锦市| 文化| 都匀市| 连江县| 全南县| 望谟县| 四子王旗| 财经| 达拉特旗| 信宜市| 杂多县| 麻栗坡县| 综艺| 宁南县| 临武县| 鄂伦春自治旗| 罗源县| 巴马| 新安县| 河南省| 琼结县| 永胜县| 聂拉木县| 房山区|