1

<BR>VB.NETで文字列""を取得し、XSLTを介してHTMLに変換しようとしています。ただし、HTMLが出てくると、次のようになります。

&lt;BR&gt;

私はそれが先に進んでそれをレンダリングしようとしていると仮定することしかできません。それら&lt;/&gt;を角かっこに戻して、目的の改行を取得する方法はありますか?

4

5 に答える 5

5

XSLTに次のものがあることを確認してください。

<xsl:output method="html"/>

編集:コメントからの説明

デフォルトでは、XSLTはXML(1)として出力します。これは、重要な文字をエスケープすることを意味します。特定のインスタンスで属性(ここでdisable-output-escaping="yes"はイントロ)を使用してこれをオーバーライドできますが、はるかに強力なのは、出力をHTMLの明示的な値に変更することです。これにより、次のように、グローバルに同じ利点が得られます。

  • スクリプト要素とスタイル要素の場合、エスケープ文字(&や>など)を実際の値(それぞれ&や>)に置き換えます。
  • 属性については、出現するすべての>を>に置き換えます。
  • タグやスラッシュを閉じずに、、、<br>など<img>の空の要素を書き込みます。<input>
  • チェックや選択など、値ではなく存在によって情報を伝達する属性を最小化された形式で記述します。

主題をカバーする堅実なIBMの記事から、stylusstudioからのより最近の報道はここにあります

HTML出力が必要なものである場合、HTML出力を指定する必要があります。

(1)実際には出力がデフォルトでHTMLになるというコーナーケースがありますが、それが普遍的であるとは思わず、それに依存するのはちょっと鈍いです。

于 2009-01-13T14:59:17.993 に答える
0

で巻いてみる<xsl:text disable-output-escaping="yes">&lt;br&gt;</xsl:text>

于 2009-01-13T15:08:38.847 に答える
0

XSLTについてはわかりませんが..

回避策の 1 つは、System.Web 名前空間のHttpUtility.HtmlDecodeを使用することです。

using System;
using System.Web;

class Program
{
    static void Main()
    {
        Console.WriteLine(HttpUtility.HtmlDecode("&lt;br&gt;"));
        Console.ReadKey();
    }
}

...

于 2009-01-13T15:11:57.903 に答える
0

とった!選択した回答に加えて、文字列に対して次のようなことも行いました。

htmlString = htmlString.Replace("&lt;","<")
htmlString = htmlString.Replace("&gt;",">")

<pre>しかし、最終的には、タグを使用してすべてを保存することになるかもしれないと思います。

于 2009-01-14T14:06:44.820 に答える
-1

文字列" <br>"はすでにHTMLであるため、Response.Write("<br>")

しかし、あなたはXSLTを意味しているので、いくつかの変換が行われていると思います。その場合、トランスフォームはノードとして正しい場所に挿入する必要があります。より良い質問はより良い答えを得る可能性があります

于 2009-01-13T15:02:38.593 に答える