2

我正在使用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,但我找不到任何相关的配置选项。

我应该如何解决这个问题?

4

2 回答 2

1

我相信解决方案是修改feedgenerator,改变:

handler.addQuickElement("guid", item['unique_id'])

...至:

handler.addQuickElement('guid isPermaLink="false"', item['unique_id'])

RSS 已经有一个link属性;feedgenerator当前假定unique_id是一个 URL,不应该这样做。我怀疑这是解决问题的最佳方法。

于 2013-08-08T14:24:10.937 回答
1

我认为贾斯汀·梅耶尔的回答是试图做正确的事,但并不完全正确。至少,使用 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 。

于 2015-11-01T23:28:44.473 回答