曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
程序清單8 - 4 2
我們可以使用下面的句法指向具有I D為b o o k 1的B o o k元素。
如果程序段僅僅是一個I D值,該指針指向具有該I D的元素。注意為了使這個速記表示正常
工作,正被指向的文檔必須具有指定該元素的I D屬性的方案。
268使用XML 高級編程
下載
(2) 子序列程序段標識
子序列程序段標識符,或者稱為t u m b l e r程序段標識符,允許文檔通過遍歷子元素樹來指向。
一些例子可能是有用的。在我們的例子目錄文檔, c a t a l o g . x m l中:
程序清單8 - 4 3
我們可以利用U R I指向第二個C a t e g o r y元素:
該語法可以按照下列方式理解:
• 轉到文檔中第一個元素( C a t a l o g元素)
• 然后轉向該元素的第一個子元素( b o o k 1 < B o o k >元素)
• 然后轉向該元素的第四個子元素( < R e c S u b j C a t e g o r i e s >元素)
• 然后轉向該元素的第二個子元素( Web Publishing <Category>元素)
Tu m b e r s也可以從一個命名節點開始,該節點在Bare Name程序段標識方法中被指定。下面
的U R I和上面的等價:
(3) 完整XPo i n t e r規范
完整XPo i n t e r規范是建立在XPa t h推薦標準基礎上的。XPa t h提供一種通用方法用于指定文檔
的某一部分。對于XPo i n t e r和X S LT來說,它是一個基本技術,在后面的章節我們將涉及到。下
一部分我們看一下XPa t h表達式的構建方法,以及它們如何用于指向X M L文檔。
8.4 W3C XPath推薦標準
XPa t h是X S L和XPa t h工作組成員協同工作的規范,他們意識到兩者都需要一種選擇一部分X M L
文檔的方法。兩個工作組都使用并依賴于XPa t h提供的功能。XPa t h具有一個推薦狀態,意思是它準
備生效,并在這個版本中它不會從當前狀態發生變化。它可以在h t t p : / / w w w.W3 . o rg/ TR/XPath中找
到。在這一部分中,我們進一步探討一下XPa t h,它將使你具備更加充分的信息來實現X P o i n t e r指
針。
8.4.1 Location Step
Location Step將是我們構建XPo i n t e r s時使用最多的構造。它們提供了從X M L文檔中選擇節
第8章鏈接和查詢使用269 下載
點的方法。它們都通過上下文節點進行操作,它僅僅是在評估location step 時作為X M L文檔的當
前節點(如果一個節點沒有通過其他某種方法被指定,那么當前節點是文檔的根元素)。注意,
如果我們在XPo i n t e r中具有一個以上的location step,那么將會有一個以上的當前節點被評估。
我們在后面舉出幾個例子時這一點將更加清楚。
位置節點由三種類型信息構建:軸、節點測試及零個或多個謂詞。讓我們看一下它們中的
每一個及在目標文檔的位置節點中的角色。
1. 軸
軸基于上下文節點來分割文檔。在評估表達式的時候,它用來定義一個初始區域來應用節
點測試和謂語。可能有表8 - 2中所列的這些軸:
表8 - 2
軸定義
c h i l d 包含上下文節點的所有子節點
d e s c e n d a n t 包含所有上下文節點的子節點、孫子節點等等
p a r e n t 上下文節點的父節點
a n c e s t o r 上下文節點的父節點、祖父節點
f o l l o w i n g - s i b l i n g 上下文節點的下面同屬節點
p r e c e d i n g - s i b l i n g 上下文節點的前面同屬節點
f o l l o w i n g 文檔順序中跟隨上下文節點的所有節點,該軸并不包括上下文節
點、或者屬性及命名空間節點的后代節點
p r e c e d i n g 文檔順序中位于上下文節點之前的所有節點,該軸并不包括上下
文節點、或者屬性及命名空間節點的祖先節點
a t t r i b u t e 上下文節點的屬性節點
n a m e s p a c e 上下文節點的命名空間節點
s e l f 上下文節點
d e s c e n d a n t - o r- s e l f 后代節點及自身節點的聯合
a n c e s t o r- o r- s e l f 祖先節點及自身節點的聯合
一旦我們指定一個文檔中進行分析的某個部分,我們將可以使用節點測試進行更加深入細
致的研究。
2. 節點測試
節點測試允許從指定的軸中選擇特定的元素或者節點類型。下面是幾種節點測試:
• 指定一個元素名稱,該元素名稱僅和具有該名字的節點相匹配。一個B o o k節點測試僅和指
定軸中稱為< B o o k >的元素匹配。
• 指定通配符,*,來匹配指定軸中所有元素。
• node( )節點測試匹配指定軸中所有節點。
• text( )節點測試匹配指定軸中所有文本元素。
• comment( )節點測試指定軸中所有注釋元素。
• processing-instruction( ) 節點測試匹配指定軸中所有的處理指令元素,而且在括號中給出
名字;該測試僅僅匹配具有指定名字的那些處理指令元素。
3. 謂詞
270使用XML 高級編程
下載
謂詞對通過軸和節點測試得到的節點集合進行更深入的過濾。一個謂詞是一個布爾表達式,
用來對通過使用軸和節點測試過濾后得到的結果節點集合中每一個節點進行評估。
你可以使用XPa t h提供的許多函數對你所需要的節點進行測試。這些函數返回不同形狀的結
果,如字符串和數字等你可以使用一些比較運算符=,! =,< =,<,> =和>進行相互之間的比較
或者和你所提供的常量進行比較。大一些的表達式可以通過布爾運算符a n d和o r進行分離。這樣,
正被討論的表達式將傳遞給B o o l e a n ( )函數,它將對表達式按照下面方法進行處理:
• 數字-當且僅當它們既不為零,正零,也不為N a N(看下面)時為t r u e。
• 節點集合-當且僅當它們為非空時為t r u e。
• 字符串-當且僅當它們的長度為非零時為t r u e。
• 對象-如果這些是四種基本類型(數字、節點集合、布爾值和字符串)之外的一種類型,
它們將通過一種依據該類型的方法轉換成布爾型。
數字是雙精度6 4位I E E E 7 5 4值,并分為下面幾類:
中國航空網 m.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級編程上(94)