使用CDATA验证RSS源的问题?

时间:2011-09-01 15:45:37

标签: rss standards-compliance

我需要为我的网站制作RSS Feed。问题是内容已导入并包含内联样式和其他标记。我看过各种各样的方法,但我不能把它全部删除,有些方法会阻止我的提交验证。

一项似乎有用的工作是:

    <![CDATA[ <description>My Content here </description> ]]> 

从我读过的内容中,这可以阻止内容被xml解析,这就是为什么它验证正常。我看了几个读者,看起来很好,但是这种方法有风险/不足吗?我真的不明白其含义所以我很欣赏任何有关我可以进行的测试的建议或信息。

谢谢

1 个答案:

答案 0 :(得分:3)

这是一种非常合理的方法,但你应该注意到你应该使用它:

<description><![CDATA[My Content here]]></description>  

......而不是:

<![CDATA[ <description>My Content here </description> ]]> 

...因为<description>元素是RSS规范的一部分,所以应该正确地存在于RSS中,而不是作为文本进行转义。

如果您要在titledescription中添加非RSS内容(通常是HTML),特别是如果它是用户生成的内容,可能包含各种标记或无效标记,将整个内容标记为像这样的字符数据绝对是最佳选择。

RSS阅读器通常期望并愉快地处理在description元素中存储为CDATA的HTML,而他们使用的XML解析器(以及解析RSS的任何其他内容)可能对格式错误的XML非常敏感。通过在<文本中包含HTML标记,意外实体或甚至只有一个“<description>”而不进行转义来创建。

使用XML库提供的任何方法将内容作为CDATA插入,而不是仅使用<![CDATA[]]>手动包装内容;那样的所有想法(如果内容包括]]>会发生什么?)将为你完成。