以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>
我认为问题出在您的<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>
问题是您的库正在生成正确的HTML,而尾部的“ /”在HTML中不正确。
除非您正在提供application/xhtml+xml
,否则根本没有意义。 IMG标签在所有版本的HTML中都是自动关闭的,“ /”是没有意义的。
如果您are服务application/xhtml+xml
,我认为您需要明确使用Nokogiri的to_xhtml
。
在您要委托的预处理功能中,您是否无法控制每个img
标签?您是否不能返回已经返回的内容并附加一个显式的</img>
关闭标签?