XML CDATA是什嗎?

來源:互聯網
上載者:User

解析資料

XML 解析器通常情況下會處理XML文檔中的所有文本。

當XML元素被解析的時候,XML元素內部的文本也會被解析:

 

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

XML解析器這樣做的原因是XML元素內部可能還包含了別的元素,象下面的例子,name元素內部包含了first和last兩個元素:


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

解析器會認為上面的代碼是這樣的:

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

 

逸出字元

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

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

 

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

 

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

<message>if salary &lt; 1000 then</message>


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

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

 

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

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

 

CDATA組件

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

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

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

 

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

 

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

 

CDATA注意事項:

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

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

<![CDATA[ ]]>是什麼意思???

標明是純文字的,沒有這個的話 <  >  & 字元是不能直接存入XML的,需要轉義,而用這個標記則不需要轉義而將這些符號存入XML文檔。
可以避免未預料的特殊符號導致XML解析出錯。

我剛開始學習XML的東西,這裡面我遇到一個叫做CDATA的段。這裡面的解釋是在CDATA裡面的所有東西都會被解析器忽略我不清楚這是什麼意思。用簡單的話來說就是CDATA什麼時候用,這裡面的東西有什麼用。如果用這個了,會產生什麼樣子的結果。 
還有就是XML有效性的驗證。這個是什麼意思,為什麼要驗證有效性呢,一般怎麼驗證呢,方法如何。我看書上說有DTD和XML Schema的兩個方法,如何用,有什麼區別呢。
問題雖然多了點,但是就是兩個主要的問題。希望知道的大俠幫幫小弟,用通俗簡單一點的話告訴我。萬分感謝。
==================================================

當你用FLASH和xml結合做網站應用程式程式時,例如讓人自由輸入姓名時,人們可以輸入一些符號,例如∶"<"、">"、"/"、"。"等,當產生XML時,會破壞了XML結構,使資料中斷。

這就要用XML CDATA

在XML文檔中的所有文本都會被解析器解析。

只有在CDATA組件之內的文本會被解析器忽略。

 

<![CDATA[ ]]>是什麼意思。~
從資料庫裡讀取資料產生XML檔案,加個“<![CDATA[    ]]>“是什麼意思。
Response.Write "<body><![CDATA["
Response.Write rs("message")
Response.Write "]]></body>"

標明是純文字的,沒有這個的話 <  >  & 字元是不能直接存入XML的,需要轉義,而用這個標記則不需要轉義而將這些符號存入XML文檔。 PCDATA和CDATA的區別究竟是什麼呢。

PCDATA表示已解析的字元資料。
   CDATA是不通過解析器進行解析的文本,文本中的標籤不被看作標記。
   CDATA表示裡面是什麼資料XML不會解析.比如可能是下面的一段
   <![CDATA[ 
       if(a>b){
          System.out.println(a);
     }

     ]]>

    注意上面的一個">"符號.


    PCDATA的資料是要給XML解析器去解析的,那上面的>去解析肯定會出錯了,所以要用實體定義.上面的資料如果用PCDATA表示如下:

      if(a&gt;b){
         System.out.println(a);
      }


    
     cdata是在XML文檔裡面使用的關鍵字,用來告訴瀏覽器,這部分內容不用解析,是給其他程式用的,比如JAVASCRIPT等等,#PCDATA是在 XML約束文檔裡使用的,如DTD類型的約束文檔,在這裡面表示元素的內容或屬性的取值範圍等等,是字串形式的,

可以避免未預料的特殊符號導致XML解析出錯。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.