当前位置: 首页 > news >正文

![CDATA[ ]] 是什么东东

今天在做项目时,在文件里写js时总是报错,后来才发现是js里的&,< 被解析了,解决方法就是在把js放在<![CDATA[  ]]>里。现在就一起来了解下<![CDATA[  ]]>是什么吧。

以下内容转自:http://www.w3school.com.cn/xml/xml_cdata.asp

 

所有 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 部分中的所有内容。

本文转自挨踢前端博客园博客,原文链接http://www.cnblogs.com/duanhuajian/archive/2013/05/17/3083472.html如需转载请自行联系原作者


@挨踢前端

相关文章:

  • 什么是web接口
  • ubuntu下usb转串口设置
  • Python+Nginx实现邮件POP、IMAP、SMTP代理配置介绍
  • cookie setCookie sessionId
  • C# CancellationTokenSource和CancellationToken的实现
  • 制作首页的显示列表。
  • AjaxToolKit之Rating控件的使用(http://www.soaspx.com/dotnet/ajax/ajaxtech/ajaxtech_20091021_1219.html)...
  • 运行java web项目时报错:Several ports (8005, 8080, 8009) required
  • 备忘,查询信号质量的AT
  • Json学习整理
  • 将hdfs 上的文件通过shell脚本 导入到hive上面
  • 浅谈双绞线在视频监控系统中的实际应用
  • [linux] C语言Linux系统编程进程基本概念
  • Solr部署到tomcat,通过war包
  • FreeTextBox使用详解
  • 【comparator, comparable】小总结
  • 0基础学习移动端适配
  • 2019.2.20 c++ 知识梳理
  • C语言笔记(第一章:C语言编程)
  • java 多线程基础, 我觉得还是有必要看看的
  • JavaScript实现分页效果
  • php中curl和soap方式请求服务超时问题
  • REST架构的思考
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • 百度地图API标注+时间轴组件
  • 闭包--闭包之tab栏切换(四)
  • 产品三维模型在线预览
  • 观察者模式实现非直接耦合
  • 蓝海存储开关机注意事项总结
  • 聊聊redis的数据结构的应用
  • 前端面试之闭包
  • 强力优化Rancher k8s中国区的使用体验
  • 删除表内多余的重复数据
  • 写给高年级小学生看的《Bash 指南》
  • 因为阿里,他们成了“杭漂”
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • # Java NIO(一)FileChannel
  • #git 撤消对文件的更改
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • ${ }的特别功能
  • (0)Nginx 功能特性
  • (Forward) Music Player: From UI Proposal to Code
  • (WSI分类)WSI分类文献小综述 2024
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • .gitignore文件—git忽略文件
  • .net 程序发生了一个不可捕获的异常
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .pyc文件是什么?
  • /*在DataTable中更新、删除数据*/
  • /etc/sudoer文件配置简析
  • [ 第一章] JavaScript 简史
  • [52PJ] Java面向对象笔记(转自52 1510988116)