1

この質問にタグを付ける方法がわかりません。LaTeXMLpost によって変換される XHTML ドキュメントのデータベースがあります。ただし、検証の問題があると言っても過言ではありません。それらをブラウザ内に表示する必要があります。ただし、無効なマークアップによるタグの自動終了により、構造が台無しになります。

最小限の例:

<!doctype html>
<html>
  <head>
    <title>test</title>
  </head>
  <body>
    <div id="content" style="background-color:pink">
      <!-- yield -->

      <section >
        <ul>
          <li>
            <div>
              <p>
                First
                <li>
                  <div>
                    <p>
                      Second
                    </p>
                  </div>
                </li>
              </p>
            </div>
          </li>
        </ul>
      </section>
      <section>
        Next
      </section>

      <!-- end yield -->
    </div><!-- end content -->
  </body>
</html>

jsfiddle

コメントの外側はすべてレイアウトです。その中には、ロードされたドキュメントがあります。物事を額面どおりに受け取るなら、すべてがピンク色であるべきですよね?

問題は、「次へ」が の外部で起動されること#contentです。これは有効な XML ですが、HTML/XHTML DTD (または HTML5 で DTD に通用するもの) に準拠していないため、混乱してしまいます。

問題は、レイアウト内の無効なマークアップからレイアウトを保護するにはどうすればよいかということです。コンテンツを正規化するために何かを行うことはできますか? 表示する前に Nokogiri にロードしていますが、とにかくこの混乱に陥ります (XML は不正な形式ではないため、Nokogiri はそれについて何もしないと思います)。

うまく表示されているかどうかは気にしませんが、今は安全に格納されていることだけを気にしています (そうしないと、操作、イベントの添付、スタイリング、その他ほとんどすべてに問題があります)。

4

1 に答える 1

0

無効なマークアップを修正する機能が組み込まれている Nokogiri を試すことができます。

関連質問 :無効な HTML を Nokogiri で修復する (無効なタグの削除)

于 2013-03-04T12:54:25.490 に答える