曝光臺 注意防騙
網(wǎng)曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
一個應用程序顯示這些事件周圍的文本,并可能允許通過X L i n k跳至文檔內(nèi)那個位置。
函數(shù)here( )返回包含X P o i n t e r自身的元素。該函數(shù)允許XPo i n t e r指向其他位置,這些位置和
指向文檔自身內(nèi)X P o i n t e r的位置相關(guān)。例如,下面的X P o i n t e r將指向X P o i n t e r元素自身的上一級:
程序清單8 - 5 9
函數(shù)unique( )是一個布爾函數(shù),用來決定一個位置集合是否僅僅包含一項。在X P o i n t e r中確
認一個單個位置由X P o i n t e r表達式所指定是很重要的(例如,若自動處理正在翻譯的文件)。下
面兩個謂詞意義相同:
程序清單8 - 6 0
8.4.3 XPointer錯誤
不合適的X P o i n t e r可能會導致三個錯誤。任何識別X P o i n t e r解析器需要以某種方式處理這些
錯誤(X P o i n t e r規(guī)范將精確的機制留給開發(fā)者設(shè)計識別X P o i n t e r處理器)。
1. 語法錯誤
一個和X P o i n t e r規(guī)范的語法限制不相對應的程序段標識符將會導致語法錯誤。
2. 資源錯誤
語法正確的程序段標識符,但是附加了一個不合適的資源(例如一個文檔不是一個格式正
規(guī)X M L文檔),將會導致資源錯誤。
3. 子資源錯誤
語法正確的程序段標識符,附加了一個格式正規(guī)的X M L文檔,但是不能產(chǎn)生一個有效的位
置會導致一個子資源錯誤。
任何識別X P o i n t e r的處理應用程序應該能捕捉這些錯誤,并按照順序進行處理。
8.4.4 小結(jié)
X P o i n t e r為U R I提供一個機制來指向一個X M L文檔的某一個部分。然而目前X P o i n t e r還沒有
嚴格地安裝啟用,當前的規(guī)范正處于最后的集成狀態(tài),使用X P o i n t e r的處理器安裝啟用不久將會
成為現(xiàn)實。
第8章鏈接和查詢使用277 下載
8.5 XML程序段交換
隨著X M L文檔存儲容量擴充,以及文檔平均規(guī)模的增加,文檔操作變得越來越難處理。如
果我們在任何時候能夠方便地利用文檔的一小部分而不必把整個文檔轉(zhuǎn)換并加載進來,這樣就
很好了。為達到這個目的, W 3 C為X M L程序段交換制定了一個標準(稱為X F L,不過現(xiàn)有的工
作草案并沒有使用這個縮寫),定義了X M L文檔塊產(chǎn)生和轉(zhuǎn)換的一些機制。然而,這個標準僅僅
停留在工作草案的狀態(tài)—雖然這個研究組已經(jīng)結(jié)束了這項工作,然而決定推遲執(zhí)行和推廣這
個規(guī)范,直到其他一些X M L規(guī)范發(fā)展成熟一些以后。
這個關(guān)于X M L程序段交換的W 3 C規(guī)范可以在如下的網(wǎng)址查到:
h t t p : / / w w w . w 3 . o r g / T R / W D - x m l - f r a g m e n t。
8.5.1 什么是文檔程序段
文檔程序段在這個規(guī)范中被定義為原始文檔的正規(guī)匹配子集。文檔的正確匹配子集包含整
個信息項—不過和X M L文檔不同,不必具有類似意義上的完整形狀。必須明確的是正確匹配
子集必須包含整體標簽(不允許部分標簽),即一個正確匹配子集如果具有初始標簽,它必須有
一個對應的結(jié)束標簽。后面我們將會看到一些例子。
由服務于程序段的應用程序來決定哪一個信息塊對使用者是有用的。一個最普遍的例子就
是僅僅傳輸使用者的程序段所必需的元素,不過其他類型的程序段也是可能的。為了幫助我們
了解哪一個文檔塊是一個程序段,讓我們看一下本章前面的一個示意圖(參見圖8 - 1 3)。
圖8-13
278使用XML 高級編程
下載
文檔
元素: Catalog
元素: Book
屬性: color 元素: Title 元素: Pages 元素: ISBN
元素: RecSubj-
C a t e g o r i e s 元素: Price
文本: "$49.95"
元素: Catagory
文本: "Web 文本: "XML"
Publishing"
文本:
"Internet"
元素: Catagory
文本: "1-
文本: "480" 861001-57-6"
文本: "IE5 XML
文本: "red" Pr o g r a m . . . "
元素: Catagory
在上面的樹狀示意圖上,通過直線和主樹干相連的的每個分支被認為可能是程序段,因為
每個分支在原始文檔范圍內(nèi)連續(xù)形式被定義。它們被嵌入在標識內(nèi)而不能保證是正確匹配,從
而屬性被定義為程序段。并且鄰近的兄弟(和它們的子節(jié)點)可以一同被定義為一個程序段,
這是由于它們一起同時出現(xiàn)在原始文檔中,還可以按照原始(序列化文本)文檔:一個有效的
程序段作為一個鄰近的文本塊出現(xiàn)原始文檔中,相反的是非鄰近的文本決不會是有效的程序段。
不過必須指出的是可能有些鄰近的文本塊不是有效的程序段—上面的規(guī)則仍然適用。
上面的示意圖中一些有效的程序段可能是:
• <RecSubjCategories>元素和它們的子節(jié)點
• 文本項“4 8 0”
• 前兩個< C a t e g o r y >元素和它們的子節(jié)點
然而,下面這些可能就不是有效的程序段:
• 第一個< C a t e g o r y >元素和第三個< C a t e g o r y >元素
• <color>屬性
• <Price>開始標識,但沒有< / P r i c e >結(jié)束標識
• 不具有文本子節(jié)點的< B o o k >元素
8.5.2 文檔程序段的一些用途
我們知道了文檔程序段的概念,那么我們用它們做些什么呢?讓我們看一下程序段能夠在
應用程序開發(fā)中發(fā)揮作用的幾個途徑:
• 使用程序段可以有助于我們節(jié)省資源消耗(處理時間、內(nèi)存需求、網(wǎng)絡需求、存儲需求
等)。
• 使用程序段有助于我們從源文檔中隔離出相關(guān)的信息子集,只要這些信息是相鄰近的。非
鄰近信息不能以一個單一程序段來發(fā)送,避免使程序段對特定信息塊的校訂來說不是最優(yōu)
的選擇。
• 使用程序段可以使我們能夠為龐大的X M L文檔產(chǎn)生一個實時編輯環(huán)境。
1. 節(jié)省資源
程序段對我們發(fā)揮作用最明顯的表現(xiàn)就是能夠減少網(wǎng)絡傳輸和系統(tǒng)處理的信息量。舉例來
說,一個使用者需要從Wr o x目錄中了解某一本書的有關(guān)信息。這時發(fā)送給接收方的不是Wr o x
中國航空網(wǎng) www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級編程上(97)