CDATA为何物?

CDATA的解释



  1. 术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data),XHTML也是如此。

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

  2. CDATA 部分由 "<![CDATA[" 开始,由 "]]>" 结束。

CDATA 部分不能包含字符串 "]]>"。也不允许嵌套的 CDATA 部分。标记 CDATA 部分结尾的 "]]>" 不能包含空格或折行。

为何要用CDATA



  1. 在XML或XHTML中特殊字符会被误解或不解,可是使用字符实体代码在开发者看来很难懂,所以根据CDATA的解释,可以在CDATA的部分中使用特殊字符,如小于(<)、大于(>)、和号(&)和双引号("),而不必使用它们的字符实体。

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

实体引用(entity reference) 字符 解释
&lt; < 小于
&gt; > 大于
&amp; & 和号
&apos; 单引号
&quot; " 双引号

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

  2.虽然这是正式方式,但另外一个问题是,大多数浏览器都不完全支持XHTML,所以浏览器无法识别CDATA段,即这在JavaScript中是个语法错误。以下方法便能够完美解决此问题。

//<![CDATA[function compare(a,b){
  if (a < b)    alert("a小于b");
  else if (a>b)    alert("a大于b");
  else
     alert("a等于b");
}
//]]>

使用单行的JavaScript注释"//",可在不影响代码语法的情况下嵌入CDATA段,这种解决方案模仿了“对旧浏览器隐藏”代码的方法。但是,为避免CDATA的问题,最好还是用外部引入JS文件的方式。

时间: 2024-11-05 18:58:42

CDATA为何物?的相关文章

java jdom 解析CDATA内容

package com; import java.io.IOException; import java.io.StringReader; import java.util.List; import org.jdom.CDATA; import org.jdom.Comment; import org.jdom.DocType; import org.jdom.Document; import org.jdom.Element; import org.jdom.EntityRef; import

Spring JavaBean属性值的注入方式( 属性注入, 特殊字符注入 &lt;![CDATA[ 带有特殊字符的值 ]]&gt; , 构造器注入 )

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.or

&lt;![CDATA[]]&gt;和转义字符

被<![CDATA[]]>这个标记所包含的内容将表示为纯文本,比如<![CDATA[<]]>表示文本内容“<”. 此标记用于xml文档中,我们先来看看使用转义符的情况.我们知道,在xml中,”<”.”>”.”&”等字符是不能直接存入的,否则xml语法检查时会报错,如果想在xml中使用这些符号,必须将其转义为实体,如”<”.”>”.”&”,这样才能保存进xml文档. 在使用程序读取的时候,解析器会自动将这些实体转换回”<”.”

XML CDATA

---------  XML CDATA   -------- 在标记CDATA下,所有的标记.实体引用都被忽略 ,而被XML处理程序一视同仁地当做字符数据看待,CDATA的形式如下: <![CDATA[文本内容]]> CDATA的文本内容中不能出现字符串"]]>",另外,CDATA不能嵌套. 术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data) <script> <![CDATA[ fu

&lt;![CDATA[ ]]&gt; 的作用

在xml文件中 一些特殊字符需要去除其本意,就要用到 <![CDATA[    ]]>,,比如 ibitis的sqlmap.xml 中  要比较大小不能直接用 < 或者 > ,应该 <![CDATA[ < ]]> 这样子

&lt;![CDATA[的web使用简单说明

html.javascript会涉及到三个解析器,html解析器.xml解析器.javascript解析器.那么好了,问题来了,以上代码经常混编在一起,各自有各自的规则,终究会有冲突的,如下就是冲突. 根据W3C XHTML 1.0的规定:在XHTML中,因为<和&这两个符号有特殊意义(小于号用于标签的开始标记),所以这两个符号<和&需要转义成<和&. 当html代码中掺杂javascript代码的时候,同时javascript代码中包含了”<”字符的时候h

XML 特殊字符处理和 CDATA

在处理XML数据时,特殊字符要特殊处理,不能和节点字符混淆. 所有 XML 文档中的文本均会被解析器解析. 只有 CDATA 区段(CDATA section)中的文本会被解析器忽略. PCDATA PCDATA 指的是被解析的字符数据(Parsed Character Data). XML 解析器通常会解析 XML 文档中所有的文本. 当某个 XML 元素被解析时,其标签之间的文本也会被解析: <message>此文本也会被解析</message> 解析器之所以这么做是因为 XM

mybatis 的&lt;![CDATA[ ]]&gt;

示例: xml文件: <!-- 获取条数 --> <select id="getCount" parameterType="Map" resultType="long"> select count(*) from orders o,user u,linkman l where o.flag=1 and o.uid=u.uid and l.lid=o.uid <if test="fdate!=null&quo

ODATA 云驱动 http://www.cdata.com/cloud/

ODATA 云驱动   http://www.cdata.com/cloud/    目前支持:ORACLE.MS SQL . MYSQL. DATADIRECT CLOUD    https://www.progress.com/products/datadirect-cloud Cloud Drivers Makes on-premise & cloud data sources easily accessible across platforms and devices. Expose l