我正在使用Pelican 3.2生成一个包含RSS Feed的博客。但是,通过W3C的Feed验证程序运行RSS提要会引发以下错误:
guid must be a full URL, unless isPermaLink attribute is false
其中一条违规行
<guid>tag:foo,2013-08-07:bar.html</guid>
Pelican似乎使用feedgenerator,但我找不到任何相关的配置选项。
我该如何解决这个问题?
答案 0 :(得分:1)
我认为解决方案是修改feedgenerator,更改:
handler.addQuickElement("guid", item['unique_id'])
...为:
handler.addQuickElement('guid isPermaLink="false"', item['unique_id'])
RSS已经有link
属性; feedgenerator
目前假定unique_id
是一个网址,不应该这样做。我怀疑这是解决问题的最佳方法。
答案 1 :(得分:1)
我认为Justin Mayer的答案是试图做正确的事情,但并不是很正确。至少,使用Pelican 3.6.3和feedgenerator 1.7,该修复产生了非格式良好的XML:
<guid isPermaLink="false"> ... </guid isPermaLink="false">
相反,我更改了同一行
handler.addQuickElement("guid", item['unique_id'])
(在feedgenerator.py的第283行,在版本1.7中):
handler.addQuickElement('guid', item['unique_id'],
attrs={"isPermaLink": "false"})
这将Pelican为我生成的无效RSS转换为在http://validator.w3.org/feed/check.cgi正确验证的RSS。