XML示例文檔

我們將使用如下的簡單XML文檔描述XPath語法:



<?xml version="1.0" encoding="ISO-8859-1"?>
   
<catalog>
     
<cd country="USA">
            
<title>Empire Burlesque</title>
            
<artist>Bob Dylan</artist>
            
<price>10.90</price>
      
</cd>
      
<cd country="UK">
            
<title>Hide your heart</title>
            
<artist>Bonnie Tyler</artist>
            
<price>9.90</price>
      
</cd>
      
<cd country="USA">
            
<title>Greatest Hits</title>
            
<artist>Dolly Parton</artist>
            
<price>9.90</price>
      
</cd>
  
</catalog>

定位節點

XML文檔可以看作是一個節點樹(非常類似于計算機的樹形文件夾)。

XPath使用模式表達式識別XML文檔里的節點。一個XPath模式是一個以斜線分隔的子元素名列表,用于描述XML文檔的一個路徑。模式選擇匹配該路徑的元素。

下面的XPath表達式選擇catalog元素的所有cd元素的所有price元素:

/catalog/cd/price      //如果路徑以一個斜線(/)開始,代表相對于一個元素的絕對路徑


注意: 如果路徑以兩個斜線開始,表示選擇文檔中所有符合該條件的元素(即使它們在不同的XML樹的級別)!下面的XPath表達式選擇catalog元素的所有cd元素的所有price元素:
//cd             // 如果路徑以兩個斜線開始,表示選擇文檔中所有符合該條件的元素(即使它們在不同的XML樹的級別)!下面的XPath表達式選擇catalog元素的所有cd元素的所有price元素:


選擇未知元素

通配符(*)用來選擇未知XML元素。

/catalog/cd/*                      //XPath表達式選擇catalog元素下所有cd元素的所有子元素


/catalog/*/price                 //XPath表達式選擇catalog元素的孫子元素下所有的price元素


/*/*/price                           //XPath表達式選擇有兩個祖先的所有price元素

//*                                     //XPath表達式選擇文檔中所有元素


選擇分支

通過在XPath表達式中使用方括號可以進一步地指定一個元素。


/catalog/cd[1]                      //XPath表達式選擇catalog元素的第一個cd子元素

/catalog/cd[last()]                  //XPath表達式選擇catalog元素的最后一個子元素


/catalog/cd[price]                  //XPath表達式選擇catalog元素下含有price子元素的所有cd元素

/catalog/cd[price=10.90]         //XPath表達式選擇catalog元素下子元素price值等于10.90的所有cd元素

/catalog/cd[price=10.90]/price   //XPath表達式選擇catalog元素下price元素值等于10.90的所有cd元素的price元素



選擇多個路徑

通過在XPath表達式中使用|操作符,可以選擇多個路徑。

下面的XPath表達式選擇catalog元素的子元素cd元素下所有的title和artist元素:

/catalog/cd/title | /catalog/cd/artist              //XPath表達式選擇catalog元素的子元素cd元素下所有的title和artist元素


//title | //artist                     //XPath表達式選擇文檔中所有title元素和artist元素:


選擇屬性

在XPath中,所有屬性以前綴@指定。

下面的XPath表達式選擇所有名為country的屬性:

//@country                         //XPath表達式選擇所有名為country的屬性


//cd[@country]                   //XPath表達式選擇所有含有country屬性的cd元素:

//cd[@*]                           //XPath表達式選擇選擇所有含有任何屬性的cd元素

//cd[@country='UK']             //XPath表達式選擇屬性country等于UK的所有cd元素






 

@import url(http://www.tkk7.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);