0

私の問題に関して約 100 万の質問があり、ほとんどの回答を運なく実装しました。

Web ブラウザー コントロールを含む C# アプリを作成しています。フォームの読み込み時に、webbrowser コントロールは次の XML を読み込みます。この XML は、その下にある XSL を使用してスタイル設定されています。

XML:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="messages.xsl"?>
<messages>
  <message>
    <date>25/07/2013</date>
    <time>11:41:07</time>
    <locations>Everyone</locations>
    <title>Test message 1</title>
    <body>&amp;lt;P&amp;gt;This is a test message.&amp;lt;/P&amp;gt;&amp;lt;P&amp;gt;&amp;amp;nbsp;&amp;lt;/P&amp;gt;&amp;lt;P&amp;gt;Test!&amp;lt;/P&amp;gt;</body>
    <publisher>Test</publisher>
  </message>
  <message>
    <date>29/07/2013</date>
    <time>11:20:10</time>
    <locations>Everyone</locations>
    <title>Another test message</title>
    <body>&amp;lt;P&amp;gt;This is another test message.&amp;lt;/P&amp;gt;&amp;lt;P&amp;gt;&amp;amp;nbsp;&amp;lt;/P&amp;gt;&amp;lt;P&amp;gt;blah blah&amp;lt;b&amp;gt;blah blah &amp;lt;/b&amp;gt;blah blah.&amp;lt;/P&amp;gt;</body>
    <publisher>Test</publisher>
  </message>
</messages>

XSL:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="UTF-8"/>
<xsl:template match="/">
<xsl:text disable-output-escaping='yes'>&lt;!DOCTYPE html&gt;</xsl:text>
    <html>
        <head>
            <style>
                div#message {
                    margin-bottom: 5px;
                    border: 0px solid black;
                }
                div#header {
                    /*background-color: #98AFC7;*/
                    margin-bottom: 2px;
                }
                div.headline {
                    font-size: 20px;
                    font-family: Verdana;
                    cursor: hand;
                }
                div.headline:hover {
                    font-size: 20px;
                    font-family: Verdana;
                    color: orange;
                    cursor: hand;
                }
                div#tagline {
                    font-size: 9px;
                    font-family: Verdana;
                }
                div.main {
                    font-size: 12px;
                    font-family: Verdana;
                    background-color: #C3D9FF;
                    margin-top: 0px;
                    padding-bottom: 2px;
                    margin-bottom: 0px;
                }
                div#tags {
                    margin-top: 10px;
                }
                div#footer {

                }
                div#hr {
                    background-color: #4095EF;
                    height: 2px;
                    padding: 0px;
                    margin: 0px;
                }
            </style>
            <script language="javascript" type="text/javascript" src="jquery-1.10.2.min.js"></script>
            <script language="javascript" type="text/javascript">
                function toggleBody(id) {
                    $("#main_" + id + "").toggle();
                }

                $(document).ready(function() {
                    $(".main").hide();



                });
            </script>
        </head>
        <body>
            <div id="messages">
                <xsl:for-each select="messages/message">
                <xsl:variable name="i" select="position()"/>
                    <div id="message">
                        <div id="header">
                            <div id="{$i}" class="headline"><xsl:attribute name="onClick">javascript:toggleBody(this.id)</xsl:attribute>
                                <xsl:value-of select="title" disable-output-escaping="yes"/>
                            </div>
                            <div id="tagline">
                                Published on <xsl:value-of select="date"/> at <xsl:value-of select="time"/> by <xsl:value-of select="publisher"/>.
                            </div>
                        </div>
                        <div id="main_{$i}" class="main">
                            <div id="body">
                                <xsl:value-of select="body" disable-output-escaping="yes"/>
                            </div>
                            <div id="tags">
                                Tags: <xsl:value-of select="locations" />
                            </div>
                        </div>
                        <div id="footer">
                            <div id="hr">
                            </div>
                        </div>
                    </div>
                </xsl:for-each>
            </div>
        </body>
    </html>
</xsl:template>
</xsl:stylesheet>

残念ながら、レンダリングされた HTML は次のように表示されます。

<P>This is a test message.</P><P>&nbsp;</P><P>Test!</P>

<P>This is another test message.</P><P>&nbsp;</P><P>blah blah<b>blah blah </b>blah blah.</P>

HTML タグを適切にレンダリングするにはどうすればよいですか?

copy-of と disable-output-escaping="yes" を使用してみましたが、成功しませんでした。出力を HTML に変更してテンプレートを追加しようとしましたが、やはり満足できません。

誰でも助けることができます。

前もって感謝します。

4

1 に答える 1

0

さて、あなたは入力を制御しますか?<P>This is a message.</P> のような形式が必要です (これは次のようにマークアップします:

<body><![CDATA[<P>This is a message.</P>]]></body>) 

次に、本体の文字列値を次のようにします。

<P>This is a message.</P> 

disable-output-escaping を使用するとP、結果に要素が構築されます。あなたが持っている二重エスケープでは、 &lt;P&gt; は期待できません。要素を作成します。

于 2014-07-02T20:04:51.263 に答える