xml文件中使用的轉義字符

 XML文件中使用的轉義字符

不合法的XML字符必須被替換爲相應的實體。

如果在XML文檔中使用類似"<" 的字符, 那麼解析器將會出現錯誤,因爲解析器會認爲這是一個新元素的開始。所以不應該象下面那樣書寫代碼:

<message>if salary < 1000 then</message>

爲了避免出現這種情況,必須將字符"<" 轉換成實體,象下面這樣:

<message>if salary  1000 then</message>

下面是五個在XML文檔中預定義好的實體:

&lt;<小於號
&gt;>大於號
&amp;&
&apos;'單引號
&quot;"雙引號

實體必須以符號"&"開頭,以符號";"結尾

注意: 只有"<" 字符和"&"字符對於XML來說是嚴格禁止使用的。剩下的都是合法的,爲了減少出錯,使用實體是一個好習慣。


CDATA部件

在CDATA內部的所有內容都會被解析器忽略。

如果文本包含了很多的"<"字符和"&"字符——就象程序代碼一樣,那麼最好把他們都放到CDATA部件中。

一個 CDATA 部件以"<![CDATA[" 標記開始,以"]]>"標記結束:

<script>

function matchwo(a,b)
{
if (a < b && a < 0) then
{
return 1
}
else
{
return 0
}
}

</script>

在前面的例子中,所有在CDATA部件之間的文本都會被解析器忽略。

CDATA注意事項:

CDATA部件之間不能再包含CDATA部件(不能嵌套)。如果CDATA部件包含了字符"]]>" 或者"<![CDATA[" ,將很有可能出錯哦。

同樣要注意在字符串"]]>"之間沒有空格或者換行符。

 

 

 

==========================================================================================

RSS中出現了一些麻煩的字符,比如 &,®,™  等。這些字符放到XML中,如果不做特殊處理,就會有錯誤產生。比如下面的XML:

<item>&</item>

在IE 瀏覽器,以及一些解析用的DOM中解析這個片段,就會產生錯誤。

在W3C的技術規範中,也可以看到這樣的字符不允許出現:
http://www.w3.org/TR/2001/REC-xml-c14n-20010315

比如:對 Text Nodes 允許的字符有如下要求: the string value, except all ampersands are replaced by &amp;, all open angle brackets (< ) are replaced by &lt;, all closing angle brackets (> ) are replaced by &gt;, and all #xD characters are replaced by &#xD;.

由於這些特殊字符比較多,我們在XML中替換的工作量比較大,我們可以在DTD文件中作些定義:

比如DTD文件中增加以下部分:

<!-- PERCENT SIGN -->
<!ENTITY amp "&#38;#38;">
<!-- COPYRIGHT SIGN -->
<!ENTITY reg "&#x00AE;">
<!-- REG TRADE MARK SIGN -->
<!ENTITY trade "&#x2122;">

並在XML中定義這個XML文件需要這個DTD支持:

<!DOCTYPE HeadCount SYSTEM "eula.dtd">

這樣在XML文件中出現 & ® ™ 這類特殊字符就不會再報錯了。

有關更多的特殊字符可以參看:

http://xml.coverpages.org/CourtDocument11-2002-05s-DTD.txt

那裏羅列的特殊字符有近200個。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章