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

标签 c# .net 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>

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

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

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

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

编辑:从 WebBrowser 控件添加“查看源代码”的内容。 我所追求的是“This is a method”之后的新行,等等。 浏览器只是将其显示在一行中。

<?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>

最佳答案

您可能正在寻找 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" />

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

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

关于c# - XSLT 格式代码文档 (xml) 中的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11191789/

相关文章:

c# - 与日期列表进行比较

c# - 当上下文中不存在 where/select 时,在包含 Include 的查询中使用 where/select ?相关表上的Where 是否需要包含?

c# - 在 .net 核心中获取执行程序集名称

java - JAXB 和复合模式

java - 无法通过简单的示例让 JAXB 处理接口(interface)

c# - 我怎样才能得到删除文件的用户?

c# - 如何自定义 Lucene.NET 以搜索不区分大小写的带符号的单词(例如 "C#"或 ".net")?

.net - 如何继承WPF风格的Button行为?

.net - 如何获取 COM 对象的类型

java - 线性布局发现意外的命名空间前缀 "xmlns"