XSLT格式代码文档中的换行符(xml)

lys*_*cid 5 .net c# xml xslt

我们的基于WinForms的应用程序获取由Visual Studio生成的文档文件(Xml文档),执行一些XSLT转换并将结果显示在表单内的WebBrowser控件中.

问题是,我们似乎无法显示换行符,例如xml文档中的标签.

例如:

        <member name="T:Genesys.AgentLoginData">
            <summary>
            This is some test summary <br />
            New line here
            </summary>
        </member>
Run Code Online (Sandbox Code Playgroud)

与XSL转换一起使用时,摘要文本将被截断为单行.

为简化起见,转换执行此操作以选择摘要文本:

<xsl:template match="member" >
<xsl:value-of select="summary" disable-output-escaping="yes" />
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

我们如何才能正确地在我们的应用程序中的WebBrowser控件中显示新行?

编辑:从WebBrowser控件添加"查看源"的内容.我所追求的是"这是一种方法"之后的新行,依此类推.浏览器只是在一行中显示.

<?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>
Run Code Online (Sandbox Code Playgroud)

MNG*_*inn 4

您可能正在寻找xml:space="preserve"指令。请参阅http://msdn.microsoft.com/en-us/library/aa468566.aspx,获取有关如何处理 .net 堆栈上的 XSL 和空格的不错文章。

尽管我刚刚注意到您正在 Web 浏览器控件中显示生成的转换,但这可能意味着您的问题实际上与生成的 HTML 有关。尝试查看您在控件中显示的内容的源代码并将其添加到您的问题中。

查看更新的注释并进行一些猜测,我认为您的问题是您正在使用 xsl:value-of,它仅获取节点的文本,而不是 xsl:copy-of,它将获取以下文本节点以及元素<br/>。尝试替换这个:

<xsl:value-of select="summary" disable-output-escaping="yes" />
Run Code Online (Sandbox Code Playgroud)

<xsl:copy-of select="summary/node()" />
Run Code Online (Sandbox Code Playgroud)

您的另一个选择是转义,<br/>以便它作为文本而不是子节点出现,并保留禁用输出转义。