我正在使用Pelican 3.2生成带有 RSS 提要的博客。但是,通过 W3C 的提要验证器运行 RSS 提要会引发以下错误:
guid must be a full URL, unless isPermaLink attribute is false
违规行之一是
<guid>tag:foo,2013-08-07:bar.html</guid>
Pelican 似乎使用feedgenerator,但我找不到任何相关的配置选项。
我应该如何解决这个问题?
我正在使用Pelican 3.2生成带有 RSS 提要的博客。但是,通过 W3C 的提要验证器运行 RSS 提要会引发以下错误:
guid must be a full URL, unless isPermaLink attribute is false
违规行之一是
<guid>tag:foo,2013-08-07:bar.html</guid>
Pelican 似乎使用feedgenerator,但我找不到任何相关的配置选项。
我应该如何解决这个问题?
我相信解决方案是修改feedgenerator,改变:
handler.addQuickElement("guid", item['unique_id'])
...至:
handler.addQuickElement('guid isPermaLink="false"', item['unique_id'])
RSS 已经有一个link
属性;feedgenerator
当前假定unique_id
是一个 URL,不应该这样做。我怀疑这是解决问题的最佳方法。
我认为贾斯汀·梅耶尔的回答是试图做正确的事,但并不完全正确。至少,使用 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 。