字符實體
在我們了解字符實體之前,先了解一下什麼是 XML 實體。
W3 聯盟 對實體的定義:文檔實體作為實體樹的根元素和 XML 處理程序的起點。
這意味著實體就是 XML 中的占位符。它們可以聲明在文檔序言或者DTD中。實體有不同的類型,本章後面會討論字符實體。
HTML 和 XML 都有一些符號被保留使用,它們不能在 XML 代碼中用作內容。例如,< 和 > 符號被用作 XML 標簽的開頭和結尾。要顯示這些特殊字符,就要使用字符實體。
有些特殊的字符或符號還不能直接使用鍵盤輸入。可以使用字符實體來顯示這些符號或特殊字符。
字符實體類型
有三種類型的字符實體:
預定義的字符實體。
編碼字符實體。
命名字符實體。
預定義的字符實體
引入它們是為了避免使用某些有歧義的符號。例如,當我們把小於(<)或大於(>)符號當尖括號(<>)使用時就會產生歧義。字符實體從根本上來說就是用來界定 XML 標簽的。下面是一個來自 XML 規范的預定義字符實體列表。它們可以用來表示某些字符而不帶歧義。
和號: &
單引號: '
大於: >
小於: <
雙引號: "
數字字符實體
數字引用被用來表示字符實體。數字引用可以是十進制或十六進制格式。由於有數以千記的數字引用,導致很難記住它們。數字引用通過使用字符在 Unicode 字符集中的編碼數值來表示。
十進制數字引用基本語法:
XML/HTML Code復制內容到剪貼板十六進制數字引用基本語法:
XML/HTML Code復制內容到剪貼板下面的表格列出了一些預定義字符實體和它們對應的數值:
正如上面所說的,數值字符很難記住,最受歡迎的字符實體類型是命名字符實體。因為每個實體都用一個名稱標識。
例如:
'Aacute' 表示帶重音符的大寫 A 字符。
'ugrave' 表示帶沉音符的小寫 u。
CDATA 片段
術語 CDATA 就是字符數據。CDATA 被定義為不由解析器解析的文本塊,但它被公認為標記。
標記中預定義的實體比如 <,> 和 & 需要手動輸入並且通常難以閱讀。這種情況下就可以使用 CDATA 片段。通過使用 CDATA 片段,我們可以告訴解析器文檔的特定部分不包含標記,應該被當做普通文本對待。
語法
下面是 CDATA 片段的語法:
上面的語法由三個部分組成:
CDATA 開始部分 - CDATA 以9個字符的分隔符<![CDATA[開頭。
CDATA 結束部分 - CDATA 以 ]]> 分隔符結尾。
CData 部分 - 上面這兩個標記之間的字符被解釋為字符而不是標記。這個部分可以包含標記字符(<,> 和 &),但是它們會被 XML 處理程序忽略。
示例
下面的標記代碼展示了 CDATA。其中寫在 CDATA 片段中的字符都會被解析器忽略。
XML/HTML Code復制內容到剪貼板在上述的語法中,<message> 和 </message> 之間的所有內容都會被當做字符數據而不是標記。
CDATA 規則
XML CDATA 需要遵循以下規則:
XML 文檔任何位置的 CDATA 都不能包含 "]]>" 字符。
CDATA 片段不可以嵌套。