有没有办法逃避xml中的CDATA结束令牌?
我想知道是否有任何方式逃避CDATA结束令牌(]]>)在xml文档中的CDATA部分。或者,更一般地,如果有一些转义序列在CDATA内使用(但如果它存在,我想它可能只有意义,以逃避开始或结束令牌,反正)。
基本上,你可以有一个开始或结束令牌嵌入在CDATA中,并告诉解析器不要解释它,而是将其视为只是另一个字符序列。 也许,你应该重构你的xml结构或你的代码,如果你发现自己试图这样做,但即使我一直在使用xml每天在过去3年左右,我从来没有这个问题,我想知道是否可能。只是出于好奇。 编辑: 除了使用html编码…
显然,这个问题纯粹是学术性的。幸运的是,它有一个非常确定的答案。
您不能转义CDATA结束序列。 XML specification的生成规则20非常清楚: [20] CData ::= (Char* - (Char* ']]>' Char*)) 编辑:这个产品规则从字面上意味着“一个CData节可以包含任何你想要的序列’]]>>’。没有例外。 编辑2:same section也读作:
换句话说,不可能使用实体引用,标记或任何其他形式的解释语法。 CDATA段内唯一解析的文本是]]>,并终止该段。 因此,不可能逃脱]]>在CDATA部分。 编辑3:same section也读取:
然后可能存在可能出现字符数据的CDATA段,包括单个CDATA段的多个相邻CDATA段。这允许它可以将]]>令牌并将其两个部分放在相邻的CDATA段中。 例如: <![CDATA[Certain tokens like ]]> can be difficult and <invalid>]]> 应写为 <![CDATA[Certain tokens like ]]]]><![CDATA[> can be difficult and <valid>]]> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |