以HTML格式呈现并提交给服务器的数据,进行一些预处理。
它使用“img”标签的“src”属性进行操作。
预处理和保存后,所有预处理的“img”标签都不会自动关闭。
例如,如果“img”标记如下:
<img src="image.png" />
用Nokogiri或Hpricot预处理后,它将是:
<img src="/preprocessed_path/image.png">
代码非常简单:
doc = Hpricot(self.content)
doc.search("img").each do |tag|
preprocess tag
end
self.content = doc.to_html
对于Nokorigi来说,它看起来是一样的。
如何解决此问题?
更新1
忘记提及 - 我有HTML 5页面,我正在尝试使用W3C Validator进行验证。
当“img”标签位于div内时,它会抱怨以下内容:
required character (found d) (expected i)
</div>
例如,尝试验证以下代码:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8" />
</head>
<body>
<div>
<img src="image.png">
</div>
</body>
</html>
你会得到同样的错误:
Line 9, Column 4: required character (found d) (expected i)
</div>
答案 0 :(得分:3)
我认为问题在于你的<html>
,它将xmlns属性视为XHTML。这似乎与它不是XHTML文档的事实相矛盾。如果删除此xmlns属性,则该属性应该有效。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>something here</title>
</head>
<body>
<div>
<img src="image.png">
</div>
</body>
</html>
答案 1 :(得分:2)
问题是您的库生成了正确的HTML,并且HTML中的尾部“/”不正确。除非你正在提供application / xhtml + xml,否则根本没有任何意义 - 所有版本的HTML中的IMG标签都是自动关闭的,而“/”则没有意义。如果您 提供application / xhtml + xml,我认为您需要明确使用Nokogiri的to_xhtml
。
答案 2 :(得分:0)
在您委派的预处理功能中,您是否无法控制每个img标签?你能不能返回它已经返回的内容并添加一个明确的关闭标记?