3

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

ノコリギも同じように見えます。

この問題を解決するには?


更新 1

言及するのを忘れてください - 私はW3C Validatorで検証しようとしている HTML 5 ページを持っています。

「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>
4

2 に答える 2

4

問題は、属性を として<html>宣言するタグにあると思います。これは、XHTML 文書ではないという事実と矛盾するように思えます。この XMLNS 属性を削除すると、有効になるはずです。XMLNS"XHTML"

<!DOCTYPE html>
<html>
  <head>
  <meta charset="utf-8" />
  <title>something here</title>
</head>
<body>
  <div>
    <img src="image.png">
  </div>
</body>
</html>
于 2010-11-19T01:23:21.007 に答える
2

問題は、ライブラリが正しい HTML を生成し、末尾の "/" が HTML で正しくないことです。

あなたがサービスを提供していない限りapplication/xhtml+xml、そこに持っていても意味がありません. IMG タグは HTML のすべてのバージョンで自己終了し、「/」は無意味です。

奉仕している場合application/xhtml+xml、のこぎりの を明示的に使用する必要があると思いますto_xhtml

于 2010-11-18T23:48:54.940 に答える