(これは数日前に発生した問題のフォローアップです。JTidy は 300k の HTML ドキュメント内で 3 つのエラーを報告していましたが、どこで報告していませんでした。問題を少し掘り下げた後、エラーの原因と思われるものを見つけました。私はその理由について強い疑いを持っていますが、それについてどうするかはまだ決めていません.)
以下は、JTidy がエラーを報告する小さなスタンドアロン HTML 式です。
<html>
<body>
Some text.
<script type="text/javascript">
var foo = "Press <u>ESC</u> to continue";
</script>
</body>
</html>
Javascript 文字列定数には HTML タグが含まれており、これらは一貫して JTidy をオフにします。下線要素を削除すると、JTidy は完全に解析を終了します。より正確には、JTidy のパーサーは終了タグでエラーを報告します。開始タグは問題ありません (出力は多少間違っている可能性がありますが、後の目的には十分でした)。文字列をコメントアウトしても、エラーが報告されます。
// Any closing tags here at all will <b>throw JTidy off</b>.
上記は有効な HTML であると言っても過言ではありません。しかし、それについて何をすべきかについてのドキュメントが見つかりません。調べてみると、これは tidy-html5 で修正されていることがわかりました。Java ポートである JTidy でのみ壊れているようです。
もう少し検索すると、SourceForge ページによると、最新の JTidy を使用していることがわかりました。バージョン r938 は、私の Maven リポジトリにあるバージョンです。(実際には、この問題をデバッグできるように、ソースはサンドボックスに解凍されています。) 上でリンクしたバグ レポートは 2015 年のものです。JTidy r938 は 2009 年に登場しました。
JTidyがこれを間違って処理していると信じているのは正しいですか? もしそうなら、私はそれを修正しようとするべきですか、それともいくつかのプライベートブランチで対処されていますか? 私は自分自身をパーサー/レクサーの専門家とは呼びませんが、必要に応じて混乱することはできます。