我经常在XML
文件中发现这个奇怪的CDATA
标记:
<;![CDATA[一些资料]]>;
我发现这个CDATA
标签总是出现在开头,然后是一些东西
但有时使用,有时不使用。我假设它是为了标记一些东西
是在那之后插入的“数据”。但是什么样的数据是一些东西呢?我用XML标记写的东西不是某种数据吗
CDATA代表字符数据,这意味着这些字符串之间的数据包括可以解释为XML标记但不应该解释为XML标记的数据
CDATA和comments之间的主要区别是:
- 正如Richard指出的,CDATA仍然是文档的一部分,而注释则不是
- 在CDATA中不能包含字符串
]>(
CDEnd
),而注释中的--
无效 - 注释内无法识别参数实体引用
这意味着给定一个格式良好的文档中的这四个XML片段:
<;!实体MyParamEntity“;“已扩大”&燃气轮机;
<--
在此评论中,我可以使用]]>;
以及其他保留字符,如<;
&",,及;,但%的参数;不会扩大
(如果检索此节点的文本,它将包含
%MyParameterity“而非”已扩展)
我不能把两个破折号放在一起。
--&燃气轮机;
<;![CDATA[
在这个字符数据块中,我可以
尽可能多地使用双破折号(连同“lt;”、“amp;”、“和”一起使用)
*和*%MyParamEntity;将展开为文本
&“已扩展”…但是,我不能使用
CEND序列。如果我需要使用CEND,我必须从
使用连接CDATA节的括号或大于号。
]]&燃气轮机;
<;说明>;逃逸的CEND示例</说明>;
<;!--此文本包含CEND]]>--&燃气轮机;
<;!--在第一种情况下,我们将]]放在第一个CDATA块的末尾
及;在第二个CDATA块中-->;
<;数据>&书信电报;![CDATA[此文本包含CEND]]]>&书信电报;![CDATA[>;]></数据>;
<;!--在第二种情况下,我们在第一个CDATA块的末尾添加了一个“]
以及;在第二个CDATA块中-->;
<;备选方案>&书信电报;![CDATA[此文本包含CEND]]>&书信电报;![CDATA[]>;]></备选方案>;