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