說到NameSpaces我們很快會聯(lián)想到.Net的命名空間。是的,XML是可擴展的是由開發(fā)者定義的,所以相同的標記會有不同的含義。如果將這些標記混合在一起,XmlParser無法去識別他們之間的區(qū)別。我們嘗試從不同的XML應(yīng)用讀取XML時也會引起混亂。
解決的直接的思路是使用一個前綴。可以在每個標記前面加一個前綴作區(qū)分。而當我們使用前綴的時候,我們必須為前綴做一個Namespaces的聲明調(diào)用。Namespaces是作為一個xmlns的Attribute調(diào)用的。語法如下xmlns:prefix="URI"。例子:
為一個元素定義了Namespace則它的所有的子元素都會使用相同的Namespace。因此Namespace可以定義在root元素中。
為了簡化前綴,我們可以定義默認的命名空間(Default Namespaces)。語法是:xmlns="namespaceURI"。例子:
一個說明Namespaces的最好例子是XSLT。XSLT是一種XML語言。XSLT用來把XML文件轉(zhuǎn)換成另一種格式,如HTML。下面是一個XSLT文件,你可以看到大部分是HTML標記,而同時有一部分標記使用xsl為前綴的標記。
在XML文檔中的所有Text都會被Parser進行分析,除了在CDATA中的文本。
PCDATA:Parsed Character Data,是能夠被Parser分析的XML文本數(shù)據(jù)。
CDATA:(Unparsed)Character Data,是不為Parser所分析的XML文本數(shù)據(jù)。
在CDATA可以包含一些可能會引起錯誤的符號。例如如果一個Element包含有“<”和“>”將會引起Parser的錯誤。因此可以將它包含在CDATA中。CDATA以“<![CDATA[”開始;以“]]>”結(jié)束。
XML文檔可以包含非ASCII的字符。例如挪威語、法語之中的符號。這時為了避免錯誤,應(yīng)該指定XML文檔的編碼,并且以Unicode的方式保存XML文檔。同時應(yīng)該在XML文檔中使用“encoding”屬性予以說明。
<?xml version="1.0" encoding="UTF-16"?>
XML編碼錯誤(Encoding Errors):在加載XML文檔的時候,常見的XML編碼錯誤有兩種:
“An invalid character was found in text content.”
產(chǎn)生原因:XML文檔包括了非ASCII字符,并且文件以單字節(jié)(single-byte)ANSI或ASCII方式保存,而且沒有在XML中指定編碼編碼。
“Switch from current encoding to specified encoding not supported”
產(chǎn)生原因1:XML文檔以雙字節(jié)(double-byte)Unicode或UTF-16的方式保存,但是卻制定了單字節(jié)的編碼方式(如Windows-1252, ISO-8859-1, UTF-8等)。
產(chǎn)生原因2:以單字節(jié)的ANSI或ASCII的方式保存文檔,但卻在XML文件中指定編碼方式為UTF-16。
Windows記事本: 很多時,我們會用WindowsNotepad編輯XML文檔。這里要注意的是: WindowsNotepad默認將文檔以單字節(jié)ANSI(ASCII)的方式保存。 如果要保存為雙字節(jié)的Unicode(UTF-16),則要使用“另存為”保存。
為了避免錯誤,關(guān)于XML Encoding的建議是:和HTML一樣XML文件是純文本。一個標準的Web服務(wù)器和以很方便的存儲和生成XML文件。所以很多的Web服務(wù)器都有提供操作XML的API。具體各種不同的技術(shù)是如何實現(xiàn)的,就不能在這里說明了。
Internet Explorer XML Data Islands
What is it?
這是一種將XML數(shù)據(jù)嵌入到HTML頁面的技術(shù)。
Why avoid it?
因為這時IE的特有技術(shù),其他的Browser不支持。
What to use instead?
應(yīng)該使用JavaScript和XML DOM在HTML中展示XML數(shù)據(jù)。
Internet Explorer Behaviors
What is it?
IE5引入了動作的概念(Behaviors)。Behaviors是結(jié)合CSS為XML(或HTML)元素添加動作樣式的技術(shù)。
Why avoid it?
只有IE支持
What to use instead?
同樣應(yīng)該使用JavaScript和XML DOM進行實現(xiàn)。
因為指南已經(jīng)叫我們避免使用這兩種技術(shù),就沒必要深入了解他們了。
XML News
XMLNews是一種交換新聞和信息的規(guī)范。
XML Weather Service
National Oceanic and Atmospheric Administration是其中一個天氣服務(wù)的例子。
XML是純文本的,所以使用一般的文本編輯器就可以編輯XML了。但是使用一個專業(yè)的XML編輯器,比使用記事本(Notepad)有更多的優(yōu)點。
為什么不用Notepad?是的大多數(shù)的OS都有Notepad。很容易使用它來進行HTML、XML、CSS的編輯。但是請盡量不要使用Notepad,因為Notepad并不知道你在編輯的是HTML、XML或CSS文件,它也無法,不會提供幫助。
為什么使用XML編輯器?專業(yè)的XML編輯器可以更好的保證無錯的文檔。可以根據(jù)DTD或Schema,保證XML的有效性(Validate)。我們應(yīng)該使用提供以下功能的專業(yè)XML編輯器:
下一步的學習應(yīng)該是XML DOM和XSLT。如果你比較關(guān)心XML的有效性驗證,那么可以學習DTD和Schema。
新聞熱點
疑難解答