分析XML文檔可通過程序來做,分析器有兩大類,一種是事件驅動的,一種是基於樹模型的。
基於樹的分析器把整個XML文檔讀入內存,並生成樹狀結構。分析器可隨機樹中的任意節點,並能修改樹結構和內容。
現有的分析器種類有上百種,但常用的是兩個標准的工具庫,一個是XML簡單API(SAX,Simple API for XML)和文檔對象模型(DOC,Document Object Model)。SAX是事件驅動分析器的標准,而DOM是基於樹的分析器標准。另外,Expat雖然不是標准,但它是腳本語言中處理XML時最常用的分析器。Expat由James Clark編寫,是事件驅動分析器。
本文由整理發布!轉載請注明,謝謝!
計算機並不能正真理解文本內容,它無法識別諸如a,b,c這類的字母,更不用說中文了。計算機所能理解的只有數字,如60,80等。字符集(character set)規定了字母到數字的映射關系,如65代表大寫字母A。65稱為碼點(code point),字符編碼(character encoding)決定碼點如何用字節表示。是用多了節還是單字節,高字節位表示什麼,低字節位表示什麼。
不同國家使用不同的語言,不同程序使用不同的編碼規范,在進行世界范圍內的數據交換就要統一表示數據的字符編碼規范。傳統的ASCII字符集只定義了127個字符,其中前31個是控制符。127位之後的字符隨平台不同而不同。大多數平台只能表示前127位,單字節(8位),使得字符集中最多只能提供256個字符。這些標准字符稱為羅馬或拉丁字符集,用ASCII來表示中文、日文是遠遠不夠的。
為了解決字符集問題,出現了Unicode字符集。它可用多字節格式編碼字符,目前標准允許2字節字符,支持65536個不同字符。標准的Unicode字符集為Latin-1(或ISO-8859-1)。有關Unicode的介紹可Unicode的官方網站:http://www.unicode.org
Unicode字符集為字符分配碼點,即編號。這些編號可以用多種模式編碼,如UCS-2、UCS-4、UTF-8、UTF-16。
在Unicode流行以前,出現了一系列處理特定語言的單字節字符集,ISO將14種這樣的字符集標准化成ISO 8859標准,分別是ISO-8859-1~14。ISO-8859-15是ISO-8859-1的修訂版本。這些字符集統稱ISO字符集。
Cp1252是依賴於Windows平台的一種編碼,是Windows的缺省字符集。該種編碼不支持跨平台特性,盡量不要使用。
MacRoman是Mac OS使用的一種非標准、單字節編碼。在非Mac平台下使用也會有問題,盡量不要使用。
本文由整理發布!轉載請注明,謝謝!
在XML文檔中,如果需輸入器不支持的字符,我們可用字符引用的方式,以十進制或十六進制給出它所代表的Unicode字符編號,如#1114;(十進制)或者#x45A(十六進制)。字符引用可用於元素內容、屬性和注釋,不能用於元素名和屬性名、處理指令或XML關鍵字。如果有一些字符需經常使用,則我們可為這些字符定義實體,這樣,在文檔中就可方便地引用該實體了。專門定義字符實體的DTD我們可獨立出來,形成以.ent為後綴的外部DTD。在需要時使用外部參數實體引用將這些定義引入文檔的DTD中。
XHtml 1.0 DTD包含有三個有用的字符引用實體可在文檔中使用。
在XML文檔中可以使用xml:lang屬性規定元素內容采用的語言。這樣就可在一篇文檔中同時使用多種語言,這是XML跨平台和跨語言的重要特性之一。如:xml:lang=CN-CHN。語言代碼是一個兩個字母的語言代碼,語言代碼後還可跟一個子代碼,語言代碼可在這裡找到http://FTP.ics.uci.edu/pub/IEtf/http/related/iso3166.txt。下面是XML:lang屬性聲明的示例:
!ELEMENT test (#PCDATA)!ATTLIST test XML:lang NMTOKEN #IMPLIED
由於所有語言代碼都是有效的XML名稱標記,所以使用NMTOKEN類型。