需要理解 - 为什么CDATA部分被视为<! - [CDATA [和]] - >?

时间:2013-07-15 14:42:39

标签: xpath

我正在阅读一本教科书来学习 XPath 。我从那本书中找到了下面这一行:

  

XPath如何处理XML CDATA部分中的文本? CDATA部分中的每个字符都被视为字符数据。换句话说,CDATA部分被视为已移除<![CDATA[]]>,并且每次出现的标记(如<&)都被相应的字符实体替换为&lt;&amp;

但是这本书没有给出任何解释上述句子的例子。任何人都可以帮助我理解作者试图在下面说的内容:

  

CDATA部分被视为已移除<![CDATA[]]>,并且每次出现的标记(如<&)都被相应的字符替换&lt;&amp;等实体。

1 个答案:

答案 0 :(得分:3)

我反过来想到了这一点 - <![CDATA[和下一个]]>之间的所有内容都被视为文本,并且不受实体引用的常规解码限制,<标志不会引入元素名称。所以

<something><![CDATA[<foo>text&more</foo>]]></something>

相同
<something>&lt;foo>text&amp;more&lt;/foo></something>

,而

<something><foo>text&more</foo></something>

不是格式良好的XML(因为&被视为实体引用的开头,但是没有相应的;来结束它。)