2011年軟考系統(tǒng)架構(gòu)設(shè)計師學(xué)習(xí)筆記第八章
8.1 XML 概述
可擴展標(biāo)記語言(xml)是標(biāo)準(zhǔn)通用標(biāo)記語言(SGML)的一個子集;可以用XML來開發(fā)一種標(biāo)記語言,它的元素和屬性多是為專門行業(yè)和產(chǎn)業(yè)而定義的。
支持統(tǒng)一字符編碼 UCS,使得 XML 成為了國際標(biāo)準(zhǔn),XML 和 HTML 都支持 樣式表(style sheet)。
8.1.1 標(biāo)簽語法
XML 元素的結(jié)構(gòu)與 HTML基本相同,使用尖括號來界定標(biāo)簽,但二者相同點也就僅此而已。
與 HTML 不同,幾乎所有的 XML 標(biāo)簽 都是大小寫敏感的,主要是滿足 XML 國際化的設(shè)計目標(biāo)和簡化處理過程的需要。
非英語字母可能沒有對應(yīng)的大小寫,合并會存在許多缺陷。
1、字符
XML 指定的字符 均在16位的 Unicode 2.1 字符集。
2、命名
XML 命名必須以字母、下劃線或冒號 開頭,后面跟著的是 有效命名字符(數(shù)字、減號、點)。
實際應(yīng)用中不應(yīng)該使用冒號,除非是用作命名空間修飾的分隔符。
字母并非局限于 ASCII 碼,這一點是非常重要的。
8.1.2 文檔部分
格式正規(guī)的 XML:
1、一個可選的序言(prolog)
2、文檔的主體(body)
3、可選的“繁雜”的尾聲(epilog),包括:注釋、處理指令(Processing Instruction,PI) 和/或 緊跟在元素后面的空白。
8.1.3 元素
元素是 XML 標(biāo)簽的基本組成部分。
元素使用標(biāo)簽(tag)進行分隔:尖括號圍住元素類型名。每一個元素 都必須 由一個起始標(biāo)簽 和 一個結(jié)束標(biāo)簽分隔開。
空元素
只是指定一個點,而不是提供一個包容器,空元素可以用縮略形式表示,起始和結(jié)束 標(biāo)簽的混合體。
文檔元素,每個文檔 有且只有一個 根節(jié)點,稱為 文檔實體(document entity) 或 文檔根(document root),它們的根被稱為文檔元素(document element)。
XML 對元素 必須正確地嵌套。
如果字符串中包含單引號,分隔符必須使用雙引號,反之亦然。
8.1.4 字符數(shù)據(jù)
字符數(shù)據(jù)就是任何不是標(biāo)記的文本,小于號、大于號、&號 是標(biāo)記分隔符,因此他們絕不能以字符串的形式出現(xiàn)在字符數(shù)據(jù)中(CDATA部分除外),必須使用轉(zhuǎn)義字符 “&It;”等。
8.1.5 屬性
元素是 XML 中的名詞,屬性是它的形容詞。
attribute name = “attribute alue”
attribute name = “attribute alue”
起始標(biāo)記或空標(biāo)記中屬性只允許有一個實例存在。
非法的:
XML 數(shù)據(jù)中,只有 4個字符 可以作為 空白使用,09 水平指標(biāo)(HT),0D 回車(CR),0A 換行(CF),20空格。
8.1.6 注釋
8.1.7 CDATA 部分
是一種用來包含文本的方法,對希望在自己的文檔中 包含 XML 標(biāo)記的使用舉例 的作者來說是最有用的。
使用這些部分時 XML 幾乎所有的優(yōu)勢都喪失殆盡。
,“…”可以是任何字符串,只要不包含字符串“]]>”。
8.1.8 格式正規(guī)的文檔
元素和元素之間***的直接關(guān)系就是 父子關(guān)系;
兄弟關(guān)系是通過數(shù)據(jù)結(jié)構(gòu)推斷出來的,既不直接也不可靠,因為元素可能被插入到 某個元素和它的一個或多個子元素之間。
數(shù)據(jù)對象 如果滿足下列條件 就是各市正規(guī)的文檔。
1、語法合乎 XML 規(guī)范。
2、元素構(gòu)成一個層次樹,只有一個根節(jié)點。
3、沒有對外部實體的引用,除非提供了 DTD。
任何 XML 解析器 發(fā)現(xiàn) 不是個是正規(guī)的結(jié)構(gòu),就報告一個“致命”錯誤,致命錯誤不一定導(dǎo)致解析器終止操作,但它不再會以正常的方式向應(yīng)用程序傳遞字符數(shù)據(jù) 和/或 XML結(jié)構(gòu)。
8.2 XML 命名空間
8.2.1 命名空間
XML 命名空間 是 解決多個 義性和名字沖突問題的方案。
命名空間是一組具有結(jié)構(gòu)的名稱的集合。
8.2.2 定義和聲明命名空間
命名空間 推薦標(biāo)準(zhǔn)為我們提供了 xmlns屬性,屬性值就是 URI。
命名空間前綴經(jīng)常被提及為前綴,而名稱本身是基本名。
默認(rèn)的命名空間(沒有聲明別名的,形式為 xmlns=“…”),在聲明作用域里 所有沒有經(jīng)命名空間前綴修飾的 名稱 被假定屬于默認(rèn)的命名空間。
8.3 DTD
一個 XML 文檔是有效的,則它必須滿足:文檔 和 文檔類型 相關(guān)聯(lián)。
8.3.1 什么是 DTD
DTD 文檔類型定義。
主要 用來查看 XML 文檔的格式,出現(xiàn)在 XML 文檔的序言中,DTD 聲明不是必須出現(xiàn)的。
DTD 中 主要定義以下幾個方面的內(nèi)容:
1、元素聲明。
2、實體聲明。
3、屬性的種類。
8.3.2 為什么引入 DTD
提供一種驗證的手段,對 XML 來說是一大貢獻,確保 XML 文件確實地遵守了 指定的格式,而這個格式可能是 一個 標(biāo)準(zhǔn),或者是數(shù)據(jù)交換雙方 所共同定制 的 協(xié)議。
實現(xiàn)了 文件格式 的統(tǒng)一化,提高了文件的重用性。
使用 DTD 進行驗證,增加了操作時間。
8.3.3 實體的聲明
實體(entity)是一些預(yù)先定義好的數(shù)據(jù)。
存儲部位,內(nèi)部實體,外部實體;
組成內(nèi)容,可分解實體,不可分解實體。
引用方式,一般型實體,參數(shù)型實體。
不同類型的實體聲明和使用方法略有不同。
8.3.4 屬性的聲明
良構(gòu) XML 文檔中,屬性只要滿足命名規(guī)則就可以了,但是在一個有效的 XML 文檔中,屬性要經(jīng)過 DTD 的屬性聲明。
DTD 聲明中,屬性的聲明語法可以歸納為如下形式:
元素名稱指的是 屬性所屬的元素名稱。
8.4 XML Schema
DTD 盡管進行了很大的簡化,但還是一門 風(fēng)格 和XML完全不同的語言,而 schema 文檔是一種特殊的 XML 文檔,容易學(xué)習(xí)和使用。
DTD 的另一個缺點是 數(shù)據(jù)類型相當(dāng)有限。DTD 中根本不提供 數(shù)值數(shù)據(jù) 類型。
一個 XML 文檔只能使用一個 DTD 文檔,schema 則采用了 名域空間的機制,使得一個 XML 文檔可以調(diào)用多種 schema 文檔。
8.5 可擴展樣式表語言
(eXtensible Stylesheet Language,XSL)是描述 XML 文檔樣式信息的一種語言,W3C 制訂。
XML 的一個優(yōu)點就是 形式與內(nèi)容相分離,XSL 就是它的兩種樣式表單之一,
另一種是 層疊樣式表(CSS),是一種靜態(tài)的樣式描述格式,其本身不遵從 XML 的語法規(guī)范。
而 XSL 是一個 XML 文檔。
是 XML 的一種具體應(yīng)用。
它有兩大部分組成:
***部分描述了 如何將 XML 文檔進行 轉(zhuǎn)換、轉(zhuǎn)換為可瀏覽或可輸出的格式;
第二部分定義了 格式對象(Fomatted Object,F(xiàn)O)源樹轉(zhuǎn)換為可以顯示的結(jié)果樹,稱為樹轉(zhuǎn)換,按照FO分析結(jié)果樹,產(chǎn)生一個輸出結(jié)果,這個過程稱為 格式化。
轉(zhuǎn)換樹 日趨成熟,已從 XSL 中分離出來,另取名為 XSLT(XSL Transformations),現(xiàn)在一般所聽說的 XSL 大多是指 XSLT。
一同退出的還有 配套標(biāo)準(zhǔn) Xpath(XML Path Language,XML 路徑語言)
在 XML 中 聲明 XSL 樣式單:
XSL 在網(wǎng)絡(luò)中的應(yīng)用大體分為兩種模式:
1、服務(wù)器端轉(zhuǎn)換模式
XML 文件下載到 瀏覽器前先轉(zhuǎn)換成 HTML。
1.動態(tài)方式,接到轉(zhuǎn)換請求時再進行實時轉(zhuǎn)換。
2.批量方式。
2、客戶端轉(zhuǎn)換模式
XML 和 XSL 文件都傳送到客戶端,瀏覽器必須支持 XML+XSL 的工作方式。
8.6 其他相關(guān)規(guī)范
8.6.1 XPath
采用簡潔的、非 XML 語法,基于 XML 文檔的 邏輯結(jié)構(gòu),在該結(jié)構(gòu)中進行導(dǎo)航。
XPath 表達式 通常出現(xiàn)在 URL 和 XML 屬性值里。
XPath 將 XML 文檔描繪為 樹或節(jié)點 的模型,節(jié)點的類型有 根節(jié)點、元素節(jié)點、屬性節(jié)點、文本節(jié)點、注釋節(jié)點、名稱空間節(jié)點、處理指令節(jié)點 7種。
XPath 規(guī)范定義了兩個主要部分:一部分是表達式語法,另一部分是一組名為 XPath核心庫 的基本函數(shù)。
指向某個 XML 文檔中一個特定節(jié)點的路徑 由三部分信息構(gòu)成:一個軸類型、一個節(jié)點測試 和 謂詞。
軸類型 有多種,指定所選節(jié)點和環(huán)境之間的關(guān)系。節(jié)點測試 查找什么類型的節(jié)點,測試包括通配符“*”、text()、node()、comment()、processing-instruction()等。
謂詞以“[”開始,以“]”結(jié)束,謂詞通過使用內(nèi)部函數(shù)來 過濾不需要的節(jié)點。
<軸>::<節(jié)點測試>[<謂詞表達式>]
8.6.2 XLink 和 XPointer
XLink 指定一個文檔如何連接到另一個文檔,XPointer 指定文檔內(nèi)部的位置,都是基于 XPath 推薦標(biāo)準(zhǔn)。
【編輯推薦】