質問

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

&lt;BR&gt;

先に進んでレンダリングしようとすることしか想定できません。これらの&lt;/&gt;をブラケットに戻すことができる方法はありますか?

役に立ちましたか?

解決

XSLTが持っていることを確認します:

<xsl:output method="html"/>

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

デフォルトでは、XSLTはXML(1)として出力します。これは、重要な文字をエスケープすることを意味します。特定のインスタンスでは、属性disable-output-escaping="yes"(intro こちら)しかし、はるかに強力なのは、出力をHTMLの明示的な値に変更することです。これは、次のように、グローバルに同じメリットをもたらします。

  
      
  • スクリプト要素とスタイル要素については、エスケープされた文字(たとえば   <!> amp;および<!> gt;)実際の値   (それぞれ<!> amp;および<!> gt;)。
  •   
  • 属性については、出現する<!> gtを置き換えます。 <!> gt;で。
  •   
  • <br><img><input>などの空の要素を書き込みます。   終了タグまたはスラッシュ。
  •   
  • 次のように存在によって情報を伝える属性を記述します   次のような価値に反する   チェックされ、選択され、最小化されている   フォーム。
  •   

堅実なIBM 記事から件名、stylusstudioの最新記事こちら

HTML出力が望ましい場合、HTML出力を指定する必要があります。

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

他のヒント

<xsl:text disable-output-escaping="yes">&lt;br&gt;</xsl:text>

でラップしてみてください

XSLTについては知らないが..

1つの回避策は、 HttpUtility.HtmlDecode System.Web名前空間から。

using System;
using System.Web;

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

...

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

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

ただし、最終的には、すべてを保持するために<pre>タグを使用することになります。

文字列<!> quot; <br> <!> quot;は既にHTMLであるため、Response.Write("<br>")を実行できます。

しかし、あなたはXSLTを意味しているので、そこで何らかの変換が行われていることを想像します。その場合、トランスフォームはノードとして正しい場所に挿入する必要があります。より良い質問であれば、より良い答えが得られるでしょう

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top