- 相關(guān)推薦
關(guān)于XML入門(mén)教程:分析XM
分析XML文檔可通過(guò)程序來(lái)做,分析器有兩大類(lèi),一種是事件驅動(dòng)的,一種是基于樹(shù)模型的。
使用事件驅動(dòng)的分析器時(shí),每遇到一個(gè)元素就會(huì )觸發(fā)一個(gè)事件,由事件處理器進(jìn)行處理。事件分析器按順序讀取XML文檔,而不把整個(gè)文檔讀入內存,所以處理速度很快。但缺點(diǎn)是由于要從頭到尾讀取XML文檔,因此無(wú)法在XML文檔中移動(dòng)位置。事件驅動(dòng)分析器適合處理其它地方使用的XML數據,如轉換成HTML文檔或從文件中讀取數據并插入數據庫中。它的優(yōu)點(diǎn)有:
文件搜索,從XML文檔中搜索需要的標志或數據;
格式轉換,如轉換成HTML。任何需將原始XML轉換成另一種格式的工作都最好使用事件驅動(dòng)分析器來(lái)完成,因為它可動(dòng)態(tài)將信息轉換成新格式。
少量修改,你可用事件驅動(dòng)分析器讀取和重新生成XML。在分析過(guò)程中,可以改變少量的單語(yǔ)、字符數據內容或重新構造XML。事件驅動(dòng)分析器特別適合整理和重新格式化XML文檔。
簡(jiǎn)單驗證,由于整個(gè)文檔不在內存中,所以無(wú)法進(jìn)行完整驗證,但可檢查拼寫(xiě)錯誤和一般良構XML文檔之類(lèi)的簡(jiǎn)單問(wèn)題;
建立內部結構,可以使用事件驅動(dòng)分析器建立XML文檔的復雜內部表示,如基于樹(shù)的接口使用的樹(shù)式結構。
事件驅動(dòng)分析器不能在XML文檔間交叉引用文檔內容,但它使用簡(jiǎn)單,速度快。
計算機并不能正真理解文本內容,它無(wú)法識別諸如a,b,c這類(lèi)的字母,更不用說(shuō)中文了。計算機所能理解的只有數字,如60,80等。字符集(character set)規定了字母到數字的映射關(guān)系,如65代表大寫(xiě)字母A。65稱(chēng)為碼點(diǎn)(code point),字符編碼(character encoding)決定碼點(diǎn)如何用字節表示。是用多了節還是單字節,高字節位表示什么,低字節位表示什么。
不同國家使用不同的語(yǔ)言,不同程序使用不同的編碼規范,在進(jìn)行世界范圍內的數據交換就要統一表示數據的字符編碼規范。傳統的ASCII字符集只定義了127個(gè)字符,其中前31個(gè)是控制符。127位之后的字符隨平臺不同而不同。大多數平臺只能表示前127位,單字節(8位),使得字符集中最多只能提供256個(gè)字符。這些標準字符稱(chēng)為羅馬或拉丁字符集,用ASCII來(lái)表示中文、日文是遠遠不夠的。為了解決字符集問(wèn)題,出現了Unicode字符集。它可用多字節格式編碼字符,目前標準允許2字節字符,支持65536個(gè)不同字符。標準的Unicode字符集為L(cháng)atin-1(或ISO-8859-1)。有關(guān)Unicode的介紹可訪(fǎng)問(wèn)Unicode的官方網(wǎng)站:http://www.unicode.org
Unicode字符集為字符分配碼點(diǎn),即編號。這些編號可以用多種模式編碼,如UCS-2、UCS-4、UTF-8、UTF-16。
UCS-2,也叫ISO-10646-UCS-2。每個(gè)字符用一個(gè)0~65535之間的兩個(gè)字節的無(wú)符號整數表示。如A的Unicode碼點(diǎn)為65,用兩個(gè)字節00和41(十六進(jìn)制)表示。B的Unicode碼點(diǎn)為66,用兩個(gè)字節00和42表示。UCS-2有兩種形式:高字節(#x0041)在前和低字節(#x4100)在前。為區發(fā)高低位不同表示形式,采用UCS-2編碼文檔通常以Unicode字符#xFEFF(零寬度無(wú)間斷空格)開(kāi)頭,一般稱(chēng)為字節順序標記(byte order mark)。這個(gè)字符是不可見(jiàn)的。如果兩個(gè)字節交換位置,得到的字符#xFFFE實(shí)際是不存在的。因此中通過(guò)查看UCS-2文檔的前兩個(gè)字符是#xFEFF還是#xFFFE,就可確定該文檔是否是高字節在前。UCS-2的缺點(diǎn):如果文本字符主要是拉丁文,由于采用兩個(gè)字節,字符集編碼是單字節字符編碼的兩倍;UCS-2不能與ASCII向前或向后兼容,用于單字節字符集的工具常常不適用于處理UCS-2編碼文件。
UTF-8是一種可這長(cháng)度的Unicode編碼。0~127為ASCII碼字符集,與ASCII編碼完全兼容,每個(gè)字符采用一個(gè)字節編碼。UTF-8用兩個(gè)字節表示128~2047,該范圍覆蓋了最常見(jiàn)的非表意字母。其余的字符,主要來(lái)自漢語(yǔ)、日語(yǔ)和韓語(yǔ),每個(gè)都用3個(gè)字節表示。如果Unicode的碼點(diǎn)超過(guò)65535個(gè)字符,那么這些字符就會(huì )用4個(gè)字節編碼。對于以拉丁文為主的文件,使用UTF-8比UCS-2可減少一半的文件大小。對于漢語(yǔ)、日語(yǔ)和韓語(yǔ)的文件,其大小會(huì )增加百分之五十。對于其它語(yǔ)言,文件大小相差不大。UTF-8是最常用的Unicode編碼方式。
在Unicode流行以前,出現了一系列處理特定語(yǔ)言的單字節字符集,ISO將14種這樣的字符集標準化成ISO 8859標準,分別是ISO-8859-1~14。ISO-8859-15是ISO-8859-1的修訂版本。這些字符集統稱(chēng)ISO字符集。
Cp1252是依賴(lài)于Windows平臺的一種編碼,是Windows的缺省字符集。該種編碼不支持跨平臺特性,盡量不要使用。
MacRoman是Mac OS使用的一種非標準、單字節編碼。在非Mac平臺下使用也會(huì )有問(wèn)題,盡量不要使用。
本文由()整理發(fā)布!轉載請注明出處,謝謝!
在XML文檔中,如果需輸入編輯器不支持的字符,我們可用字符引用的方式,以十進(jìn)制或十六進(jìn)制給出它所代表的Unicode字符編號,如(十進(jìn)制)或者њ(十六進(jìn)制)。字符引用可用于元素內容、屬性和注釋?zhuān)荒苡糜谠孛蛯傩悦、處理指令或XML關(guān)鍵字。如果有一些字符需經(jīng)常使用,則我們可為這些字符定義實(shí)體,這樣,在文檔中就可方便地引用該實(shí)體了。專(zhuān)門(mén)定義字符實(shí)體的DTD我們可獨立出來(lái),形成以.ent為后綴的外部DTD。在需要時(shí)使用外部參數實(shí)體引用將這些定義引入文檔的DTD中。
XHTML 1.0 DTD包含有三個(gè)有用的字符引用實(shí)體可在文檔中使用。
Latin-1字符,http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent
ISO-8859-1中自160以上的非ASCII碼字符。
特殊字符,http://www.w3.org/TR/xhtml/DTD/xhtml-special.ent
ISO-8859-2中不在Latin-1中的字母。
標點(diǎn)符號,http://www.w3.org/TR/xhtml-symbol.ent
希臘字母表(不包含帶重音的字符)和各種標點(diǎn)符號、數學(xué)運算符及其他數學(xué)中常用的符號。
在XML文檔中可以使用xml:lang屬性規定元素內容采用的語(yǔ)言。這樣就可在一篇文檔中同時(shí)使用多種語(yǔ)言,這是XML跨平臺和跨語(yǔ)言的重要特性之一。如:xml:lang="CN-CHN"。語(yǔ)言代碼是一個(gè)兩個(gè)字母的語(yǔ)言代碼,語(yǔ)言代碼后還可跟一個(gè)子代碼,語(yǔ)言代碼可在這里找到http://ftp.ics.uci.edu/pub/ietf/http/related/iso3166.txt。下面是xml:lang屬性聲明的示例:
由于所有語(yǔ)言代碼都是有效的XML名稱(chēng)標記,所以使用NMTOKEN類(lèi)型。
【XML入門(mén)教程:分析XM】相關(guān)文章:
梵語(yǔ)入門(mén)教程08-20
CSS入門(mén)教程01-25
XML認證元素類(lèi)型聲明05-28
新手油畫(huà)入門(mén)教程09-16
紋繡入門(mén)教程06-25
關(guān)于IBM XML認證考試的要點(diǎn)01-13
跆拳道入門(mén)教程08-08