2013-12-13 3 views
4

나는 을 실행하기 위해 에 Jekyll을 사용하고 있습니다.지킬에서 유효하지 않은 XML 엔티티 참조

Jekyll (세미 -) 무작위로 잘못 XML이 XML 특수 문자를 &tt;으로 이스케이프하는 것처럼 보입니다. 한 곳이

</p> 
<p&tt; 

이되고 있지만

</p> 
<p> 

을 했어야 에서 the RSS feed의 현재 버전이 소스 XML

</p> 
<p> 

에 예를 들어

,

&tt;입니다. 유효하지 않은 XML 엔티티 참조이므로 일부 XML 파서는 이에 대해 질식하고 계속 진행하기를 거절합니다.

처음에 나는 소스의 해당 위치에서 보이지 않는 잘못된 문자를 의심했지만, 내가 알 수있는 한, 이것은 사실이 아닙니다. 더 중요한 것은이 동작이 일관성이없는 것 같습니다 :

RSS 피드에는 현재 7 가지 오류가 있으며 그 중 첫 번째 오류가 있습니다. 그러나 현재 Atom feed에는 5 개의 오류 만 있고 은 같은 위치에 있지 않습니다.. 영향을받는 태그는 <p>뿐 아니라 다른 태그도 있습니다 (예 : <ul> 태그는 &lt;ul&gt;으로 이스케이프되어야하지만 한 위치는 &tt;ul&gt;으로 이스케이프 처리됨). 내가

지킬를 실행 또한

, 나는 여전히하지만 같은 장소에서, 오류의 같은 유형를 참조 내 로컬 컴퓨터에

-w 역할을한다.

는 HTML이 XML은 다음과 같이 이스케이프 :

{{ post.content | xml_escape }} 

왜 이런 일이 않습니다, 나는 그것에 대해 무엇을 할 수?

+0

[Jekyll :: Filters # xml_escape] (https://github.com/jekyll/jekyll/blob/master/lib/jekyll/filters.rb#L85)의 버그, [CGI :: escapeHTML ("string")] (http://rdoc.sourceforge.net/rd/doc/classes/CGI.html). –

답변

2

xml_escape의 경우에만 CGI::escapeHTML으로 전화를 걸면 특정 문자가 해당 문자로 바뀝니다. Jekyll에 버그가있는 경우 이는 Ruby의 CGI 모듈 버전에 존재하기 때문입니다.