0

xml エンコードされた不正な形式の html を含む入力 xml ドキュメントがあります。つまり、xml ドキュメント自体は技術的に有効です。

現在、整形式の xhtml5 を出力するが不正な形式の html を含む xml に xsl 変換を適用しています。

悪い html の例:

  • html フラグメント内の html、head、および body タグ。
  • フォントタグ
  • 引用符の不一致
  • 閉じられていないタグ
  • 一致する開始タグがない追加の終了タグ
  • タグを間違った順序で閉じる (例: <b><u>text</b></u>)

現在、私の状況では、html の形式が正しくないことは実際には気にしません。その間に何があるかに関係なく、終了タグが開始タグと一致することだけを気にします。

だから私の質問は - どちらかへの最良の方法は何ですか

  1. 他のタグに影響を与えないように html を十分にクリーンアップします (できれば変換自体から)。
  2. または、何らかの形で closetag をマークして、html5 互換のブラウザーが特定の open タグに一致するものとして認識できるようにします。

for 2. まったくアイデアがありません。tidy のような外部ツールを呼び出したり、.NET sgml パーサーを使用したりするなど、1. についていくつかのアイデアがあります。

msxsl:script望ましくない場合は、.NET xsl スクリプト ( ) を使用できます。

ソースの例:

<xml>
  &lt;b&gt;&lt;u&gt;bad html&lt;/b&gt;&lt;/u&gt;
<xml>

出力例:

<div id="MyDiv">
  <b><u>bad html</b></u>
</div> <!-- this /div absolutly must match the opening div regardless of what might be in the bad html -->

他にどのようなアプローチが利用できますか?

C#、VS2012、xslt 1.0 のみ

4

2 に答える 2

1

サードパーティのライブラリの使用は許容されますか? HTML Agility Pack ( NuGet で入手可能) は、無効な HTML を解決する方法の一部になっている可能性があり、(Web サイトによると) XSLT もサポートしています。

于 2013-09-18T13:59:01.193 に答える