You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用XSLT将XML转HTML时空格显示为异常字符的解决方法

XML转HTML时非断行空格显示异常的解决方法

问题场景

我用VB.NET编写了代码,通过XSLT样式表将XML文件转换为HTML文件,VB.NET代码如下:

Dim xslt As New XslCompiledTransform(True)
xslt.Load(stylesheet)
Dim HTMLoutputFile As String = TempDirectory + "test.html"
If File.Exists(HTMLoutputFile) Then
    File.Delete(HTMLoutputFile)
End If
Dim outputStream As New FileStream(HTMLoutputFile, FileMode.Append)
xslt.Transform(XMLoutputFile, Nothing, outputStream)
outputStream.Close()

在XSLT中我使用 插入非断行空格,但生成的HTML中该字符显示为带问号的黑钻石异常符号,尝试改用 后问题依旧。以下是XSLT的部分代码:

<span class="Normal">   
        <xsl:for-each select="//reasons/Addendum">
            <b>Addendum Note</b>&#160;(<xsl:value-of select="sectionEnctInfo/NoteCreator"/>;
            <xsl:value-of select="sectionEnctInfo/datetimeStamp"/>)<br/>
            <xsl:call-template name="multilineNote">
                <xsl:with-param name="theNoteItemNode" select="noteItem"/>
            </xsl:call-template>
            <xsl:if test="noteItem/imageNoteFile != ''">            
                <br/><img src="{noteItem/imageNoteFile}"></img><br/>
            </xsl:if>
            <br/>
        </xsl:for-each>
    </span>

解决方法

  • 直接使用非断行空格字符:在XSLT代码中直接输入非断行空格(可通过按住Alt键输入数字0160生成),替代实体引用&#160;或&#xA0;。
  • 统一编码配置:
    1. 将XSLT文件保存为UTF-8编码。
    2. 修改VB.NET代码,使用XmlTextWriter指定UTF-8编码输出HTML,避免系统默认编码导致字符乱码,代码修改如下:
Dim xslt As New XslCompiledTransform(True)
xslt.Load(stylesheet)
Dim HTMLoutputFile As String = TempDirectory + "test.html"
If File.Exists(HTMLoutputFile) Then
    File.Delete(HTMLoutputFile)
End If
Using writer As New XmlTextWriter(HTMLoutputFile, Encoding.UTF8)
    xslt.Transform(XMLoutputFile, writer)
End Using
  • XSLT显式设置输出编码:在XSLT的根节点下添加<xsl:output>节点,明确指定输出格式和编码:
<xsl:output method="html" encoding="UTF-8" indent="yes"/>

内容的提问来源于stack exchange,提问作者Peter Sun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 11:53:09