要在HTML控件中显示的XML元素中的空格

本文关键字:XML 元素 空格 显示 HTML 控件 要在 | 更新日期: 2024-10-22 08:51:55

我使用的是C#3.5。我有一个XML字符串,我将它传递给XslCompiledTransform对象。然后在WebBrowser中显示输出。除了XML元素包含额外的空间,我需要在WinForms HTML浏览器中显示这些空间之外,一切都很好。我不能在html中使用任何javascript。下面是一个示例XML元素:

<myelement>Here is where           extra spaces need to be retained</myelement>

我尝试用"&nbsp;"替换字符串",但这使得XslCompiledTransform对象用于转换的xml无效(xml无效)。然后我尝试用"&amp;nbsp"替换",但文本&amp;nbsp;出现在我的html中,而不是空格。如何使多余的空格出现?

要在HTML控件中显示的XML元素中的空格

添加

xml:space="preserve"

到xsl样式表或输入文档。

以下是XSLT中空白处理的完整指南。

编辑:

要在渲染的HTML中保留空白,请在要保留空白的元素上使用css样式white-space:pre

&nbsp;是XHTML DTD中的一个实体,其实际值为字符&#xA0;

因此,您需要用&#xA0;替换每个空间

简单到:

translate(., ' ', '&#xA;')

这里有一个完整的例子

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" encoding="ascii"/>
 <xsl:template match="/*">
     <p>
       <xsl:value-of select="translate(., ' ', '&#xA0;')"/>
     </p>
 </xsl:template>
</xsl:stylesheet>

当此转换应用于所提供的XML文档时:

<myelement>Here is where           extra spaces need to be retained</myelement>

生成所需的正确结果

<p>Here&#160;is&#160;where&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;extra&#160;spaces&#160;need&#160;to&#160;be&#160;retained</p>

并且在浏览器中显示为

此处 ;是 ;其中           ;额外 ;空格 ;需要 ;至 ;是 ;保留