XPath的數據類型和節點類型

一、XPath數據類型


XPath可分爲四種數據類型:
  1、節點集(node-set):節點集是通過路徑匹配返回的符合條件的一組節點的集合。其它類型的數據不能轉換爲節點集。

       2、布爾值(boolean):由函數或布爾表達式返回的條件匹配值,與一般語言中的布爾值相同,有true和 false兩個值。布爾值可以和數值類型、字符串類型相互轉換。

       3、字符串(string):字符串即包含一系列字符的集合,XPath中提供了一系列的字符串函數。字符串可與數值類型、布爾值類型的數據相互轉換。

       4、數值(number):在XPath中數值爲浮點數,可以是雙精度64位浮點數。另外包括一些數值的特殊描述,如非數值NaN(Not-a-Number)、正無窮大 infinity、負無窮大-infinity、正負0等等。number的整數值可以通過函數取得,另外,數值也可以和布爾類型、字符串類型相互轉換。

  其中後三種數據類型與其它編程語言中相應的數據類型差不多,只是第一種數據類型是XML文檔樹的特有產物。


二、XPath節點類型


由於XPath包含的是對文檔結構樹的一系列操作,因此搞清楚XPath節點類型也是很必要的。在XML文檔的邏輯結構,一個 XML文件可以包含元素、CDATA、註釋、處理指令等邏輯要素,其中元素還可以包含屬性,並可以利用屬性來定義命名空間。相應地,在XPath中,將節點劃分爲七種節點類型:

  1、根節點(Root Node):根節點是一棵樹的最上層,根節點是唯一的。樹上其它所有元素節點都是它的子節點或後代節點。對根節點的處理機制與其它節點相同。在XSLT中對樹的匹配總是先從根節點開始。

  2、元素節點(Element Nodes):元素節點對應於文檔中的每一個元素,一個元素節點的子節點可以是元素節點、註釋節點、處理指令節點和文本節點。可以爲元素節點定義一個唯一的標識id。元素節點都可以有擴展名,它是由兩部分組成的:一部分是命名空間URI,另一部分是本地的命名。

  3、文本節點(Text Nodes):文本節點包含了一組字符數據,即CDATA中包含的字符。任何一個文本節點都不會有緊鄰的兄弟文本節點,而且文本節點沒有擴展名。

  4、屬性節點(Attribute Nodes):每一個元素節點有一個相關聯的屬性節點集合,元素是每個屬性節點的父節點,但屬性節點卻不是其父元素的子節點。這就是說,通過查找元素的子節點可以匹配出元素的屬性節點,但反過來不成立,只是單向的。再有,元素的屬性節點沒有共享性,也就是說不同的元素節點不共有同一個屬性節點。

  對缺省屬性的處理等同於定義了的屬性。如果一個屬性是在DTD聲明的,但聲明爲 #IMPLIED,而該屬性沒有在元素中定義,則該元素的屬性節點集中不包含該屬性。

  此外,與屬性相對應的屬性節點都沒有命名空間的聲明。命名空間屬性對應着另一種類型的節點。

     5、命名空間節點(Namespace Nodes):每一個元素節點都有一個相關的命名空間節點集。在XML文檔中,命名空間是通過保留屬性聲明的,因此,在XPath中,該類節點與屬性節點極爲相似,它們與父元素之間的關係是單向的,並且不具有共享性。

   6、處理指令節點(Processing Instruction Nodes):處理指令節點對應於XML文檔中的每一條處理指令。它也有擴展名,擴展名的本地命名指向處理對象,而命名空間部分爲空。

  7、註釋節點(Comment Nodes):註釋節點對應於文檔中的註釋。

 

     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章