Hugo模板中的CDATA

Xin LI 2021-02-15 12:33

liuf提醒,我之前做的 Atom feed 没有输出全文,检查了一下发现自己写的 Atom 模板有点问题。

参考了一下之前 Movable Type 输出的 Atom feed,发现它的content会套一层<![CDATA[ ... ]]>,大致浏览了一下RFC 4287, 似乎这么做的理由是RFC 4287 4.1.3.3中关于 HTML 编码的要求,套一层 CDATA 比较省事。

于是接下来的问题是如何让 Hugo 输出文字的<![CDATA[这样的文字而不是把其中的<转换成&lt;。此处可以使用safeHTML来把这些文字标记为原样输出,具体到输出 Atom feed 的<content>元素,可以用下面的写法:

<content type="html" xml:base="{{ "/" | absLangURL }}">{{ "<![CDATA[" | safeHTML }}{{ .Content }}{{ "]]>" | safeHTML }}</content>

修改模板后,检查并确认生成的 XML 依然是 well-formed 即可。

[返回] [原文链接]