所有 XML 文档中的文本均会被解析器解析。

只有 CDATA 区段(CDATA section)中的文本会被解析器忽略。

PCDATA

PCDATA 指的是被解析的字符数据(Parsed Character Data)。

XML 解析器通常会解析 XML 文档中所有的文本。

当某个 XML 元素被解析时,其标签之间的文本也会被解析:

<message>此文本也会被解析</message>

解析器之所以这么做是因为 XML 元素可包含其他元素,就像这个例子中,其中的 <name> 元素包含着另外的两个元素(first 和 last):

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

而解析器会把它分解为像这样的子元素:

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

转义字符

非法的 XML 字符必须被替换为实体引用(entity reference)。

假如您在 XML 文档中放置了一个类似 "<" 字符,那么这个文档会产生一个错误,这是因为解析器会把它解释为新元素的开始。因此你不能这样写:

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

为了避免此类错误,需要把字符 "<" 替换为实体引用,就像这样:

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

在 XML 中有 5 个预定义的实体引用:

&lt; < 小于
&gt; > 大于
&amp; & 和号
&apos; ' 省略号
&quot; " 引号

注释:严格地讲,在 XML 中仅有字符 "<"和"&" 是非法的。省略号、引号和大于号是合法的,但是把它们替换为实体引用是个好的习惯。

CDATA

术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data)。

在 XML 元素中,"<" 和 "&" 是非法的。

"<" 会产生错误,因为解析器会把该字符解释为新元素的开始。

"&" 也会产生错误,因为解析器会把该字符解释为字符实体的开始。

某些文本,比如 JavaScript 代码,包含大量 "<" 或 "&" 字符。为了避免错误,可以将脚本代码定义为 CDATA。

CDATA 部分中的所有内容都会被解析器忽略。

CDATA 部分由 "<![CDATA[" 开始,由 "]]>" 结束:

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

在上面的例子中,解析器会忽略 CDATA 部分中的所有内容。

关于 CDATA 部分的注释:

CDATA 部分不能包含字符串 "]]>"。也不允许嵌套的 CDATA 部分。

标记 CDATA 部分结尾的 "]]>" 不能包含空格或折行。

最新文章

  1. atitit.闭包的概念与理解attilax总结v2 qb18.doc
  2. AVD Manager
  3. Software Development Engineer - Database Services
  4. python2.7使用ansible
  5. php ajax json jquery 记录
  6. js千分位的函数
  7. arcgis api for silverlight
  8. 正则表达式概述与JAVA中正则表达式的应用
  9. PHP socket类
  10. dfs算法
  11. template.process(root, out)的用法(shiro项目中来的九)
  12. Github上的原文XMPP环境搭建步骤,英语能力差不多的可以看看
  13. dbms_redefinition方式普通表改造分区表
  14. BZOJ3732Network——kruskal重构树+倍增+LCA/最小生成树+倍增
  15. [翻译]Bitmap的异步加载和缓存
  16. Linux基础命令---mv
  17. google code 或 git 免用户名和密码 .netrc 在windows中的操作 _netrc
  18. 一款基于css3非常实用的鼠标悬停特效
  19. 史上最全的MonkeyRunner自动化测试从入门到精通(2)
  20. crontab中运行python程序出错,提示ImportError: No module named解决全过程

热门文章

  1. 传统IT企业与互联网企业的一点思考
  2. TFS下的源代码控制
  3. ixgbe 82599 固定源与目标, UDP, 64字节小包, 1488w pps 单核CPU软中断sirq 100%
  4. poj 1698 Alice‘s Chance
  5. 上传源码到github
  6. 转&gt;&gt;在同一个sql语句中如何写不同条件的count数量
  7. Mac OS 终端常用命令【搜藏】
  8. 一周一话题之四(JavaScript、Dom、jQuery全面复习总结&lt;js篇&gt;)
  9. bootstrap 架构知识点
  10. 【一天一道LeetCode】#92. Reverse Linked List II
  11. 谈谈javascript 中的函数问题
  12. 第六篇--Ubuntu画图软件
  13. IP通信基础学习第八周
  14. python初学心得之一
  15. js将时间戳格式化为HH:ii:ss的格式
  16. PAT基础6-12
  17. ajax 删除数据无刷新
  18. (转)Java按指定行数读取文件
  19. PHP获取当前页面的网址
  20. python3 识别图片文字