CDATA甚至存在的原因是什么?

Tom*_*lak 11 xml xslt cdata

我经常看到人们在这里询问与XML/XSLT相关的问题,这些问题源于无法掌握CDATA如何工作(就像这一个).

我想知道 - 为什么它首先存在?如果没有它就不能没有XML,你可以放入CDATA部分的所有内容都可以表示为"本机"(XML-escaped).

我很欣赏CDATA可能会使得到的文档变得更小,但让我们面对它 - 无论如何XML都是冗长的.例如,通过压缩可以更轻松地实现小型XML文档.

对我来说,CDATA打破了标记和数据的清晰分离,因为你可以在肉眼看到标记的数据,我觉得这是件坏事.(这甚至可能是鼓励人们不充分地将字符串处理或正则表达式应用于XML的事情之一.)

那么:有什么好的理由可以使用CDATA?

jit*_*ter 11

CDATA部分只是为了方便人类作者,而不是为了程序.它们唯一的用途是让人类能够在XHTML页面中轻松包含例如SVG示例代码,而无需小心地将每个代码替换<&lt;等等.

这对我来说是预期的用途.不要使生成的文档减少几个字节,因为您可以使用<而不是&lt;.

另外再取从上面(在XHTML SVG代码)样品也很容易让我检查了XHTML文件的源代码,并不仅仅是SVG代码进行复制粘贴,而不需要再次向后替换&lt;<.

  • @svg在cdata中无视:目的:嗯,不,不是为什么?我的意思是一个讨论SVG的页面,因此必须显示样本svg-code的各个部分不显示svg.这里的cdata-sections可以很容易地包含svg代码而无需重新格式化它 (5认同)

Mad*_*han 5

PCDATA - 解析的字符数据,这意味着输入的数据将由解析器解析.

CDATA - 解析器不会解析在CDATA元素之间输入的数据.解析器将忽略CDATA部分内的文本.因此,恶意用户可以使用这些CDATA元素将销毁数据发送到应用程序.

CDATA部分以... <![CDATA[结尾]]>.

CDATA中唯一不能出现的字符串是]]>.

我们使用CDATA的唯一原因是:像Javascript代码这样的文本包含很多<和字符.为避免错误,脚本代码可以定义为CDATA,因为<单独使用会产生错误,因为解析器会将其解释为新元素的开头.类似地&,解析器可以将其解释为字符实体的开头.