html – 来自Jekyll的无效XML实体引用

我在
GitHub Pages使用
Jekyll运行
my blog.

似乎Jekyll(半)随机错误地将XML转义为XML特殊字符& tt;.

例如,在当前版本的the RSS feed中,这个源XML

</p>
<p>

在一个地方成为

&lt;/p&gt;
&lt;p&tt;

但应该是

&lt;/p&gt;
&lt;p&gt;

&安培; TT;是一个无效的XML实体引用,因此一些XML解析器会阻塞它并拒绝继续.

起初我怀疑在源头的那个地方有一个看不见的无效字符,但据我所知,情况并非如此.更重要的是,这种行为似乎并不一致:

RSS提要目前有7个这样的错误,其中上面是第一个.但是,目前的Atom feed只有5个这样的错误,并且它们不在同一个地方.它不仅仅是< p>受影响的标签,但其他标签也是如此(例如,< ul>标签应该总是作为& lt; ul& gt;转义,但是在一个地方而不是作为& tt; ul& gt;进行转义).

而且,当我跑

jekyll serve -w

在我的本地机器上,我仍然看到相同类型的错误,但不是在同一个地方.

HTML是XML转义如下:

{{ post.content | xml_escape }}

为什么会发生这种情况,我该怎么办呢?

最佳答案 xml_escape唯一能做的就是调用
CGI::escapeHTML,它会将某些字符替换为对应的字符.如果Jekyll中存在错误,那只是因为它存在于您的Ruby的CGI模块版本中.

点赞