1. 程式人生 > >第三章 XML解析器,驗證器,轉換器,編輯器等

第三章 XML解析器,驗證器,轉換器,編輯器等

xml有這麼多的規則,寫出來的xml文字檔案到底符不符合要求呢?
用人工檢驗的方式效率太低,也容易出錯,所以開發出了程式來驗證。

xml驗證器:

XML DTD和XML Schema,後者用來替代前者。
如果 XML 文件存在錯誤,那麼程式就不應當繼續處理這個文件。理由是,XML 軟體應當輕巧,快速,具有良好的相容性。

Xml轉換器:

XSLT
您可以把 XML 文件轉換成 HTML 格式。XSLT 是在瀏覽器顯示 XML 檔案之前,先把它轉換為 HTML。

xml解析器:

XML DOM:定義了訪問和操作 XML 文件的標準方法。
在所有主流的瀏覽器中,均能夠檢視原始的 XML 檔案。
不要指望 XML 檔案會直接顯示為 HTML 頁面。
要想顯示xml的內容,兩種方法:
第一,是通過使用 XSLT,在使用 XSLT 來把 XML轉換成html 時,不同的瀏覽器可能會產生不同結果。為了減少這種問題,可以在伺服器上進行 XSLT 轉換。

第二,也是最標準流程,所有現代瀏覽器都有內建的 XML 解析器,XML 解析器把 XML 文件轉換為 XML DOM 物件,再通過html顯示出來。
注意,XML 文件中的所有文字均會被解析器解析。
只有 CDATA 區段中的文字會被解析器忽略。
當某個 XML 元素被解析時,其標籤之間的文字也會被解析:

<message>This text is also parsed</message>

解析器之所以這麼做是因為 XML 元素可包含其他元素,就像這個例項中,其中的 元素包含著另外的兩個元素(first 和 last):

<name>
<first>Bill</first><last>Gates</last></name>

而解析器會把它分解為像這樣的子元素:

<name>
<first>Bill</first>
<last>Gates</last>
</name>

某些文字,比如 JavaScript 程式碼,包含大量 “<” 或 “&” 字元。為了避免錯誤,可以將指令碼程式碼定義為 CDATA。
CDATA 部分中的所有內容都會被解析器忽略。
CDATA 部分由"<![CDATA[" 開始,由 "]]>"

結束:

<script>
<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0) then
{
return 1;
}
else
{
return 0;
}
}
]]>
</script>

始終要記得,XML本身僅僅是儲存資料,被用來傳輸的,自身什麼也不做,要如何顯示是HTML或者javascript之類的事情。

xml 編輯器

XML 文件可以包含非 ASCII 字元,比如挪威語 æ ø å,或者法語 ê è é。
為了避免錯誤,需要規定 XML 編碼,或者將 XML 檔案存為 Unicode。
我們應該始終顯式使用編碼屬性。

<?xml version="1.0" encoding="us-ascii"?>
<?xml version="1.0" encoding="windows-1252"?>
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-16"?>

在 Windows 應用程式中,換行通常以一對字元來儲存:回車符(CR)和換行符(LF)。
在 Unix 和 Mac OSX 中,直接使用 LF 來儲存新行。

XML 以 LF 儲存換行,一個字元,不區分Windows還是unix,所以網路上通常都要求,不能用Windows的記事本編輯xml。
Windows 記事本預設會將檔案儲存為單位元組的 ANSI(ASCII)。
如果您選擇 “另存為…”,就可以指定 ANSI、UTF-8、Unicode(UTF-16)或 Unicode Big。

事實上,許多 Web 開發人員使用記事本來編輯 HTML 和 XML 文件(只要注意編碼問題),這是因為最常用的作業系統都帶有記事本,而且它很容易使用。
但是記事本有缺陷,不能確定您編輯的文件型別,而且無法輔助您的工作。
就類似我們寫程式碼一樣,簡單程式碼用記事本確實可以,單獨編譯連結就行了。
但稍微複雜的程式碼,用記事本效率就差了,專用的程式碼編輯器能夠10倍的提升工作效率。
專業的XML 編輯器也是同樣道理,它會幫助您編寫無錯的 XML 文件,根據某種 DTD 或者 schema 來驗證 XML,以及強制您建立合法的 XML 結構。
比如為開始標籤自動新增結束標籤
比如強制您編寫合法的 XML
比如根據某種 Schema 來驗證 XML
比如對您的 XML 語法進行程式碼的顏色化,方便觀察
網上推薦XMLSpy編輯器