xml エンコードされた不正な形式の html を含む入力 xml ドキュメントがあります。つまり、xml ドキュメント自体は技術的に有効です。
現在、整形式の xhtml5 を出力するが不正な形式の html を含む xml に xsl 変換を適用しています。
悪い html の例:
- html フラグメント内の html、head、および body タグ。
- フォントタグ
- 引用符の不一致
- 閉じられていないタグ
- 一致する開始タグがない追加の終了タグ
- タグを間違った順序で閉じる (例:
<b><u>text</b></u>
)
現在、私の状況では、html の形式が正しくないことは実際には気にしません。その間に何があるかに関係なく、終了タグが開始タグと一致することだけを気にします。
だから私の質問は - どちらかへの最良の方法は何ですか
- 他のタグに影響を与えないように html を十分にクリーンアップします (できれば変換自体から)。
- または、何らかの形で closetag をマークして、html5 互換のブラウザーが特定の open タグに一致するものとして認識できるようにします。
for 2. まったくアイデアがありません。tidy のような外部ツールを呼び出したり、.NET sgml パーサーを使用したりするなど、1. についていくつかのアイデアがあります。
msxsl:script
望ましくない場合は、.NET xsl スクリプト ( ) を使用できます。
ソースの例:
<xml>
<b><u>bad html</b></u>
<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 のみ