5

WinFormsベースのアプリケーションは、Visual Studioによって生成されたドキュメントファイル(Xmlドキュメント)を取得し、XSLT変換を実行して、フォーム内のWebBrowserコントロールに結果を表示します。

問題は、たとえばxmlドキュメントのタグの場合、改行が表示されないように見えることです。

例えば:

        <member name="T:Genesys.AgentLoginData">
            <summary>
            This is some test summary <br />
            New line here
            </summary>
        </member>

XSL変換で使用すると、要約テキストは1行に切り捨てられます。

簡単にするために、変換は要約テキストを選択するためにこれを行います。

<xsl:template match="member" >
<xsl:value-of select="summary" disable-output-escaping="yes" />
</xsl:template>

アプリケーション内のWebBrowserコントロールに新しい行を適切に表示するにはどうすればよいですか?

編集:WebBrowserコントロールから「ソースの表示」の内容を追加します。私が求めているのは、「これはメソッドです」などの後の改行です。ブラウザはそれを1行で表示するだけです。

<?xml version="1.0" encoding="utf-8"?><html xmlns="http://www.w3.org/1999/xhtml"><head><title>Action Help</title><style type="text/css">
          p  {text-indent:200px;}
          li {text-indent:180px;}
          h1 {color:navy;}
          h2 {color:blueviolet}
          h4 {color:navy;}
        </style></head><body><H2 xmlns="">AgentLogin</H2><H1 xmlns=""></H1><h3 xmlns="">
            This is a method 
            And its parameter 
            Check this out
            name</P></body></html>
4

3 に答える 3

4

あなたはおそらくxml:space="preserve"ディレクティブを探しています。.netスタックでXSLと空白を処理する方法に関する適切な記事については、http://msdn.microsoft.com/en-us/library/aa468566.aspxを参照してください。

結果の変換をWebブラウザーコントロールに表示していることに気づきましたが、これは、実際に生成されたHTMLに問題があることを意味している可能性があります。コントロールに表示しているもののソースを表示して、質問に追加してみてください。

更新されたコメントを見て、いくつか推測すると、問題は、xsl:copy-ofのテキストを取得するのではなく、ノードのテキストを取得するxsl:value-ofを使用していることだと思います。<br/>要素とともにノード。これを置き換えてみてください:

<xsl:value-of select="summary" disable-output-escaping="yes" />

<xsl:copy-of select="summary/node()" />

他のオプションは<br/>、子ノードではなくテキストとして表示されるようにエスケープし、disable-output-escapingをオンのままにすることです。

于 2012-06-25T15:09:08.740 に答える
2

との違いを学ぶ必要が<xsl:value-of>あり<xsl:copy-of>ます。

<xsl:value-of>属性式で指定された文字列値のみを出力にコピーします。selectこれは要素を除外<br/>します(したがって、出力には存在しません)。

一方、属性`<xsl:copy-of>で指定されたノードセット内のすべてのノードを結果ツリーにコピーします。select

したがって、解決策は簡単です:

置換

<xsl:template match="member" >
  <xsl:value-of select="summary" disable-output-escaping="yes" />
</xsl:template>

<xsl:template match="member" >
  <xsl:copy-of select="summary/node()"/>
</xsl:template>
于 2012-06-26T03:47:33.783 に答える
1

元のxmlの生成方法によっては、これらのタグを適切に保持するためにhtmlエンティティを使用する必要がある場合があります。

http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references

試す

    <member name="T:Genesys.AgentLoginData">
        <summary>
        This is some test summary &lt;br /&gt;
        New line here
        </summary>
    </member>
于 2012-06-25T17:49:12.597 に答える